Существуют так называемые эзотерические языки программирования. Как правило, они не предназначены для практического применения и популярны среди хакеров и людей, увлечённых своим хобби. Эзотерические языки придумываются для развлечения, часто они пародируют “настоящие” или являются абсурдным воплощением “серьёзных” концепций программирования. Общее свойство, присущее любому эзотерическому языку — текст программы на нём понятен лишь “посвящённому”, либо непонятен вообще, потому что для составления программы нужно написать программу на обычном языке. В то время как разработчики “реальных” языков программирования стараются сделать синтаксис максимально понятным, а программирование — удобным, создатели эзотерических языков обычно ставят перед собой противоположную задачу. Своего рода компьютерный юмор.
- INTERCAL
- Whitespace
- Chef
- Velato
- Shakespeare
- Omgrofl
- Piet
- Befunge
- Malbolge
- Brainfuck
INTERCAL — один из старейших эзотерических языков программирования. Как утверждают создатели, его название означает “Язык программирования с непроизносимой аббревиатурой”. Язык был создан в 1972 году студентами Доном Вудсом и Джеймсом М. Лайоном как пародия на существующие языки программирования и гимнастика ума. INTERCAL принципиально отличается от других языков программирования. Многие стандартные операции в нём оказываются нетривиальными.
Авторы насытили язык парадоксальными конструкциями, такими как <em>COME FROM</em>, <em>FORGET</em> и даже <em>PLEASE ABSTAIN FROM CALCULATING</em> (пожалуйста, воздержись от вычислений). Даже для символов были созданы специальные имена, например, кавычки " и знак равенства = называются соответственно «кроличьи уши» и «полрешётки» (имеется в виду половина знака #). Несмотря на всю экзотичность, на нём можно вычислить всё, что и на ”нормальном” языке программирования.
В переводе с английского языка означает пробел. Существенным отличием языка является то, что для управляющих конструкций используются только непечатаемые символы, а именно: пробел, перевод строки и табуляция. Интересным следствием этого факта является то, что текст программы на языке Whitespace можно “скрыть” внутри исходных кодов другой программы. Когда разработчики Эдвин Брэди и Крис Моррисом выпустили язык в свет, что произошло 1 апреля 2003 года, многие приняли это за шутку.
Язык разработан Дэвидом Морган-Маром в 2002 году. Программы на нем похожи на приготовление блюд по рецептам. Переменные могут быть названы только названиями основных продуктов питания. Стеки, в которые помещаются значения переменных, называются <em>mixing bowls</em> (Чаша миксера), а операции для манипуляции ими — <em>mix</em> (смешивание), <em>stir</em> (размешать), и так далее.
Принципы разработки для этого языка гласят:
— рецепты программы должны не только приводить к нужному результату, но и быть легкими в “приготовлении и восхитительными на вкус”;
— рецепты должны быть доступны всем “поварам”, с различными бюджетами;
— рецепты могут использовать традиционные меры по кулинарии, такие как чашки и столовые ложки.
Некоторые ингредиенты (имена переменных) — p (potatoes — картофель), d (dijon mustard — горчица), l (lard — сало), r (red salmon – красный лосось), o (oil -масло), w (water — вода), z (zucchinis — цуккини).
Это язык, в котором за исходный код берется звуковой MIDI-файл. Программы определяются высотой и порядком нот. Это дает гибкость в написании. Создатели стремятся к гармонии, присущей джазу. Все сообщения в Velato начинаются с главной, общей ноты, от нее уже задаются интервалы в виде команд. Для более музыкального ритма в сообщениях может меняться главная нота.
Shakespeare — эзотерический язык программирования разработанный Джоном Аслаудом и Карлом Хассельстромом. Язык Shakespeare призван замаскировать исходный код программы под пьесы Шекспира, как язык программирования Chef маскирует их под рецепты.
Список персонажей в начале программы служит для объявления количества стеков, носящих имена, например, «Ромео» и «Джульетта». Эти герои общаются друг с другом — тем самым, совершая операции ввода/вывода, могут задавать вопросы (аналог условного оператора). В целом, программная модель очень похожа на ассемблер, но значительно многословнее.
Первый абзац (от начала документа до первой пустой строки) в программе является эпиграфом и расценивается компилятором как комментарий. Части исходного кода на Shakespeare называются Актами (<em>Act</em>), которые разбиваются на Сцены (<em>Scene</em>). Каждые Акт и Сцена пронумерованы римскими цифрами и служат метками для <em>GOTO</em>. Прежде, чем персонажи смогут участвовать, они должны сначала выйти на сцену. Чтобы поместить персонажа на сцену — его необходимо вызвать командой <em>Enter</em>. Однако, если на сцене находится всего один персонаж, то не ясно, с кем ведётся общение. Чтобы персонаж покинул сцену, необходимо обратиться к нему командой <em>Exit</em>. Если акт заканчивается, или необходимо просто прогнать нескольких персонажей, то необходимо использовать команду <em>Exeunt</em>.
Omgrofl — язык, созданный в 2006 году инженером Juraj Borza. Его ключевые слова напоминают Интернет-сленг. Название появилось от объединения сленговых слов omg и rofl. Rofl — фактически одна из команд Omgrofl.
Переменные в Omgrofl должны быть формой сленгового слова lol, например lol, lool, loool, looool, и т.д.
Piet — эзотерический язык программирования разработанный Давидом Морган-Маром. Язык Piet использует разноцветные изображения в качестве программ. Программа на Piet выглядит как постживописная абстракция. Piet получил своё название от имени нидерландского художника Пита Мондриана. Программный код в языке Piet представлен в форме абстрактного рисунка.
Используется 20 различных цветов. 18 цветов связаны циклически двумя следующими циклами: цикл оттенков и цикл яркости. Белый и чёрный цвета не входят в циклы.
Первая версия языка Befunge была создана Крисом Пресси в 1993 году. Как утверждал автор, его целью было разработать язык, максимально сложный для компиляции. Сложность обеспечивается командами p и g, модифицирующими текст программы. Все одномерные языки программирования требуют некоторых синтаксических различий между комментариями и исходным кодом. В языке Befunge нет особого синтаксиса для комментариев, чтобы вставить документацию в код программист просто “обводит” управление вокруг области комментария.
Malbolge — эзотерический язык программирования, придуманный Беном Олмстедом в 1998 году. Язык разработан с целью быть максимально сложным для написания программ. Получил своё название от Malebolge, восьмого круга ада Данте. Потребовалось два года для написания первой программы.
Brainfuck — один из известнейших эзотерических языков программирования, придуман немцем Урбаном Мюллером в 1993 году для забавы. Язык имеет восемь команд, каждая из которых записывается одним символом. Исходный код программы на Brainfuck представляет собой последовательность этих символов без какого-либо дополнительного синтаксиса.
Одним из мотивов Урбана Мюллера было создание языка с как можно меньшим компилятором. Отчасти он был вдохновлён языком FALSE, для которого существовал компилятор размера 1024 байта. Существуют компиляторы языка Brainfuck размера меньше 200 байт. Программы на языке Brainfuck писать сложно, за что его иногда называют языком для мазохистов. Но при этом важно отметить, что Brainfuck является вполне естественным, полным и простым языком и может использоваться при определении понятия вычислимости.
Источник: mindhobby.com