vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2024-07-29 02:41 pm

Не ударить ли нам по Алголу

Забавляясь с дубненским Алголом-ГДР, набрели мы со [personal profile] spamsink на ископаемый артефакт: исторически первую реализацию Алгола-60, файл x1algol.pas. Закралась крамольная мысль: не оживить ли его? Чтобы можно было ним компилировать и выполнять алгольные программы. Перенестись на 64 года назад, так сказать.

Этот Алгол был написан Эдсгером Дейкстрой и Яапом Зоннефельдом летом 1960 года для голландского компьютера Electrologica X1. За несколько месяцев крутые чуваки сбацали транслятор с Алгола-60 в машинные коды, а также рантайм библиотеку, так называемый комплекс. Работало это добро с перфолент на памяти размером 4 килослова. Уже в наше время Круземан Арец аутентичным образом переписал тот машинный код на Паскаль.

Потратив несколько дней на изучение исходников и генерируемого кода, мы с Лёней приходим к выводу, что можно соорудить для него симулятор. То есть всякую алгольную программу можно будет пропустить через транслятор и немедленно выполнить.

Ссылки:
juan_gandhi: (Default)

[personal profile] juan_gandhi 2024-07-29 10:39 pm (UTC)(link)

Это у них там нормальный полный алгол? (но не с p0042, I presume).

А то был ещё меньше размером, жиер-алгол, 1 килобайт на всё.

spamsink: (Default)

[personal profile] spamsink 2024-07-30 12:30 am (UTC)(link)
Ну конечно, неполный. Open subroutines не было - памяти на них не напасешься.

И цифровых меток не было.
Edited 2024-07-30 01:03 (UTC)
spamsink: (Default)

[personal profile] spamsink 2024-07-30 12:33 am (UTC)(link)
Мне на форуме объяснили. Элементы объектного кода - это пары (OPC, w), где для OPC >= 8 значение w несущественно, а когда w - это команда или константа, то OPC - от 0 до 3. Похоже, паскалевский вариант халявит и печатает только w для малых OPC.