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

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

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

Ссылки:

Date: 2024-07-29 22:39 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

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

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

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

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

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