|
|
| Рядок 1: |
Рядок 1: |
| {{Антилулзи}}
| | lol |
| '''Езотерична мова прогромування''' — мова, створена для [[Лулз|лулзів]], в якості пародії на звичні мови програмування ([[Сі]], [[Pascal]], [[Java]]). У цій статті зібрані основні езотеричні мови програмування.
| |
| | |
| == HQ9+ ==
| |
| Як відомо, перші задачі, які пропонють вирішити [[бидлокодер]]у на новій для нього мові, це:
| |
| * 1. Написати «Hello, world!!!» (самий базовий примітив)
| |
| * 2. Вивести пісеньку про 99 пляшок пива (цикл)
| |
| * 3. Вивести код програми (вища ієрархія для [[бидло|бидла]])
| |
| Щоби спростити цей шлях до підвищення свого [[ЧСВ]], пан Кліф Біффл створив чудову мову, яка має наступні інструкції:
| |
| * H — виведе на екран «Hello, world!!!»
| |
| * Q — квайн (виводить свій код).
| |
| * 9 — виведе пісеньку про 99 пляшок пива.
| |
| І додатково, щоби мова стала більш суворою, команду:
| |
| * + - інкрементує лічильник, який не можна ніяк використовувати.
| |
| Неймовірно, але факт - назва мови складається із усіх своїх інструкцій. Нажаль, вона не є повною за Тюрінгом, тому [[Crysis]] на ній не напишеш.<br/>
| |
| Такий чудовий засіб програмування не лишився без уваги. Щоби навчити [[бидло]] ООП, Девід Морган-Мар створив об’єктно-орієнтований діалект HQ9++, який командою ++ не тільки двічі інкрементує лічильник, але й створює новий об’єкт. Доступу до цього об’єкту нема, в цілях приховування інформації.
| |
| ===Приклад інтерпретатора===
| |
| На [[Python|Пайтоні]]:
| |
| <pre>
| |
| code = raw_input(">>")
| |
| iter = 0
| |
| for c in code:
| |
| if c == "H":
| |
| print "Hello, world!"
| |
| elif c == "+":
| |
| iter += 1
| |
| elif c == "Q":
| |
| print code
| |
| elif c == "9":
| |
| for i in range(100, 1, -1):
| |
| print "%d bottles of beer\nyou take one down, pass it around"%i
| |
| if i == 1:
| |
| print "no more bottles of beer on the wall.\n"
| |
| else:
| |
| print "%d bottles of beer on the wall.\n"%(i-1)</pre>
| |
| | |
| ===Посилання===
| |
| * [http://www.almnet.de/esolang/hq9plus.php Онлайн інтерпретатор]
| |
| * [http://www.dangermouse.net/esoteric/hq9plusplus.html HQ9++] — діалект
| |
| | |
| == INTERCAL ==
| |
| '''INTERCAL''' — найстаріша езотерична мова програмування, створена студентами Доном Вудсом і Джеймсом Лайоном. Мова має багато абсурдних команд:
| |
| * COME FROM
| |
| * FORGET
| |
| * PLEASE ABSTAIN FROM CALCULATING
| |
| * <s>SUCK THAT DICK</s>
| |
| ===Приклади коду===
| |
| <pre>DO ,1 <- #13
| |
| PLEASE DO ,1 SUB #1 <- #238
| |
| DO ,1 SUB #2 <- #108
| |
| DO ,1 SUB #3 <- #112
| |
| DO ,1 SUB #4 <- #0
| |
| DO ,1 SUB #5 <- #64
| |
| DO ,1 SUB #6 <- #194
| |
| PLEASE DO ,1 SUB #7 <- #48
| |
| DO ,1 SUB #8 <- #26
| |
| DO ,1 SUB #9 <- #244
| |
| PLEASE DO ,1 SUB #10 <- #168
| |
| DO ,1 SUB #11 <- #24
| |
| DO ,1 SUB #12 <- #16
| |
| DO ,1 SUB #13 <- #162
| |
| PLEASE READ OUT ,1
| |
| PLEASE GIVE UP</pre>
| |
| Отака хуйня, малята.
| |
| ===Посилання===
| |
| * [http://www.catb.org/~esr/intercal/ Хоумпаг]
| |
| | |
| == Brainfuck ==
| |
| '''Brainfuck''' ''(англ. Мізкотрах)'' — найвідоміша езотерична мова програмування, відома тим, що хоч і має всього 8 команд, є повною по Тюрінгу, а це значить, що на ній можна написати [[Crysis]]. Також відома своєю назвою. Взагалі-то, 8 команд це навіть трохи забагато для забезпечення тюрінгової повноти. Але ж в нас все для зручності програміста! Одна з небагатьох езотеричних мов, яка має практичне застосування. Ні-ні, на ній не пишуть ні серверні аплікації, ні драйвери пристроїв. Brainfuck - дуже зручний для перевірки деяких математичних задач, чи можуть вони бути розв’язані машиною.
| |
| ===Команди===
| |
| {| align="center" class="standard" border="2" cellpadding="2"
| |
| |+
| |
| ! |Команда
| |
| ! |Її значення
| |
| |-----
| |
| | '''<'''
| |
| | Перейти до попередньої клітинки
| |
| |-----
| |
| | '''>'''
| |
| | Перейти до наступної клітинки
| |
| |-----
| |
| | '''+'''
| |
| | Інкрементувати значення у поточній клітинці
| |
| |-----
| |
| | '''-'''
| |
| | Декрементувати значення у поточній клітинці
| |
| |-----
| |
| | '''.'''
| |
| | Вивести значення поточної клітинки
| |
| |-----
| |
| | ''','''
| |
| | Отримати значення поточної клітинки з клавіатури
| |
| |-----
| |
| | '''['''
| |
| | Якщо значення поточної клітинки не 0, то виконати блок коду між '''[''' і ''']'''
| |
| |-----
| |
| | ''']'''
| |
| | Якщо значення поточної клітинки не 0, то виконати блок коду між '''[''' і ''']'''
| |
| |+
| |
| |}
| |
| ===Приклади коду===
| |
| Hello, world:
| |
| <pre>
| |
| ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
| |
| .>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
| |
| ------.--------.>+.>.
| |
| </pre>
| |
| Деякі люди на Брейнфаках пишуть навіть [http://habrahabr.ru/blogs/crazydev/95126/ морський бій].
| |
| ===Посилання===
| |
| * [http://bf-fan.coolpage.biz/ Трохи більше про БрейнФак]
| |
| * [http://brainfuck.progopedia.ru/ Онлайн інтерпретатор]
| |
| | |
| == Befunge ==
| |
| '''Befunge''' — оригінальна езотерична мова програмування, програми на якій записуються як таблиця, по якій лазить [[інтерпретатор]].
| |
| ===Приклади===
| |
| Hello, world:
| |
| <pre>
| |
| > v
| |
| @,,,,,,,,,,,,"Hello World!"<
| |
| </pre>
| |
| <br />Генератор випадкових чисел:
| |
| <pre>
| |
| vv < <
| |
| 2
| |
| ^ v<
| |
| v1<?>3v4
| |
| ^ ^
| |
| > >?> ?>5^
| |
| v v
| |
| v9<?>7v6
| |
| v v<
| |
| 8
| |
| . > > ^
| |
| ^<
| |
| </pre>
| |
| <br />Числа Фібоначчі:
| |
| <pre>
| |
| 62*1+v>01p001>+v>\:02p\:02gv
| |
| 0 ^ <
| |
| . :p
| |
| " .1
| |
| v 0," "<0
| |
| " >1g12-+:|
| |
| , @
| |
| >^
| |
| </pre>
| |
| ===Посилання===
| |
| *[http://esoteric.voxelperfect.net/wiki/Befunge Стаття у енциклопедії езотеричних мов]
| |
| | |
| == Malbolge ==
| |
| '''Malbolge''' — мова, що була створена, аби стати найважчою для написання програм. Мова така важка, що перша програма була не написана, а згенерована другою програмою на [[Lisp]].
| |
| ===Приклад коду===
| |
| Hello, world:
| |
| <pre>(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5[m_BA{?-Y;;Vb'rR5431M}
| |
| /.zHGwEDCBA@98\6543W10/.R,+O<
| |
| </pre>
| |
| ===Посилання===
| |
| * [http://www.99-bottles-of-beer.net/language-malbolge-995.html Код на Malbolge, що виводить пісеньку про 99 пляшок пива (!)]
| |
| | |
| == Piet ==
| |
| [[Файл:Piet hello.png|200px|thumb|right|«Hello world!» на Піет]]
| |
| '''Piet''' — графічна, езотерична мова програмування. Код на Piet виглядає як абстракція.<br /><br /><br /><br /><br />
| |
| | |
| == Spoon ==
| |
| '''Spoon''' — мова, еквівалентна Brainfuck, але Спун використовує одиниці та нулі для запису програм. То є просто пиздець.
| |
| ===Hello, world!===
| |
| <pre>1 1 1 1 1 1 1 1 1 1 00100 010 1 1 1 1 1 1 1 010 1 1 1 1 1 1 1 1 1 1 010 1 1 1 010 1 011 011 011
| |
| 011 000 0011 010 1 1 001010 010 1 001010 1 1 1 1 1 1 1 001010 001010 1 1 1 001010 010 1 1 001010
| |
| 011 011 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 001010 010 001010 1 1 1 001010 000 000 000 000 000 000
| |
| 001010 000 000 000 000 000 000 000 000 001010 010 1 001010 010 001010</pre>
| |
| | |
| == Whitespace ==
| |
| [[Файл:Whitespace.png|200px|thumb|right|Сферична програма на Whitespace]]
| |
| '''Whitespace''' — мова, що використовує для запису програм лише символи, що не відображаються ("\n", пробіли, табуляції). Сама мова є реалізацією [[Стекова машина|стекової машини]]. Основна фіча цієї мови - її прихованість у звичайному редакторі. Нічого не підозрюючий юзер, відкривши ваш файл побачить, скажімо сішний бидлокод, або казочку про котика та білочку. А в буквальному сенсі поміж рядків цієї казочки, та й навіть між слів, буде написана програма, що призведе до повстання машин.
| |
| | |
| == Мс’є знаєт толк в ізвращеніях ==
| |
| Деякі люди навіть намагаються писати нормальні програми на таких мовах (наприклад морський бій, див. Brainfuck).
| |
| | |
| == Посилання ==
| |
| * [http://sourceforge.net/projects/esco/ Esco - інтерпретатор езотеричних мов]
| |
| * [http://esoteric.voxelperfect.net/wiki/Main_Page Енциклопедія езотеричних мов]
| |
| [[Категорія:Мови програмування]]
| |