Программирование на Athanor - 0 (вводная)

Цикл: "Программирование на Athanor": Часть 0 (Краткое введение и несложные примеры)
11 декабря 2025, четверг 13:19
trilirium для раздела Блоги

Язык Athanor: введение 

Итак, начнём с того, что Athanor – это интерпретируемый язык. Другими словами, без специальной программы (Athanor-интерпретатора; обычно Athanor.exe) выполнение программного кода на этом языке невозможно. По факту, считывая программу, интерпретатор выполняет ее псевдокомпиляцию. (Однако, в будущем возможно будет реализовать bundling, т.е. возможность распространения Athanor-программ в единой связке с интерпретатором, что дает пользователям возможность запускать их, практически как обычные двоичные приложения.)

Где его можно взять? Простейший способ – скачать прямо отсюда. Программа работоспособна в любой версии Windows, от Win XP до Win 11. Скачанный архив можно распаковать в любой каталог, никакой специальной установки не требуется. Интерпретатор может работать как в интерактивном, так и в пакетном (модульном) режиме. Если запустить программу без параметров, включится интерактивный режим. В нём приглашением к вводу инструкции служит ее порядковый номер (в квадратных скобках), начиная с [1]. Чтобы нормально завершить интерактивную сессию интерпретатора, надо ввести символ конца файла (в среде Windows – Ctrl+Z и Enter). Принудительный выход возможен и по Ctrl+С.

Если вы видите при запуске что-нибудь похожее на:

Athanor runtime
(version 0.9.0 from Jul 15 2025; 461 builtins).
(Interactive mode: ^Z to quit session.)

– значит, интерпретатор запускается и работает нормально.

Уже готовая последовательность Athanor-инструкций, записанная в файл – называется модулем. Если интерпретатору в качестве параметра передано имя файла-модуля, то он последовательно выполняет все инструкции оттуда, после чего завершается. Фактически, выполнение модуля не отличается от выполнения той же последовательности инструкций, введенной вручную. Но есть небольшие различия (наиболее существенное состоит в том, что в интерактивном режиме по умолчанию включена полная трассировка, т.е. выводится каждая инструкция и ее результат, а в модульном режиме инструкции выполняются «молча», хотя режим трассировки и может быть включен явно). В Athanor-программе отсутствует какой-либо «привилегированный» фрагмент кода (аналогичный функции main в C), который был бы главной целью выполнения.

Athanor допускает довольно свободное форматирование исходного кода. Пробелы, табуляции, концы строк и многие другие управляющие символы неразличимы (за исключением, конечно, строковых литералов). Там, где допустим пробел, допускается и любая их последовательность, или же комментарий. Им может быть любая последовательность символов (возможно, и занимающая несколько строк), ограниченная обратными кавычками. (Например, ` это – комментарий `.)

Все инструкции должны быть разделены точками с запятой ";" (в языке это – именно синтаксический разделитель, в отличие от C или Java). Это справедливо и для интерактивного режима: пока не будет введен этот символ, инструкция не считается завершенной и не будет выполняться. В одной введённой пользователем команде может быть несколько инструкций, разделённых точками с запятой (и наоборот – одна команда может занимать несколько строк). В основном, инструкции – это либо выражения (их эффект состоит в вычислении и выводе результата), либо объявления (декларации), вводящие в текущую область видимости новые функторы или классы. Понятия «выполнение» и «вычисление» в Athanor практически синонимичны: все, что может быть выполнено, всегда выдает определенный результат. Основной механизм выполнения/вычисления в языке называется функтором (по сути, большая часть выполнения любой программы – это выполнение встроенных функторов).

В модульном режиме после выполнения модуля выводится итоговая статистика (имя; общее число строк кода; выполненных инструкций; количество предупреждений и ошибок). Когда интерпретатор нормально завершает свою работу, выводится финальная информация об израсходованном времени ЦП и об интенсивности использования памяти, представляющая в основном технический интерес.

Для финальной проверки, также можно скачать по этой ссылке небольшой набор тестовых примеров. Распакуйте архив (можно в ту же папку, что и сам "athanor.exe") – и введите (например) команду "athanor.exe Factorial.awl". И, если в результате увидите:

100! = 
093 326 215 443 944 152 681 699 238 856 266 700 490 715 968 264 381 621 468 592 963 895 217 599 993 229 915 608 941 463 976 156 518 286 253 697 920 827 223 758 251 185 210 916 864 000 000 000 000 000 000 000 000 

– значит, интерпретатор работает нормально, и мы можем продолжать своё знакомство с ним.


Теги