Эзотерический язык программирования

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Эзотерический язык программирования — язык программирования, разработанный для исследования границ возможностей разработки языков программирования, для доказательства потенциально возможной реализации некой идеи (так называемое «доказательство концепции», англ. proof of concept), в качестве произведения программного искусства[en] или в качестве шутки (компьютерного юмора).

Многие эзотерические языки придумываются для развлечения, часто они пародируют «настоящие» или являются абсурдным воплощением «серьёзных» концепций программирования. Некоторые эзотерические языки нарочно ограничены (как, например, язык 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.

Иногда в категорию эзотерических относят также языки, созданные для проверки математических концепций, такие как Thue и Unlambda.

Среди языков, созданных для других целей, иногда упоминаемых как эзотерические — P′′, QuakeC, MC++, Автокод «Инженер» (низкоуровневый мнемокод для компьютера «Минск»).

Ссылки[править | править вики-текст]