Езотери́чні мо́ви програмува́ння — вид мов програмування, не призначених для практичного застосування. Зразок комп'ютерного гумору.
Езотеричні мови придумуються для розваги, часто вони пародіюють «справжні» або є абсурдним втіленням «серйозних» концепцій програмування. Деякі езотеричні мови спеціально обмежені, (як, наприклад, мова HQ9+), інші — універсальні і володіють тюрінговою повнотою. Загальна властивість будь-якої езотеричної мови — текст програми на ній зрозумілий лише «обізнаному». Тоді як розробники «реальних» мов програмування прагнуть зробити синтаксис максимально зрозумілим, а програмування — зручним, творці езотеричних мов зазвичай розв'язують протилежну задачу.
У цілому такі мови позбавлені користі, проте програмування деякими з них є непоганим тренуванням на кшталт вирішення логічних головоломок або ігор розуму. Езотеричні мови нерідко включають у список дозволених мов на конкурсах з програмування.
Історія Першим і досі канонічним прикладом езотеричної мови програмування є INTERCALMatthew Fuller, Software Studies, MIT Press, 2008, розроблений у 1972 році Доном Вудсом і Джеймсом М. Лайоном, які заявили, що їхнім наміром було створити мову програмування, не схожу на жодну з відомих їм. Вона пародіювала елементи відомих на той час мов програмування, таких як Фортран, COBOL і мова асемблера.
Протягом багатьох років INTERCAL був представлений лише паперовими копіями посібника INTERCAL. Його відродження в 1990 році у вигляді реалізації на мові C під Unix стимулювало хвилю інтересу до навмисного проєктування езотеричних комп'ютерних мов.
У 1993 році Воутер ван Оортмерсен створив FALSE, невелику стек-орієнтовану мову програмування з синтаксисом, розробленим таким чином, щоб зробити код за своєю суттю затуманеним, заплутаним і нечитабельним. Її компілятор має розмір лише 1024 байти. Це надихнуло Урбана Мюллера на створення ще меншої мови, сумнозвісної Brainfuck, яка складається лише з восьми розпізнаваних символів. Разом з Befunge Кріса Прессі (як FALSE, але з двовимірним покажчиком інструкцій), Brainfuck зараз є однією з найкраще підтримуваних езотеричних мов програмування, з канонічними прикладами мінімальних тарпітів Тьюрінга і безглуздо заплутаних мовних особливостей. Brainfuck відноситься до сімейства P′′ машин Тюрінга.
Список деяких езотеричних мов
INTERCAL — подібні INTERCAL FALSE Brainfuck Ook! (мова орангутанів) COW (мова парнокопитних) Brainfork (багатозадачний Brainfuck) F*ckF*ck DoubleFuck Whitespace Фунгеоїдні Befunge (двомірний) Befunge-93 (двомірний не повний за Тюрінгом) Unefunge (одновимірний) Trefunge (тривимірний) 4DL (чотиривимірний) Piet (з колірним кодуванням) Мови, створені для перевірки математичних концепцій SKRYPT Thue Unlambda Засновані на копіюванні власного коду Smetana SMITH Muriel Мови — «Чорні ящики» Malbolge ALPACA З літературним синтаксисом (рецепти) Shakespeare (Шекспірівські п'єси) Haifu (вірші хокку) З нелюдською логікою var'aq (логіка раси Клінгонів з серіалу «Star Trek») Мови, що створювалися для інших цілей, але такі, що часто наводяться у списках езотеричних APL SNOBOL Quake C MC++ Автокод «ІНЖЕНЕР»(для комп'ютерів «Мінськ») Інші Beatnik СВН — «Програмування знизу до верху навскоси» emoticon FRACTRAN — запропонована Джоном Конвеєм мова програмування, у якій програма має вигляд списку додатних дробів. GOTO++ HQ9+ iot Lazy K Lithp paranoid reMorse SARTRE SIMPLE smilescript Spaghetti Whenever
Примітки
Посилання Езотеричні мови програмування. Як це — писати код, що не має практичного застосування Danger Mouse Огляд ЕМП в журналі «Компьютерра» Повніша версія попередньої статті на rsdn.ru Esoteric Istoriya — Езотерична мова програмування, яка використовує факти та термінологію з історії України. Вікі езотеричних мов програмування