Открыть сервис

Телоран — язык программирования

Телоран — эзотерический язык программирования, созданный в 2004 году программистом Дэвидом Морган-Маром. Относится к классу эзотерических языков (esolang), то есть языков, разработанных не для практического применения, а ради исследования необычных вычислительных моделей, демонстрации концепций или в качестве интеллектуального упражнения. Название происходит от английского the language of temporal ordering — «язык временного упорядочивания».

Общая характеристика

Телоран принципиально отличается от большинства языков программирования тем, что в нём отсутствует привычное последовательное выполнение инструкций. Программа на Телоране представляет собой набор инструкций, каждая из которых снабжена меткой времени — моментом, в который она должна выполниться. Порядок исполнения определяется не порядком записи строк, а значениями этих меток.

Каждая инструкция записывается как «время — действие». Время указывается в произвольных единицах, чаще всего в виде последовательности символов, образующих упорядоченную шкалу. Интерпретатор собирает все инструкции, сортирует их по метке времени и выполняет в получившемся порядке. Если несколько инструкций имеют одинаковую метку, они выполняются в порядке появления в исходном тексте.

История

Дэвид Морган-Мар создал Телоран в 2004 году. Автор известен также как разработчик ряда других эзотерических языков и участник сообщества, занимающегося нестандартными вычислительными моделями. Телоран задумывался как эксперимент: что произойдёт, если убрать из языка саму идею линейной последовательности команд и заменить её явным управлением временем.

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

Синтаксис и устройство

Программа на Телоране состоит из строк, каждая из которых содержит метку времени и следующую за ней инструкцию. Синтаксически метка отделяется от команды пробелом или иным разделителем в зависимости от реализации интерпретатора.

Основные элементы языка:

  • Метки времени — символы или их последовательности, задающие порядок. Сравнение меток производится лексикографически, поэтому важно, чтобы шкала была построена корректно.
  • Инструкции вывода — команды, печатающие символ или строку.
  • Инструкции ввода — команды чтения данных.
  • Арифметические операции — сложение, вычитание и другие действия над переменными.
  • Управляющие конструкции — условные переходы и циклы, реализуемые через изменение временных меток.
  • Переменные — именованные ячейки памяти.

Характерная черта языка — возможность «перепрыгивать» во времени вперёд и назад, меняя метки уже существующих инструкций. Это позволяет строить циклы и ветвления необычным способом: программа как бы переписывает собственное расписание.

Пример

Простейшая программа, выводящая приветствие, может выглядеть так:

`` 1 PRINT "Hello" 2 PRINT " World" ``

Здесь цифры играют роль меток времени. Интерпретатор выполнит первую строку, затем вторую, и результатом будет строка «Hello World». Если поменять метки местами, изменится и порядок вывода, хотя текст программы останется прежним.

Философия и значение

Телоран иллюстрирует идею, что последовательность выполнения — не обязательное свойство программы, а лишь одна из возможных моделей организации вычислений. В традиционных языках порядок задаётся расположением строк; в Телоране он вынесен в явный параметр — время. Такое разделение кода и порядка его исполнения роднит язык с некоторыми моделями параллельных и распределённых вычислений, где инструкции планируются по расписанию.

С точки зрения теории язык эквивалентен по вычислительной мощности машине Тьюринга: располагая достаточным набором инструкций и меток, на нём можно реализовать любую вычислимую функцию. Практической ценности язык не имеет, но служит наглядным примером альтернативной парадигмы.

Связанные концепции

Телоран часто сравнивают с другими эзотерическими языками, исследующими необычные способы управления потоком выполнения. К их числу относятся языки, где программа записывается в виде двумерной сетки, где код строится из музыкальных нот или где инструкции выполняются параллельно и недетерминированно. Общая идея таких языков — поставить под сомнение привычные допущения о том, как должна выглядеть и работать программа.

Критика и ограничения

Основные претензии к Телорану связаны с его непрактичностью: язык сложен для написания реальных программ, отладка затруднена из-за неочевидного порядка исполнения, а сообщество пользователей крайне мало. Отсутствие стандартизированной спецификации приводит к тому, что разные интерпретаторы могут вести себя по-разному. Тем не менее в контексте эзотерического программирования эти недостатки не считаются существенными, поскольку язык и не предназначен для решения прикладных задач.

IRONLIVE — база данных и аналитика по компаниям России.

На главную IRONLIVE →