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

Анекдоты, смешные картинки и видеоролики
Аватара пользователя
Токс
Фрактальный эльф
Сообщения: 1359
Зарегистрирован: 26 ноя 2009, 21:27
Репутация: 286

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

Сообщение Токс »

 
Материал из Википедии — свободной энциклопедии
Эзотерические языки программирования — вид языков программирования, не предназначенных для практического применения. Образец компьютерного юмора.
Эзотерические языки придумываются для развлечения, часто они пародируют «настоящие» или являются абсурдным воплощением «серьёзных» концепций программирования. Некоторые эзотерические языки нарочно ограничены, (как, например, язык HQ9+), другие — универсальны и обладают тьюринговской полнотой. Общее свойство, присущее любому эзотерическому языку — текст программы на нём понятен лишь «посвящённому», либо непонятен вообще, потому что для составления программы нужно написать программу на обычном языке. В то время, как разработчики «реальных» языков программирования стараются сделать синтаксис максимально понятным, а программирование — удобным, создатели эзотерических языков обычно ставят перед собой иные задачи.
В целом такие языки бесполезны, однако, программирование на некоторых из них является неплохой тренировкой. Эзотерические языки нередко включают в список разрешённых языков на конкурсах по программированию.
Список некоторых эзотерических языков
* INTERCAL-подобные. Основная идея — максимальное отличие от существующих языков
o INTERCAL
o FALSE
* Brainfuck-подобные. /*ухаха)))*/ Ориентированы на сокращение синтаксиса (оригинальный Brainfuck имеет 8 команд) при сохранении Тьюринг-полноты
o Ook! (язык орангутангов) /*Это просто пестец))))*/
o COW (язык парнокопытных)
o Brainfork (многозадачный Brainfuck) /*многозадачный вы*б мозга, аааа, я пацтулом!!!=D*/
o f*ckf*ck /*коротко и ясно*/
o DoubleFuck /*блин прям коктейль какой-то быгыгы))*/
o Whitespace
o Spoon
o LOLCODE /*да уж это точно*/
* Фунгеоидные. Используют многомерные представления программ
o Byter (двумерный)
o Befunge (двумерный)
o Befunge-93 (двумерный, не Тьюринг-полный)
o Unefunge (одномерный) /*это как ваще о__0*/
o Trefunge (трёхмерный)
o 4DL (четырёхмерный) /*а вот это, наверное, очень интересно*/
o Piet (с цветовым кодированием) /*хочу увидеть!*/
* Языки, созданные для проверки математических концепций
o Thue
o Unlambda
* Языки, основанные на копировании собственного кода
o Smetana /*о__0*/
o SMITH
o Muriel
* Языки-«чёрные ящики». Созданы с целью затруднить написание кода /*отличная цель, что скажешь)))*/
o Malbolge
o ALPACA
* Языки с литературным синтаксисом
o Chef (рецепты)
o Shakespeare (Шекспировские пьесы)
o Haifu (стихотворения хокку)
* Языки с нечеловеческой логикой
o Var'aq (логика расы Клингонов из сериала «Star Trek»)
* Языки для других целей, но часто приводимые в списках эзотерических
o QuakeC
o MC++
o Автокод «ИНЖЕНЕР» (для компьютеров «Минск»)
* Другие языки
o Cool
o GOTO++
o Lithp
o paranoid
o SARTRE
o SIMPLE
o HQ9+/HQ9++
o Whenever
o Spaghetti
o smilescript
o emoticon
o iot
o Lazy K
o Beatnik
o reMorse
См. также
* Хакерская ценность http://ru.wikipedia.org/wiki/хакерская_ценность
Ссылки
* Wiki проект об эзотерических языках программирования(англ.) http://esolangs.org/wiki/Main_Page
* Danger Mouse: Esoteric Programming Languages(англ.)
* Обзор ЭЯП в журнале «Компьютерра»
* Более полная версия предыдущей статьи «Путеводитель автостопщика по потаенным знаниям»
* esco — универсальный интерпретатор эзотерических языков
Вот примеры языков, заинтересовавших меня выше, правда не всех, из той же вики. Сюда перепечатывать буду только немного инфо и листинги кода, печатающего: "Hello World")))
Brainfuck http://ru.wikipedia.org/wiki/Brainfuck
Brainfuck (англ. brain мозг + fuck) — один из известнейших эзотерических языков программирования, придуман Урбаном Мюллером (нем. Urban Müller) в 1993 году для забавы. Язык имеет восемь команд, каждая из которых записывается одним символом. Исходный код программы на Brainfuck представляет собой последовательность этих символов без какого-либо дополнительного синтаксиса.
Одним из мотивов Урбана Мюллера было создание языка с как можно меньшим компилятором. Отчасти он был вдохновлён языком FALSE, для которого существовал компилятор размера 1024 байта. Существуют компиляторы языка Brainfuck размера меньше 200 байт.[1] Программы на языке Brainfuck писать сложно, за что его иногда называют языком для мазохистов (ухаха))). Но при этом важно отметить, что Brainfuck является вполне естественным, полным и простым языком и может использоваться при определении понятия вычислимости.
Машина, которой управляют команды Brainfuck, состоит из упорядоченного набора ячеек и указателя текущей ячейки, напоминая ленту и головку машины Тьюринга. Кроме того, подразумевается устройство общения с внешним миром (см. команды . и ,) через поток ввода и поток вывода.
Brainfuck подходит для экспериментов по генетическому программированию (об этом позже) из-за простоты синтаксиса, и, соответственно, генерации исходного кода.
Программа на языке Brainfuck, печатающая «Hello World!»:
++++++++++[>+++++++>++++++++++>+++>+++
.>+.+++++++..+++.>++..+++.
------.--------.>+.>.
По-моему, это пиздец)))))))))) ааааааааа))))))))))))
Originally: «54. Остерегайтесь трясин Тьюринга, в которых можно сделать всё, но ничего интересного нельзя сделать просто.»
LOLCODE http://ru.wikipedia.org/wiki/LOLCODE
LOLCODE — эзотерический язык программирования, созданный под влиянием интернет-мема о lolcat’ах.
На официальном сайте находится спецификация этого языка, и, хотя некоторые моменты в ней не описаны, уже существуют несколько работающих интерпретаторов и компиляторов этого языка. LOLCODE является Тьюринг-полным языком, так как возможна реализация интерпретатора Brainfuck на LOLCODE (по-моему, от одной этой фразы можно обосраться)))))).
LOLCODE использует сильно урезанный словарь английского интернет-сленга, поэтому человек, знакомый с этим сленгом, вполне может разобраться в коде программы даже без знания синтаксиса.
Вот пример программы «Hello world» и простой программы по выводу содержимого файла на экран:
HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
HAI
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERROR!"
KTHXBYE
LOLPython - класс для языка Python, позволяющий использовать LOLCODE при написании программы.
LOLCODE.NET — компилятор LOLCODE в MSIL, находящийся в ранней стадии разработки.
Var'aq http://ru.wikipedia.org/wiki/Var%27aq
var’aq — эзотерический язык программирования, созданный Брайеном Коннорсом и Крисом Прессей в 2000 году и использующий грамматическую структуру языка Клингонов из сериала Star Trek.
var’aq — язык стек-ориентированного программирования, основанный на PostScript'e, с аспектами Lisp'a (для использования структур данных).
«Hello, World» на var’aq
Name: hello, world
Dialect: English
Version: 5 June 2000
Comments: Note the canonical var'aq "hello, world";
actually prints "What do you want, universe?" in Klingon
~ nuqneH { ~ 'u' ~ nuqneH disp disp } name
nuqneH
Malbolge http://ru.wikipedia.org/wiki/Malbolge
Malbolge — эзотерический язык программирования, придуманный Беном Олмстедом в 1998 году. Язык разработан с целью быть максимально сложным для написания программ.
Получил своё название от Malebolge, восьмого круга ада Данте.
Malbolge — это машинный язык для виртуальной машины (интерпретатора), работающей в троичной системе счисления.
Эта программа на Malbolge отображает «Hello, world.»:
(=
Это полный пестец))))))
FALSE http://ru.wikipedia.org/wiki/FALSE
FALSE — эзотерический язык программирования, созданный в 1993 году en:Wouter van Oortmerssen-ом с двумя, по его словам, целями:
1. чтобы можно было написать компилятор для него размером не более одного килобайта.
2. придумать синтаксис, который бы выглядел шифровкой, случайным набором символов.
FALSE стал одним из первых эзотерических языков программирования, в частности он послужил источником вдохновения для автора знаменитого языка Brainfuck. Не будет большим преувеличением сказать, что именно с FALSE началась мода на эзотерические языки программирования.
Вместе с тем FALSE — всё ещё достаточно практичный язык программирования. Хотя его и отличает write-only синтаксис, он поддерживает разумный набор операций, в отличие от являющегося реализацией варианта машины Тьюринга Brainfuck, не говоря уже о таких чудовищных языках как Intercal (англ.) и Malbolge. Источником идей для FALSE был язык Forth, его синтаксис также напоминает синтаксис известного калькулятора dc для UNIX (с обратной польской нотацией). Одним из основных источников сложности при программировании на FALSE является использование экзотических знаков пунктуации (не разделяемых пробелами) вместо форт-слов.
Пример определения функции факториал на FALSE:
[2=$[\%1\]?~[2-f;!*]?]f:
Fuckfuck http://ru.wikipedia.org/wiki/F*ckf*ck
feckfeck (также известен, как fuckfuck или f*ckf*ck) — эзотерический язык программирования, созданный Томасом Рэтбоном, является аналогом языка Brainfuck. Особенностью программ написанных на feckfeck считается некоторое их сходство с грубым нецензурным выражением.
Пример программы
Boob!!!!!!!!!!!!
A R S E feck kn*b c** ksh ag t*ts butt
В результате выполнения данной программы на поток вывода поступит двенадцать символов с потока ввода.
Остальная информация, кому интересно, тут: http://toxica666.livejournal.com/108970.html
ЦКП - Центральный Комитет Психонавтов без наркотиков :)
Concillium insepti egо sum. M8
Нук пу НЕТЕР, нук ах эм ба - ф.
Ответить

Вернуться в «Юмор»