Содержание
В его основе лежит кольцевая структура. Код организован в виде окружностей, которые заполнены текстом и сигилами
Mystical — экспериментальный язык программирования, вдохновленный магическими символами и кругами, который напоминает смесь PostScript и ритуальной магии.
Больше новостей — в нашем тг-канале Типичный программист
Его основа — кольцевая структура, где код организован в виде окружностей, заполненных текстом и сигилами. Создатель языка решил объединить эстетику магических кругов с функциональностью программирования, сделав язык визуально насыщенным и концептуально необычным.
Основные элементы языка
Кольца (Rings)
Ключевая структура Mystical — кольца. Они могут быть трех типов:
- Исполняемые массивы — соответствуют
{ }
в PostScript, изображаются простыми кругами со звездочными символами внутри. - Неисполняемые массивы — соответствуют
[ ]
в PostScript, изображаются кругами без звезд. - Словари — соответствуют
<< >>
в PostScript, изображаются многоугольниками с двойной внешней и одинарной внутренней границами.
Примеры:
{ 0 0 currentlinewidth 1.5 mul 0 360 arc fill } -> исполняемый массив [ 0 1 2 1.5 40 360 (Hooray World) ] -> неисполняемый массив << /longname (Mystical) /w 45 /h 8 /x 23 >> -> словарь
Подмассивы и словари внутри других колец соединяются тонкими линиями, которые начинают и заканчивают свой путь в точке соединения, отмеченной специальным символом.
Текст и сигилы
На границах колец размещаются текст и сигилы — символы, заменяющие операторы, переменные или другие ключевые слова. Например:
- Имена переменных (в PostScript пишутся как
/name
) отображаются в виде треугольников. - Строки (в PostScript пишутся в скобках
()
) обрамляются в символы, напоминающие египетские картуши. - Основные операторы, такие как
dup
,add
,mul
,if
, имеют собственные символы, вдохновленные начальной буквой команды или смыслом операции.
Примеры:
/array -> треугольник с текстом "array" (array) -> картуш с текстом "array" dup -> специальный сигил для дублирования значения
Пользовательские сигилы
Разработчики могут создавать собственные сигилы для пользовательских функций и переменных, добавляя их в sigil_bank
во время выполнения программы.
Эти сигилы могут быть созданы на основе каллиграфии, геометрических форм или других визуальных элементов, что позволяет адаптировать язык под личные предпочтения.
Примеры алгоритмов
Mystical поддерживает основные алгоритмы, такие как быструю сортировку (quicksort) и алгоритм Евклида для нахождения наибольшего общего делителя (GCD). Пример реализации GCD:
{ /arg {exch def} def } { /gcd { /a exch def /b exch def b 0 eq { a } { b a b mod gcd } ifelse } def }
Проблемы и планы
На данный момент Mystical — это скорее язык для рисования программ PostScript, чем полноценная интерпретируемая платформа.
Разработчик планирует улучшить алгоритмы разметки колец, чтобы код занимал меньше места и выглядел более организованно. В будущем возможно создание интерпретатора, который сможет напрямую исполнять Mystical-программы.
Перспективы
Mystical уже привлек внимание благодаря своей уникальной концепции. Идея комбинирования эстетики магических кругов с программированием может найти применение в создании визуальных сценариев для игр, интерактивных инсталляций или обучающих проектов.