Эзотерический язык программирования
Эзотерический язык программирования — язык программирования, разработанный для исследования границ возможностей разработки языков программирования, для доказательства потенциально возможной реализации некой идеи (так называемое «доказательство концепции», англ. proof of concept), в качестве произведения программного искусства или в качестве шутки (компьютерного юмора).
Многие эзотерические языки придумываются для развлечения, часто они пародируют «настоящие» или являются абсурдным воплощением «серьёзных» концепций программирования. Некоторые эзотерические языки нарочно ограничены (как, например, язык HQ9+), другие являются тьюринг-полными, то есть языками общего назначения. Общее свойство, присущее любому эзотерическому языку — текст программы на нём понятен лишь «посвящённому» либо непонятен вообще, потому что для составления программы нужно написать программу на обычном языке программирования. В то время как разработчики «реальных» языков программирования стараются сделать синтаксис максимально понятным, а программирование — удобным, создатели эзотерических языков ставят перед собой другие задачи.
На практике такие языки, как правило, бесполезны, однако программирование на некоторых из них является неплохой тренировкой. Эзотерические языки нередко включают в список разрешённых языков на конкурсах по программированию.
Классы некоторых эзотерических языков
Среди INTERCAL-подобных языков, основная идея которых — нарочито максимальное отличие от существующих языков, известен язык FALSE.
Большой класс составляют Brainfuck-подобные языки, ориентированные на сокращение синтаксиса (оригинальный Brainfuck имеет 8 команд) при сохранении тьюринг-полноты), среди таковых CaneCode, Ook! (язык орангутанов), COW (язык парнокопытных), Brainfork (многозадачный Brainfuck), f*ckf*ck, DoubleFuck, Whitespace, Spoon, LOLCODE, HQ9+ (не полон по Тьюрингу).
В отдельный класс выделяются языки, использующие многомерные представления программ: двумерные Byter, Befunge, Befunge-93 (двумерный, не тьюринг-полный), одномерный Unefunge, трёхмерный Trefunge, четырёхмерный 4DL и использующий цветовое кодирование Piet.
Ещё один класс составляют языки, основанные на копировании собственного кода — Smetana, Smith, Muriel.
Языки-«чёрные ящики», такие как Malbolge и Alpaca, создаются с целью затруднить написание кода.
Ряд языков реализуют «литературный» синтаксис, таковы Chef (рецепты), Shakespeare (шекспировские пьесы), Haifu (стихотворения хокку), ArnoldC (фразы Арнольда Шварценеггера), FiM++ (письма Принцессе Селестии).
Язык Var’aq, основанный на логике расы клингонов из сериала «Звёздный путь» относят к классу языков с «нечеловеческой логикой».
Некоторые другие языки, созданные с эзотерическими целями: Cool, GOTO++, Lithp, paranoid, Sartre, Simple, Whenever, smilescript, emoticon, iot, Lazy K, Beatnik, reMorse, YoptaScript[1].
Иногда в категорию эзотерических относят также языки, созданные для проверки математических концепций, такие как Thue и Unlambda.
Среди языков, созданных для других целей, иногда упоминаемых как эзотерические — P′′, QuakeC, MC++, Автокод «Инженер» (низкоуровневый мнемокод для компьютера «Минск»).
Ссылки
- Wiki-проект об эзотерических языках программирования (англ.)
- Обзор ЭЯП в журнале «Компьютерра»
- Более полная версия предыдущей статьи «Путеводитель автостопщика по потаённым знаниям»
- esco — универсальный интерпретатор эзотерических языков
- YoptaScript - язык программирования для гопников и чётких пацанов . yopta.space. Дата обращения: 6 марта 2022.