Nejšílenější programovací jazyky

Programovacích jazyků existuje spoustu. Některé se využívají hodně, některé jsou specializované na určitou sadu problémů a některé existují jenom proto, že se někdo nudil. A takových jazyků je snad nejvíc. Další ze série NEJ programovacích jazyků jsou „Nejšílenější programovací jazyky“. Ano, vím, že se oficiálně nazývají „esoterické programovací jazyky“, ale nikdo z nás jim tak doopravdy neříká.

Vybral jsem z té plejády blbostí a kravin sedm největších kuriozit, samozřejmě s ukázkou v podobě Hello World. Někdy je tento program na tři řádky a někdy je na tři strany, někde jsem se tedy rozhodl kód zkrátit. Tak se, prosím, nepokoušejte tyto kódy odevzdat na progtest. Děkuji.

ArnoldC

ArnoldC je imperativní programovací jazyk, jehož kód je složený z filmových hlášek Arnolda Schwarzennegera. Tady snad není moc co popisovat a pár ukázek bude mluvit za vše:

If-else:

Načtení ze standardního vstupu:

Hello World:

Odkaz na github: https://github.com/lhartikk/ArnoldC/wiki/ArnoldC

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 rudy ke klávesnici. Jazyk tak mimo jiné řeší i problém nezaměstnanosti v Moravskoslezsku.

Deklarace proměnné začíná klíčovým slovem „toz“ a místo středníků se používá klíčové slovo „pyco“. Deklarace proměnné typu int je tedy:

A to, že třída Čtverec dědí od třídy Obdélník zapíšeme jako:

Hello World:

Odkaz na bitbucket: https://github.com/tkohout/OSTRAJava

Taxi

Podle tvůrců tohoto jazyka jsou programátoři jako taxikáři – „převáží“ data z jedné části paměti do druhé. Tak proč nevytvořit programovací jazyk, co tomu odpovídá?

Se svým imaginárním taxíkem budete projíždět městečkem Townsburg, které je plné dat, potřebných převézt z místa na místo. Naštěstí máte k dispozici mapu celého městečka, takže je pro vás práce jednoduchá.

V městečku jsou ulice s názvy jako Addition Alley (Sčítací ulice), kde se dva číselní pasažéři sečtou, Heisenberg’s (Heisenbergova), kde naberete náhodné celé číslo, nebo Cyclone (Cyklon), kde jsou všichni pasažéři naklonováni, takže máte od každého pasažéra originál a kopii.

Tím to ale nekončí. Jako správní taxikáři ale vybíráte od pasažérů peníze (0,07 kreditů za míli) a za peníze si musíte kupovat benzín. Pokud nebudete pravidelně jezdit k pumpě, budete mít prázdnou nádrž a program nedoběhne.

Hello World:

Odkaz na github: https://bigzaphod.github.io/Taxi/

Shakespeare

Jak asi většina z vás pochopila, kód v jazyce Shakespeare nemá vypadat jako kód, ale jako hra od stejnojmenného anglického dramatika.

Kód začíná seznamem postav, které deklarují počet zásobníků. Když spolu dvě postavy pak vedou dialog, tak pracují s horním prvkem zásobníku stejně tak, jako v jakémkoliv jiném jazyce. Otázky kladené jednotlivými postavami jsou pak brané jako podmínky if-else.

Jednotlivé akty jsou goto návěstí, na které se dá odkazovat v rámci celého kódu. Postavy, stejně jako v dramatu, vcházejí a odcházejí ze scény a určitá slova v jejich dialozích jsou klíčová slova pro různé matematické úkony.

Stejně tak jako reálná Shakespearova dramata, ani tento kód není úplně nejlehčí na pochopení. No, posuďte sami.

Hello World:

Odkaz na sourceforge: http://shakespearelang.sourceforge.net/

LOLCODE

Tento jazyk je inspirovaný takzvaným lolspeakem, jazykem používaným v internetovém meme zvaném lolcat. Tento jazyk úplně nemá definované priority operátorů a srávnou syntaxi, ale zjevně to nikomu nevadí.

Příklad if-else:

Hello world:

Odkaz na github: https://github.com/justinmeza/lolcode-spec/blob/master/v1.2/lolcode-spec-v1.2.md

brainfuck

Asi nejznámější z esoterických jazyků, díky kterému se s takovýmito šílenostmi roztrhl pytel. Byl vytvořen Urbanem Müllem, jehož cílem bylo vytvořit nejmenší kompilátor pro programovací jazyk (nyní má jeho verze kompilátoru pod 200 bytů).

Brainfuck pracuje s polem paměťových bloků, které jsou na začátku inicializovány na nulu, na první prvek ukazuje ukazatel. Dále se v jazyce využívají pouze tyto příkazy:

Příkaz Popis
> Posune ukazatel doprava
< Posune ukazatel doleva
+ Inkrementuje paměťový blok, na který ukazuje ukazatel
Dekrementuje paměťový blok, na který ukazuje ukazatel
. Vypíše znak, odpovídající hodnotě uložené v paměťovém bloku
, Uloží znak do paměťového bloku
[ Přeskočí za odpovídající ] pokud je hodnota rovna nule
] Přeskočí na odpovídající [ pokud je hodnota rozdílná od nuly

Protože se jeho název některým lidem zdál jako urážející, často jej můžete nalézt také jako b****fuck.

Hello world:

Whitespace

Tento jazyk by si progtestuneznalí prváci rozhodně zamilovali. Využívají se v něm totiž pouze bílé znaky (whitespace), tedy mezery, tabulátory a nové řádky.

Zajímavosti je, že whitespace jako jeden z mála programovacích jazyků ignoruje neplatné znaky (tedy cokoliv kromě whitespace). Díky tomu můžete například v rámci programu v jazyce Java najít funkční program v jazyce whitespace. Yo dawg, I heard you like codes so I put code in your code so you can segfault while you segfault.

Hello world:

SdíletShare on Facebook7Share on Google+0Tweet about this on TwitterEmail this to someone

Tomáš Nováček

Jsem ve svém živlu, když můžu být vždy a všude, nejlépe na nějaké vedoucí pozici, protože rád zadávám úkoly a hlavně se rád poslouchám. Proto jsem se kromě šéfredaktorování Buď FIT stal také vedoucím fakultního Seznamováku, organizátorem 111. narozenin, či zakladatelem FIT++. Kontaktovat mě můžete na novacto3@fit.cvut.cz.