yacc>> Если ты не понял, то индексно-последовательные файлы это то, что сейчас называют ISAM - Indexed Sequential Access Method - т.е. запись добавляется последовательно в конец, но есть отдельные файлы индексов. Татарин> ...которые (точнее, который) в случае ИБМ просто висели в памяти и являлись просто указателями. Татарин> А всякие деревья, которые ты сверху вешаешь, - это уже особенности реализации индексов, которые могли быть так, а могли быть этак. И да, реализация деревьев в машкодах - тоже вовсе несложно. В памяти висел только мастер-индекс для обращения к файлу.
И да, прикинь, это дерево.
Вот навскидку ассемблерный код работы с деревом, достаточно простой ... всего
триста строчек
Get link Facebook Twitter Pinterest Email Other Apps I believe every programmer must learn assembly programming. It brings the programmer and the machine closer and strengthens the bond between them. I learned the term GIGO (Garbage In Garbage Out) when I got first introduced to computer programming. Nothing has changed since. The languages and their environments have become better beyond doubt. Still, a computer and its resources are as good as its programmer.Assembly language makes you understand how the machine is working beyond all that glittery higher level languages.
// Дальше — www.thechauhan.dev
Татарин> Вот тебе объяснение на русском: Я в курсе устройства. Равно как наличия области переполнения и перестроения списка.
Которое ты собрался сделать... за
час!
Татарин> И уж, блин, присобачивать сюда BTrieve ... сравнивать MSV с нынешней ОС... LIBRARIAN с ГитХабом и визуальным отладчиком... Это твой час - с визуальным отладчиком.
У меня перманентное впечатление что я разговариваю со школотой-зумером, которому на вопрос "сколько тебе времени потребуется сделать мое фото и дать его мне" ответит "5 секунд"
И в общем-то да, СЕЙЧАС так оно и будет - ровно столько займут его действия чтобы меня сфоткать и тут же мне скинуть в мессенджер.
А вот на тот же самый вопрос уже даже в 1985 ответ был бы другой: потому что даже если предположить что у человека последний кадр в фотоаппарате, то после съемки чтобы дать его мне он должен был проявить пленку и напечатать кадр, чтобы отдать его мне. Это минимум минут 20 на пленку ( проявка, промывка, фиксаж, сушка) и минут 20 ( фокусировка увеличителя, проявка, промывка, фиксаж, глянцеватель ) на печать при условии что реактивы готовые.
Уже 40 минут - т.е. в 40 * 60 / 5 = 120 -
в сто двадцать раз медленнее !
Поэтому когда ты говоришь - "мне надо час" я уже оцениваю это как
скорострельное пижонство, которое в 99% случаев - г**нокодинг.
Т.е. человек НЕ БУДЕТ анализировать ошибки - скажем коды возврата fopen, fread, fwrite, malloc а накидает тупо код который работает только в примитивном случае.
Однако же я ожидаю оценку - СКОЛЬКО ВРЕМЕНИ ПОТРЕБУЕТСЯ
ДО РЕЛИЗА !
Т.е. со всеми юнит-тестам, обработками ошибок и документированием их, некоторыми доками и минимальным описанием, с учетом системных требований - т.е. то, что называют полноценным
релизом.
А не быстроговнокод за 5 минут, которым ты размахиваешь.
Татарин> Понимаешь, весь софт тех лет - прост и примитивен с нынешней точки зрения (разве что матрасчёты и тогда имели огромную трудо- и наукоёмкость). Татарин> То, чего ты (или там Факир) не хочешь, не можешь, не в состоянии понять: сложность того софта была относительной. Именно это как раз я и понимаю
Поэтому для меня трудоемкость - это количество строк кода + сложность алгоритмов + сложность документации если там много ветвлений по разным случаям.
Это - объективная оценка.
Относительно которой можно судить сколько человеко-часов потребуется в разных условиях, как-то: PC хотя бы с DOS и визуальным отладчиком ( например Borland TASM + TurboDebuger ) - это быстрый вариант,
или Минск-32 + лента + перфокатры + блок-схема - это совсем другой случай.
Причем там бы сами программисты напрягли бы тетку-чертежницу рисовать им всю блок-схему на нескольких листах А0 чтобы было понятно что где. А также как распределить адреса.
А "я за час сделаю" - такой вид "оценки" - это
в мусорку сразу.
И да - внезапно на С или TP написать BTrieve - это даже попроще будет. Там самые неочевидные вещи это только блокировки при многопользовательском доступе ( внезапно на 360 он тоже возможен! ), а сам движок доступа к блокам и деревьям, файлам и индексам - он как раз несложный - там и цилиндрами, томами и дорожками париться не надо - DOS FAT все возьмет на себя - пиши только алгоритмы доступа внутри файла.
Проще чем на ассемблере писать индексно-последовательные файлы.