Езотеричні мови програмування: відмінності між версіями
0 |
Vox (обговорення | внесок) м Редагування користувача 95.132.115.27 (обговорення) відкинуті до версії користувача Surikoff |
||
| (Не показано 4 проміжні версії 2 користувачів) | |||
| Рядок 1: | Рядок 1: | ||
{{Антилулзи}} | |||
'''Езотерична мова прогромування''' — мова, створена для [[Лулз|лулзів]], в якості пародії на звичні мови програмування ([[Сі]], [[Pascal]], [[Java]]). У цій статті зібрані основні езотеричні мови програмування. | |||
== HQ9+ == | |||
Як відомо, перші задачі, які пропонють вирішити [[бидлокодер]]у на новій для нього мові, це: | |||
* 1. Написати «Hello, world!!!» (самий базовий примітив) | |||
* 2. Вивести пісеньку про 99 пляшок пива (цикл) | |||
* 3. Вивести код програми (вища ієрархія для [[бидло|бидла]]) | |||
Щоби спростити цей шлях до підвищення свого [[ЧСВ]], пан Кліф Біффл створив чудову мову, яка має наступні інструкції: | |||
* H — виведе на екран «Hello, world!!!» | |||
* Q — квайн (виводить свій код). | |||
* 9 — виведе пісеньку про 99 пляшок пива. | |||
І додатково, щоби мова стала більш суворою, команду: | |||
* + - інкрементує лічильник, який не можна ніяк використовувати. | |||
Неймовірно, але факт - назва мови складається із усіх своїх інструкцій. Нажаль, вона не є повною за Тюрінгом, тому [[Crysis]] на ній не напишеш.<br/> | |||
Такий чудовий засіб програмування не лишився без уваги. Щоби навчити [[бидло]] ООП, Девід Морган-Мар створив об’єктно-орієнтований діалект HQ9++, який командою ++ не тільки двічі інкрементує лічильник, але й створює новий об’єкт. Доступу до цього об’єкту нема, в цілях приховування інформації. | |||
===Приклад інтерпретатора=== | |||
На [[Python|Пайтоні]]: | |||
<pre> | |||
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)</pre> | |||
===Посилання=== | |||
* [http://www.almnet.de/esolang/hq9plus.php Онлайн інтерпретатор] | |||
* [http://www.dangermouse.net/esoteric/hq9plusplus.html HQ9++] — діалект | |||
== INTERCAL == | |||
'''INTERCAL''' — найстаріша езотерична мова програмування, створена студентами Доном Вудсом і Джеймсом Лайоном. Мова має багато абсурдних команд: | |||
* COME FROM | |||
* FORGET | |||
* PLEASE ABSTAIN FROM CALCULATING | |||
* <s>SUCK THAT DICK</s> | |||
===Приклади коду=== | |||
<pre>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</pre> | |||
Отака хуйня, малята. | |||
===Посилання=== | |||
* [http://www.catb.org/~esr/intercal/ Хоумпаг] | |||
== Brainfuck == | |||
'''Brainfuck''' ''(англ. Мізкотрах)'' — найвідоміша езотерична мова програмування, відома тим, що хоч і має всього 8 команд, є повною по Тюрінгу, а це значить, що на ній можна написати [[Crysis]]. Також відома своєю назвою. Взагалі-то, 8 команд це навіть трохи забагато для забезпечення тюрінгової повноти. Але ж в нас все для зручності програміста! Одна з небагатьох езотеричних мов, яка має практичне застосування. Ні-ні, на ній не пишуть ні серверні аплікації, ні драйвери пристроїв. Brainfuck - дуже зручний для перевірки деяких математичних задач, чи можуть вони бути розв’язані машиною. | |||
===Команди=== | |||
{| align="center" class="standard" border="2" cellpadding="2" | |||
|+ | |||
! |Команда | |||
! |Її значення | |||
|----- | |||
| '''<''' | |||
| Перейти до попередньої клітинки | |||
|----- | |||
| '''>''' | |||
| Перейти до наступної клітинки | |||
|----- | |||
| '''+''' | |||
| Інкрементувати значення у поточній клітинці | |||
|----- | |||
| '''-''' | |||
| Декрементувати значення у поточній клітинці | |||
|----- | |||
| '''.''' | |||
| Вивести значення поточної клітинки | |||
|----- | |||
| ''',''' | |||
| Отримати значення поточної клітинки з клавіатури | |||
|----- | |||
| '''[''' | |||
| Якщо значення поточної клітинки не 0, то виконати блок коду між '''[''' і ''']''' | |||
|----- | |||
| ''']''' | |||
| Якщо значення поточної клітинки не 0, то виконати блок коду між '''[''' і ''']''' | |||
|+ | |||
|} | |||
===Приклади коду=== | |||
Hello, world: | |||
<pre> | |||
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++ | |||
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++. | |||
------.--------.>+.>. | |||
</pre> | |||
Деякі люди на Брейнфаках пишуть навіть [http://habrahabr.ru/blogs/crazydev/95126/ морський бій]. | |||
===Посилання=== | |||
* [http://bf-fan.coolpage.biz/ Трохи більше про БрейнФак] | |||
* [http://brainfuck.progopedia.ru/ Онлайн інтерпретатор] | |||
== Befunge == | |||
'''Befunge''' — оригінальна езотерична мова програмування, програми на якій записуються як таблиця, по якій лазить [[інтерпретатор]]. | |||
===Приклади=== | |||
Hello, world: | |||
<pre> | |||
> v | |||
@,,,,,,,,,,,,"Hello World!"< | |||
</pre> | |||
<br />Генератор випадкових чисел: | |||
<pre> | |||
vv < < | |||
2 | |||
^ v< | |||
v1<?>3v4 | |||
^ ^ | |||
> >?> ?>5^ | |||
v v | |||
v9<?>7v6 | |||
v v< | |||
8 | |||
. > > ^ | |||
^< | |||
</pre> | |||
<br />Числа Фібоначчі: | |||
<pre> | |||
62*1+v>01p001>+v>\:02p\:02gv | |||
0 ^ < | |||
. :p | |||
" .1 | |||
v 0," "<0 | |||
" >1g12-+:| | |||
, @ | |||
>^ | |||
</pre> | |||
===Посилання=== | |||
*[http://esoteric.voxelperfect.net/wiki/Befunge Стаття у енциклопедії езотеричних мов] | |||
== Malbolge == | |||
'''Malbolge''' — мова, що була створена, аби стати найважчою для написання програм. Мова така важка, що перша програма була не написана, а згенерована другою програмою на [[Lisp]]. | |||
===Приклад коду=== | |||
Hello, world: | |||
<pre>(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5[m_BA{?-Y;;Vb'rR5431M} | |||
/.zHGwEDCBA@98\6543W10/.R,+O< | |||
</pre> | |||
===Посилання=== | |||
* [http://www.99-bottles-of-beer.net/language-malbolge-995.html Код на Malbolge, що виводить пісеньку про 99 пляшок пива (!)] | |||
== Piet == | |||
[[Файл:Piet hello.png|200px|thumb|right|«Hello world!» на Піет]] | |||
'''Piet''' — графічна, езотерична мова програмування. Код на Piet виглядає як абстракція.<br /><br /><br /><br /><br /> | |||
== Spoon == | |||
'''Spoon''' — мова, еквівалентна Brainfuck, але Спун використовує одиниці та нулі для запису програм. То є просто пиздець. | |||
===Hello, world!=== | |||
<pre>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</pre> | |||
== Whitespace == | |||
[[Файл:Whitespace.png|200px|thumb|right|Сферична програма на Whitespace]] | |||
'''Whitespace''' — мова, що використовує для запису програм лише символи, що не відображаються ("\n", пробіли, табуляції). Сама мова є реалізацією [[Стекова машина|стекової машини]]. Основна фіча цієї мови - її прихованість у звичайному редакторі. Нічого не підозрюючий юзер, відкривши ваш файл побачить, скажімо сішний бидлокод, або казочку про котика та білочку. А в буквальному сенсі поміж рядків цієї казочки, та й навіть між слів, буде написана програма, що призведе до повстання машин. | |||
== Мс’є знаєт толк в ізвращеніях == | |||
Деякі люди навіть намагаються писати нормальні програми на таких мовах (наприклад морський бій, див. Brainfuck). | |||
== Посилання == | |||
* [http://sourceforge.net/projects/esco/ Esco - інтерпретатор езотеричних мов] | |||
* [http://esoteric.voxelperfect.net/wiki/Main_Page Енциклопедія езотеричних мов] | |||
[[Категорія:Мови програмування]] | |||
Поточна версія на 18:12, 14 червня 2011
|
Езотерична мова прогромування — мова, створена для лулзів, в якості пародії на звичні мови програмування (Сі, 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).