Кстати о надлежащих практиках разработки ПО

10 views
Skip to first unread message

Leo B.

unread,
Aug 15, 2025, 8:09:59 PMAug 15
to БЭСМ-6
Как известно, в МС "Дубна" стандартный размер каталога библиотеки объектных модулей пользователя (как personal library на внешних носителях, так и temporary library на барабане) был 2 зоны (2048 слов).

Как также известно, каждый элемент каталога занимал 2 слова (имя в кодировке ТЕХТ, дескриптор). Ещё в конце каталога на внешнем носителе находилась строка текста, содержащая дату создания библиотеки и комментарий. 

Итого, как вы думаете, каково максимальное количество элементов мог содержать каталог в МС "Дубна" версии 1979 года, Мониторе-80, и в МС "Дубна" версии 1988 года? Типа 1024 минус немного; ну, скажем, 1010 или около того, да?

Пишем программу на Фортране из одной строки, которая занимает 6 элементов в каталоге:

SUBROUTINEAA$ENTRY XAA$ENTRY YAA$ENTRY ZAA$ENTRY TAA$ENTRY UAA$END

реплицируем её много раз, заменяя  все AA на AB, AC, ... AZ, BA, BB, .. BZ, и т.д. с запасом, чтобы посмотреть, при компиляции какой пары букв сломается.

Имеем: 

 МОНИТОРНАЯ СИСТЕМА Д У Б Н А  11.01.79 М3
...
 Ф О Р Т Р А Н
   /16.07.73/
                SUВRОUТINЕDL
                             ЕNТRУ ХDL
       2                               ЕNТRУ УDL
       3                                         ЕNТRУ ZDL
       4                                                   ЕNТRУ ТDL
       5                                                             ЕNТRУ UDL
                                                                               ЕND



                                      ТАБЛИЦА  ОТНОСИТЕЛЬНЫХ АДРЕСОВ

         1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19    20
 000  :00006:00006:00006:00006:00006
ПЕРЕПОЛНЕНИЕ КАТАЛОГА
ЕRRОR IN SТАNDАRТ АRRАУ

DL - это у нас 26*3 + 12, т. е. 90*6 = 540 элементов уже не поместились, а 534 ещё помещалось. Странное число - только начали использовать вторую зону, и сломались.
Ну ладно, попробуем Монитор-80, уж в нём-то должны были поправить. Для удобства поставим *NO LIST и воспользуемся Форексом, который печатает имена компилируемых подпрограмм даже в режиме *NO LIST.

Получаем:

  М О Н И Т О Р-8 0  (3.7)   25.09.84*       (  МС " Д У Б Н А " ИАЭ  )             ШИФР    419900000000
...



ПЕРЕПОЛНЕНИЕ КАТАЛОГА
ЕRRОR IN SТАNDАRТ АRRАУ

Вплоть до DC -  это 6*(26*3+3) = 486 уже не поместилось. Выходит, что Монитор-80 для удобства разработчиков вообще не использовал вторую зону каталога.

В МС "Дубна" 1988 года можно этих однострочных программ хоть укомпилироваться, но если было скомпилировано вплоть до GO или больше, то попытка потом просто просмотреть каталог с помощью *CALL TCATALOG приводит к зацикливанию, а если вплоть до EA или дальше, то *CALL TCATALOG что-то там показывает, но записать библиотеку на диск не удаётся, *TO PERSO говорит, что есть испорченные подпрограммы.

Итого успешно работают примерно 26*4*6 = 624 элементов каталога. Аж почти на 100 больше, чем в 1979 году, ну хоть что-то. А диагностика ошибок - да зачем она, всё равно в природе так никто не делает.

Я жалею, что не додумался до этого эксперимента 40 лет назад.  При использовании Фортрана-ГДР до достижения ошибки отрабатывает всего 38 млн. команд (против 57 у Форекса и 58 у Фортрана-Дубна), было бы тривиально всем показывать. 

Leo
Reply all
Reply to author
Forward
0 new messages