Воссоздание забытого языка

Разработчик реализовал интерпретатор языка программирования «Эллочка», созданного Гаузером Эрихом Генриховичем в Баку в период 1999–2001 годов. Оригинальная среда DIKAR v7 работала в MS-DOS и предназначалась для пользователей без специальной подготовки, позволяя выполнять как прикладные, так и научные расчеты. Поскольку исходного кода языка не существовало, для реализации проекта использовались только описания синтаксиса и документация.

Процесс разработки велся на языке Zig (версия 0.16.0-dev). Основная сложность заключалась в том, что «Эллочка» — это однопроходный интерпретатор, не требующий построения синтаксического дерева. В реализацию вошли все 62 оператора языка, включая математические функции (&SIN, &COS, &SQR), работу с массивами и специфические команды управления потоком (GOTO, ESLI, SLEP).

Роль нейросетей в разработке

Для написания кода использовалась нейросеть Claude Sonnet 4.5. Процесс не был автоматическим: автор выступал в роли архитектора и ревьюера, используя метод глубокого контекста. Чтобы преодолеть склонность модели к упрощению кода, автор составлял подробные многостраничные инструкции, собирая данные через Google AI и DeepSeek, а затем передавал их нейросети для генерации конкретных модулей.

В архитектуру проекта вошли модули для работы с переменными (включая статические строки фиксированной длины и динамические строки), лексер, парсер арифметических выражений и графический слой. Для обеспечения отзывчивости окна в Windows при выполнении блокирующих операций (например, команды WAIT) был реализован механизм насоса сообщений (pumpMessages) с использованием DIB-буфера 24bpp.

Результаты и проверка

Главным достижением стала возможность запуска оригинальных скриптов, таких как sample.ela. Несмотря на то, что в Windows невозможно реализовать полноценную консольную графику DOS, разработчик вынес графические операции в отдельное окно Win32. Для проверки корректности работы интерпретатора были написаны примеры программ, включая текстовую и графическую версии игры «Змейка».

В репозитории на GitHub опубликованы примеры программ, демонстрирующие работу с клавиатурой, экранным выводом, переменными и переходами. Это позволило подтвердить точность реализации большинства операторов, за исключением сложных математических функций, которые в оригинальной версии DOS работали иначе.