Ezoterický programovací jazyk
Author
Albert FloresEzoterický 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. +more 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. +more 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
Vypsání slova „Piet“ ve stejnojmenném jazyku. +more 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. +more 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ř. +more 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). +more 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. +more 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. +more 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í. +more 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
Externí odkazy
http://esolangs.org/wiki/Main_Page * [url=https://github.com/tkohout/OSTRAJava]Github repozitář pro OstraJAVU[/url]