Езотеричні мови програмування
|
Езотерична мова прогромування — мова, створена для лулзів як пародія на звичні мови програмування (C++, Python, 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
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.
Chef
Мова, програми якої одночасно є рецептами приготування зазвичай поганих страв. Виключення — код нижче що друкує Hello World та є рецептом їстівної пляцки.
Hello World Cake with Chocolate sauce. This prints hello world, while being tastier than Hello World Souffle. The main chef makes a " world!" cake, which he puts in the baking dish. When he gets the sous chef to make the "Hello" chocolate sauce, it gets put into the baking dish and then the whole thing is printed when he refrigerates the sauce. When actually cooking, I'm interpreting the chocolate sauce baking dish to be separate from the cake one and Liquify to mean either melt or blend depending on context. Ingredients. 33 g chocolate chips 100 g butter 54 ml double cream 2 pinches baking powder 114 g sugar 111 ml beaten eggs 119 g flour 32 g cocoa powder 0 g cake mixture Cooking time: 25 minutes. Pre-heat oven to 180 degrees Celsius. Method. Put chocolate chips into the mixing bowl. Put butter into the mixing bowl. Put sugar into the mixing bowl. Put beaten eggs into the mixing bowl. Put flour into the mixing bowl. Put baking powder into the mixing bowl. Put cocoa powder into the mixing bowl. Stir the mixing bowl for 1 minute. Combine double cream into the mixing bowl. Stir the mixing bowl for 4 minutes. Liquify the contents of the mixing bowl. Pour contents of the mixing bowl into the baking dish. bake the cake mixture. Wait until baked. Serve with chocolate sauce. chocolate sauce. Ingredients. 111 g sugar 108 ml hot water 108 ml heated double cream 101 g dark chocolate 72 g milk chocolate Method. Clean the mixing bowl. Put sugar into the mixing bowl. Put hot water into the mixing bowl. Put heated double cream into the mixing bowl. dissolve the sugar. agitate the sugar until dissolved. Liquify the dark chocolate. Put dark chocolate into the mixing bowl. Liquify the milk chocolate. Put milk chocolate into the mixing bowl. Liquify contents of the mixing bowl. Pour contents of the mixing bowl into the baking dish. Refrigerate for 1 hour.
Посилання
|