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:
BECAUSE I'M GOING TO SAY PLEASE value
[statements]
BULLSHIT
[statements]
YOU HAVE NO RESPECT FOR LOGIC
Načtení ze standardního vstupu:
I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY
Hello World:
IT'S SHOWTIME
TALK TO THE HAND "hello world"
YOU HAVE BEEN TERMINATED

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:

toz cyslo i = 1 pyco

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

tryda Stverec fagan od Obdelnik
Hello World:
banik pyco
   tryda Ostrava {
      rynek(){
         Konzola.pravit(„Toz vitaj“) pyco
      }
   }
fajront pyco

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:
"Hello, World!" is waiting at the Writer's Depot. 
Go to Writer's Depot: west 1st left, 2nd right, 1st left, 2nd left.
Pickup a passenger going to the Post Office.
Go to the Post Office: north 1st right, 2nd right, 1st left. 
Go to the Taxi Garage: north 1st right, 1st left, 1st right.

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:
Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.

Act I: Hamlet's insults and flattery.
Scene I: The insulting of Romeo.

[Enter Hamlet and Romeo]

Hamlet:
You lying stupid fatherless big smelly half-witted coward! You are as
stupid as the difference between a handsome rich brave hero and thyself!
Speak your mind!

You are as brave as the sum of your fat little stuffed misused dusty
old rotten codpiece and a beautiful fair warm peaceful sunny summer's
day. You are as healthy as the difference between the sum of the
sweetest reddest rose and my father and yourself! Speak your mind!
You are as cowardly as the sum of yourself and the difference
between a big mighty proud kingdom and a horse. Speak your mind.
Speak your mind!

[Exit Romeo]

Scene II: The praising of Juliet.

[Enter Juliet]

Hamlet:

Thou art as sweet as the sum of the sum of Romeo and his horse and his
black cat! Speak thy mind!
[Exit Juliet]

Scene III: The praising of Ophelia.

[Enter Ophelia]

Hamlet:

Thou art as lovely as the product of a large rural town and my amazing
bottomless embroidered purse. Speak thy mind!
Thou art as loving as the product of the bluest clearest sweetest sky
and the sum of a squirrel and a white horse. Thou art as beautiful as
the difference between Juliet and thyself. Speak thy mind!

[Exeunt Ophelia and Hamlet]

Act II: Behind Hamlet's back.

Scene I: Romeo and Juliet's conversation.

[Enter Romeo and Juliet]

Romeo:

Speak your mind. You are as worried as the sum of yourself and the
difference between my small smooth hamster and my nose. Speak your
mind!

Juliet:

Speak YOUR mind! You are as bad as Hamlet! You are as small as the
difference between the square of the difference between my little pony
and your big hairy hound and the cube of your sorry little
codpiece. Speak your mind!

[Exit Romeo]

Scene II: Juliet and Ophelia's conversation.

[Enter Ophelia]

Juliet:

Thou art as good as the quotient between Romeo and the sum of a small
furry animal and a leech. Speak your mind!

Ophelia:

Thou art as disgusting as the quotient between Romeo and twice the
difference between a mistletoe and an oozing infected blister! Speak
your mind!

[Exeunt]

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:
BOTH SAEM ANIMAL AN "CAT", O RLY?
YA RLY, VISIBLE "J00 HAV A CAT"
NO WAI, VISIBLE "J00 SUX"
OIC
Hello world:
HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

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:

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.