Езотеричні мови програмування

Матеріал з Драматика
Перейти до навігації Перейти до пошуку

Допиши кілька слів зі свого досвіду
Ми дописуємо Драматику разом і ця стаття потребує твоїх думок для повноти. Натисни "редагувати" згори сторінки чи розділу.

Стаття потребує доповнення!
Ця стаття засмучує наших слоупоків, бо навіть вони розуміють, що її давно вже треба доповнити усілякими корисними картинками та інформацією, або, можливо, видалити якусь недолугу хуйню ідіота і написати натомість щось притомне.


Езотерична мова прогромування — мова, створена для лулзів як пародія на звичні мови програмування (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)

Посилання

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 hello.png
«Hello world!» на Піет

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.png
Сферична програма на Whitespace

Whitespace — мова, що використовує для запису програм лише символи, що не відображаються ("\n", пробіли, табуляції). Сама мова є реалізацією стекової машини. Основна фіча цієї мови - її прихованість у звичайному редакторі. Нічого не підозрюючий юзер, відкривши ваш файл побачить, скажімо сішний бидлокод, або казочку про котика та білочку. А в буквальному сенсі поміж рядків цієї казочки, та й навіть між слів, буде написана програма, що призведе до повстання машин.

Мс’є знаєт толк в ізвращеніях

Деякі люди навіть намагаються писати нормальні програми на таких мовах. Наприклад, морський бій на Brainfuck.

Chef

Файл:Helloworld.jpg
Той самий торт, що є одночасно програмою. Жери, я кажу, я для кого готувала!

Мова, програми якої одночасно є рецептами приготування зазвичай поганих страв. Виключення — код нижче що друкує 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.

Посилання