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

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

Езотерична мова прогрмування — мова, створена для лулзів, в якості пародії на звичні мови програмування (Сі, Pascal, Java). У цій статті зібрані основні езотеричні мови програмування.

HQ9+

HQ9+ — езотерична мова програмування, створена Кліфом Біффлом. Відомий він тим, що має 4 команди (!!!), по одному символу кожна:

  • H — виведе на екран «Hello, world!!!»
  • Q — квайн (виводить свій код).
  • 9 — виведе пісеньку про 99 пляшок пива.
  • + — інкрементує лічильник, який не можна ніяк використовувати.

Мова має over дохуя діалектів і реалізацій, так як інтерпретатор пишеться за 5 хвилин.

Приклад інтерпретатора

На Пайтоні:

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

Приклади коду

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 команд, є повною по Тьюрінгу.

Команди

Команда Її значення
< Перейти до попередньої клітинки
> Перейти до наступної клітинки
+ Інкрементувати значення у поточній клітинці
- Декрементувати значення у поточній клітинці
. Вивести значення поточної клітинки
, Отримати значення поточної клітинки з клавіатури
[ Якщо значення поточної клітинки не 0, то виконати блок коду між [ і ]
] Якщо значення поточної клітинки не 0, то виконати блок коду між [ і ]