Ezoterický programovací jazyk
Ezoterický programovací jazyk (zkratka esolang) je takový programovací jazyk, který byl navržen, aby otestoval hranice a možnosti disciplíny programovacích jazyků, důkaz toho, že takový návrh je vůbec možný; nebo jako žert či parodii. Přídomek ezoterický tyto jazyky nosí jako znak toho, že jejich účelem ani záměrem není snaha o jeho široké uplatnění v praxi. To a často i nesrozumitelnost až obtížnost psaní byť i jednoduchých programů je odlišuje od konvenčních programovacích jazyků, jež se krom jiného soustředí i na přehlednost a užitnou hodnotu. Autoři většiny ezoterických programovacích jazyků se nicméně ve svých návrzích snaží o to, aby jejich výtvory byly turingovsky úplné.
Některé ezoterické programovací jazyky
Nejzajímavější ezoterické programovací jazyky a jejich specifika. U některých je uvedena ukázka kódu, většinou programem Hello world.
INTERCAL
INTERCAL je nejstarší ezoterický jazyk, navržený v roce 1972 Done Woodsem a Jamesem M. Lyonem, s jasným úmyslem odlišovat se od ostatních. Obsahuje například klíčové slovo „PLEASE“, které se mohlo vložit před jakýkoli příkaz a které v původní verzi ovlivňovalo „tón“, jímž interpreter oznamoval případné chybové hlášky. Vzdáleně připomíná jazyk symbolických instrukcí.
Brainfuck
Brainfuck je programovací jazyk tvořený toliko 8 příkazy bez parametrů, jimž je přiřazeno 8 nealfanumerických znaků. Programy v Brainfucku tak vypadají jako změť náhodných znaků.
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
FALSE
FALSE je další z ezoterických jazyků, založených na zásobníku a operacích s ním, velmi redukované instrukční sadě, obfuskaci kódu. Zajímavé je též, že má patrně nejmenší kompilátor – do 1024 bajtů.
Příklad na vypsání prvočísel do 100:
99 9[1-$][\$@$@$@$@\/*=[1-$[%\1-$@]?0=[\$.' ,\]?]?]#
Befunge
Befunge je ezoterický jazyk mající vzdálenou podobnost s Brainfuckem a podobnými. Stejně jako ony je vybaven zásobníkem a příkazy pro práci s ním. Jeho specifikem je to, že běh programu může zdrojovým kódem „cestovat“ podle šipek být navigován.
"dlroW olleH">:v ^,_@
Whitespace
Whitespace je jazyk, jehož programy jsou zapisovány s použitím pouze tří znaků, z nichž ani jeden není v textu vidět.
LOLCODE
LOLCODE je jazyk vytvořený jako parodie k internetovému fenoménu „Lolcatz“. Vzdáleně připomíná jazyk C, ale jeho příkazy a klíčová slova jsou často zkomolená.
HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
Thue
Thue je ezoterický jazyk s pouhým jedním příkazem se dvěma operandy. Přesto je turingovsky úplný, ba navíc může být použit k rozeznání a definici jazyků úrovně Type-0 Chomského hierarchie.
Piet
Piet je programovací jazyk, jehož programy jsou čteny/zakódovávány do obrázků o 20 základních barvách. V tomto případě se obor programovacích jazyků snoubí s disciplínou steganografie.
Velato
Velato bere vstup svých programů z rozhraní MIDI, kde pauza mezi nimi určuje každý další příkaz.
Chef
Programy v jazyku Chef (anglicky šéfkuchař) připomínají kuchařské recepty (s tímto úmyslem byl také navržen). Opět zde figuruje zásobník, který je v tomto případě ztělesněn mixérem. Například, vylití jeho obsahu do pekařské formy znamená výňatek obsahu zásobníku a poslání ho na systémový výstup.
Shakespeare
V Shakespeare jsou programy kamuflovány do divadelních her. Scénické poznámky (např. když někdo vstupuje na scénu nebo z ní odchází) slouží jako příkazy nebo direktivy; jiná data jsou pak skryta v použitých slovech (Rozlišuje se například, jsou-li citově neutrální, pozitivní nebo negativní).
Taxi
Programy v ezoterickém jazyku Taxi (podobně jako v Chefu či Shakespearovi) konvenční zdrojový kód nepřipomínají a místo toho vypadají jako kniha jízd či popis instrukcí taxikáře. Jednotlivá místa, kam má zajet, znamenají jednotlivé operace, které má taxikář (běh programu) provést (například pošta znamená standardní vstup/výstup, zajet po práci do garáže znamená ukončit program). Jednotliví cestující, kteří využijí jeho služeb, jsou ve skutečnosti prvky v zásobníku (jejich naložení a vyložení tak představuje operace push
a pop
). Jména lokací a jim odpovídající příkazy jsou uvedeny v mapě Townsville.
Příklad na vynásobení dvou čísel uživatelským vstupem:
Go to the Post Office: west 1st left, 1st right, 1st left. Pick up a passenger going to Multiplication Station. Pick up another passenger going to Multiplication Station. Go to Multiplication Station: south 1st left, 3rd left. Pick up a passenger going to the Post Office. Go to the Post Office: south 1st left, 3rd right. Go to the Taxi Garage: north 1st right, 1st left, 1st right.
Co je pro Taxi zcela specifické, je to, že programátor musí myslet i na benzín, který musí čas od času tankovat. Pokud tak nebude dělat, program skončí neúspěchem. Tato koncepce je podobná hardwarovému řešení zvanému Watchdog timer, jen v poetičtější podobě.
OstraJAVA
OSTRAJava má za cíl pozvednout kvalitu (nejen ostravského) programování. Na rozdíl od Javy vychází OSTRAJava přímo z mluveného jazyka (ostravského nářečí), tedy z něčeho čemu obyčejní lidé rozumějí. Typický ostravský horník pak nebude mít problém přejít od těžby uhlí ke klávesnici. Jazyk tak mimo jiné řeší i problém nezaměstnanosti v Moravskoslezsku.
Odkazy
Reference
V tomto článku byl použit překlad textu z článku Esoteric programming language na anglické Wikipedii.
Externí odkazy
- Obrázky, zvuky či videa k tématu ezoterický programovací jazyk na Wikimedia Commons
- http://esolangs.org/wiki/Main_Page
- Github repozitář pro OstraJAVU