8

Haikugo — мой язык программирования

Я разрабатываю язык программирования Haikugo. Он имеет статическую типизацию переменных, которые хранятся в соответствующих массивах. Есть int, char, string, float, double, aleph, bool. В моём языке программирования нет функций и процедур, но есть блоки, которые можно исполнять и возвращаться на изначальную точку. Сами программы циклические. Это означает, что если вы исполните последнюю строчку программы, то вернётесь на нулевую и продолжите свой путь, пока нет встретите слово owari, которое скажет интерпретатору остановиться, вернув ноль в качестве значения main-функции, которая и отвечает за присвоение командам из прочитанного файла соответствующих значений.

Вы можете объявлять переменные обычным способом, но тогда вы не сможете их видеть до объявления, но есть и возможность объявлять переменные в любой точке программы так, чтобы их было видно в любой другой точке программы. Такие "вневременные переменные" существуют всегда. На их механике основана работа блоков кода, процедур, которые могут быть исполнены когда угодно и где угодно, будучи объявленными и описанными в любой точке программы. Такая "темпоральная независимость событий" обусловлена не предвидением будущего, а повторным чтением программы, на котором сама программа проходит своё классическое исполнение и интерпретацию. В самом начале интерпретатор просто помечает, что где находится, если мы имеем дело с вневременными значениями. Это помогает писать код, как вы хотите и избежать ограничений самовыражения, однако это не подходит для коммерческой разработки и использования там, где от программы зависят жизни людей.

Этот язык имеет полноту Алана Тьюринга, позволяя реализовать любую вычислимую функцию. Это стало возможным благодаря возможности реализации на нём машины Эмиля Поста, что эквивалента машине Тьюринга, являясь даже более простым в понимании абстрактным вычислителем. В некотором роде описание интерпретатора машины Поста на интерпретируемом Haikugo можно назвать постмодернизмом, а сам этот интерпретатор — машиной Руда Голдберга, так как Haikugo позволяет наиболее простые способы манипуляции массивами, чем машина Поста (если мы представляем её бесконечную ленту в качестве массива, разумеется).

Haikugo имеет Asembler-подобный синтаксис. Почти каждая строка представима в виде: оператор — операнд-1 — операнд-2, где результат преобразований записывается в ячейку памяти операнда-1. Я планирую добавить туда работу с указателями и прямого управления памятью, чтобы иметь возможности Asembler в своём интерпретируемом языке.

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