Езотеричні мови програмування
|
{{#if: | [[Категорія:{{{cat}}}]] }}
Езотерична мова прогромування — мова, створена для лулзів, в якості пародії на звичні мови програмування (Сі, Pascal, Java). У цій статті зібрані основні езотеричні мови програмування.
Зміст
HQ9+[ред.]
Як відомо, перші задачі, які пропонють вирішити бидлокодеру на новій для нього мові, це:
- 1. Написати «Hello, world!!!» (самий базовий примітив)
- 2. Вивести пісеньку про 99 пляшок пива (цикл)
- 3. Вивести код програми (вища ієрархія для бидла)
Щоби спростити цей шлях до підвищення свого ЧСВ, пан Кліф Біффл створив чудову мову, яка має наступні інструкції:
- H — виведе на екран «Hello, world!!!»
- Q — квайн (виводить свій код).
- 9 — виведе пісеньку про 99 пляшок пива.
І додатково, щоби мова стала більш суворою, команду:
- + - інкрементує лічильник, який не можна ніяк використовувати.
Неймовірно, але факт - назва мови складається із усіх своїх інструкцій. Нажаль, вона не є повною за Тюрінгом, тому Crysis на ній не напишеш.
Такий чудовий засіб програмування не лишився без уваги. Щоби навчити бидло ООП, Девід Морган-Мар створив об’єктно-орієнтований діалект HQ9++, який командою ++ не тільки двічі інкрементує лічильник, але й створює новий об’єкт. Доступу до цього об’єкту нема, в цілях приховування інформації.
Приклад інтерпретатора[ред.]
На Пайтоні:
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)
Посилання[ред.]
- Онлайн інтерпретатор
- HQ9++ — діалект
INTERCAL[ред.]
INTERCAL — найстаріша езотерична мова програмування, створена студентами Доном Вудсом і Джеймсом Лайоном. Мова має багато абсурдних команд:
- COME FROM
- FORGET
- PLEASE ABSTAIN FROM CALCULATING
SUCK THAT DICK
Приклади коду[ред.]
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
Отака хуйня, малята.
Посилання[ред.]
Brainfuck[ред.]
Brainfuck (англ. Мізкотрах) — найвідоміша езотерична мова програмування, відома тим, що хоч і має всього 8 команд, є повною по Тюрінгу, а це значить, що на ній можна написати Crysis. Також відома своєю назвою. Взагалі-то, 8 команд це навіть трохи забагато для забезпечення тюрінгової повноти. Але ж в нас все для зручності програміста! Одна з небагатьох езотеричних мов, яка має практичне застосування. Ні-ні, на ній не пишуть ні серверні аплікації, ні драйвери пристроїв. Brainfuck - дуже зручний для перевірки деяких математичних задач, чи можуть вони бути розв’язані машиною.
Команди[ред.]
Команда | Її значення |
---|---|
< | Перейти до попередньої клітинки |
> | Перейти до наступної клітинки |
+ | Інкрементувати значення у поточній клітинці |
- | Декрементувати значення у поточній клітинці |
. | Вивести значення поточної клітинки |
, | Отримати значення поточної клітинки з клавіатури |
[ | Якщо значення поточної клітинки не 0, то виконати блок коду між [ і ] |
] | Якщо значення поточної клітинки не 0, то виконати блок коду між [ і ] |
Приклади коду[ред.]
Hello, world:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++ .>+.+++++++..+++.>++.<<+++++++++++++++.>.+++. ------.--------.>+.>.
Деякі люди на Брейнфаках пишуть навіть морський бій.
Посилання[ред.]
Befunge[ред.]
Befunge — оригінальна езотерична мова програмування, програми на якій записуються як таблиця, по якій лазить інтерпретатор.
Приклади[ред.]
Hello, world:
> v @,,,,,,,,,,,,"Hello World!"<
Генератор випадкових чисел:
vv < < 2 ^ v< v1<?>3v4 ^ ^ > >?> ?>5^ v v v9<?>7v6 v v< 8 . > > ^ ^<
Числа Фібоначчі:
62*1+v>01p001>+v>\:02p\:02gv 0 ^ < . :p " .1 v 0," "<0 " >1g12-+:| , @ >^
Посилання[ред.]
Malbolge[ред.]
Malbolge — мова, що була створена, аби стати найважчою для написання програм. Мова така важка, що перша програма була не написана, а згенерована другою програмою на Lisp.
Приклад коду[ред.]
Hello, world:
(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5[m_BA{?-Y;;Vb'rR5431M} /.zHGwEDCBA@98\6543W10/.R,+O<
Посилання[ред.]
Piet[ред.]
Piet — графічна, езотерична мова програмування. Код на Piet виглядає як абстракція.
Spoon[ред.]
Spoon — мова, еквівалентна Brainfuck, але Спун використовує одиниці та нулі для запису програм. То є просто пиздець.
Hello, world![ред.]
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
Whitespace[ред.]
Whitespace — мова, що використовує для запису програм лише символи, що не відображаються ("\n", пробіли, табуляції). Сама мова є реалізацією стекової машини. Основна фіча цієї мови - її прихованість у звичайному редакторі. Нічого не підозрюючий юзер, відкривши ваш файл побачить, скажімо сішний бидлокод, або казочку про котика та білочку. А в буквальному сенсі поміж рядків цієї казочки, та й навіть між слів, буде написана програма, що призведе до повстання машин.
Мс’є знаєт толк в ізвращеніях[ред.]
Деякі люди навіть намагаються писати нормальні програми на таких мовах (наприклад морський бій, див. Brainfuck).