Телоран — язык программирования¶
Телоран — эзотерический язык программирования, созданный в 2004 году программистом Дэвидом Морган-Маром. Относится к классу эзотерических языков (esolang), то есть языков, разработанных не для практического применения, а ради исследования необычных вычислительных моделей, демонстрации концепций или в качестве интеллектуального упражнения. Название происходит от английского the language of temporal ordering — «язык временного упорядочивания».
¶Общая характеристика
Телоран принципиально отличается от большинства языков программирования тем, что в нём отсутствует привычное последовательное выполнение инструкций. Программа на Телоране представляет собой набор инструкций, каждая из которых снабжена меткой времени — моментом, в который она должна выполниться. Порядок исполнения определяется не порядком записи строк, а значениями этих меток.
Каждая инструкция записывается как «время — действие». Время указывается в произвольных единицах, чаще всего в виде последовательности символов, образующих упорядоченную шкалу. Интерпретатор собирает все инструкции, сортирует их по метке времени и выполняет в получившемся порядке. Если несколько инструкций имеют одинаковую метку, они выполняются в порядке появления в исходном тексте.
¶История
Дэвид Морган-Мар создал Телоран в 2004 году. Автор известен также как разработчик ряда других эзотерических языков и участник сообщества, занимающегося нестандартными вычислительными моделями. Телоран задумывался как эксперимент: что произойдёт, если убрать из языка саму идею линейной последовательности команд и заменить её явным управлением временем.
Язык не получил промышленного применения, однако приобрёл известность в сообществе энтузиастов эзотерического программирования. Он регулярно упоминается в обзорах необычных языков и используется в учебных целях для демонстрации того, что порядок вычислений может быть организован принципиально иначе, чем в мейнстримных языках.
¶Синтаксис и устройство
Программа на Телоране состоит из строк, каждая из которых содержит метку времени и следующую за ней инструкцию. Синтаксически метка отделяется от команды пробелом или иным разделителем в зависимости от реализации интерпретатора.
Основные элементы языка:
- Метки времени — символы или их последовательности, задающие порядок. Сравнение меток производится лексикографически, поэтому важно, чтобы шкала была построена корректно.
- Инструкции вывода — команды, печатающие символ или строку.
- Инструкции ввода — команды чтения данных.
- Арифметические операции — сложение, вычитание и другие действия над переменными.
- Управляющие конструкции — условные переходы и циклы, реализуемые через изменение временных меток.
- Переменные — именованные ячейки памяти.
Характерная черта языка — возможность «перепрыгивать» во времени вперёд и назад, меняя метки уже существующих инструкций. Это позволяет строить циклы и ветвления необычным способом: программа как бы переписывает собственное расписание.
¶Пример
Простейшая программа, выводящая приветствие, может выглядеть так:
`` 1 PRINT "Hello" 2 PRINT " World" ``
Здесь цифры играют роль меток времени. Интерпретатор выполнит первую строку, затем вторую, и результатом будет строка «Hello World». Если поменять метки местами, изменится и порядок вывода, хотя текст программы останется прежним.
¶Философия и значение
Телоран иллюстрирует идею, что последовательность выполнения — не обязательное свойство программы, а лишь одна из возможных моделей организации вычислений. В традиционных языках порядок задаётся расположением строк; в Телоране он вынесен в явный параметр — время. Такое разделение кода и порядка его исполнения роднит язык с некоторыми моделями параллельных и распределённых вычислений, где инструкции планируются по расписанию.
С точки зрения теории язык эквивалентен по вычислительной мощности машине Тьюринга: располагая достаточным набором инструкций и меток, на нём можно реализовать любую вычислимую функцию. Практической ценности язык не имеет, но служит наглядным примером альтернативной парадигмы.
¶Связанные концепции
Телоран часто сравнивают с другими эзотерическими языками, исследующими необычные способы управления потоком выполнения. К их числу относятся языки, где программа записывается в виде двумерной сетки, где код строится из музыкальных нот или где инструкции выполняются параллельно и недетерминированно. Общая идея таких языков — поставить под сомнение привычные допущения о том, как должна выглядеть и работать программа.
¶Критика и ограничения
Основные претензии к Телорану связаны с его непрактичностью: язык сложен для написания реальных программ, отладка затруднена из-за неочевидного порядка исполнения, а сообщество пользователей крайне мало. Отсутствие стандартизированной спецификации приводит к тому, что разные интерпретаторы могут вести себя по-разному. Тем не менее в контексте эзотерического программирования эти недостатки не считаются существенными, поскольку язык и не предназначен для решения прикладных задач.
IRONLIVE — база данных и аналитика по компаниям России.
На главную IRONLIVE →