Езотеричні мови програмування
Езотерична мова прогрмування — мова, створена для лулзів, в якості пародії на звичні мови програмування (Сі, 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)
Посилання
- Онлайн інтерпретатор
- [HQ9++ http://www.dangermouse.net/esoteric/hq9plusplus.html] — діалект
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, то виконати блок коду між [ і ] |