Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Esoterické programovací jazyky

Definice esoterického programovacího jazyka, neboli esolangu, je velmi vágní. V podstatě je to cokoliv, co bylo myšleno jako žert, parodie či pouze ověření nějaké domněnky. Pro lepší názornost uvedu několik příkladů.

Feta

Prvním jazykem, který si ukážeme, je Feta:

  • pouze jedna instrukce: WRITE
  • pokud uživatel zadá WRITE, vypíše H3110 W0R1D do souboru "0WTPWT.txt"
  • pokud uživatel zadá cokoliv jiného, program nevypíše nic

Tento jazyk lze implementovat opravdu spoustu způsoby, jakýkoliv jazyk je vhodný (kromě Fety...). Zde přidávám odkaz na wiki jazyka Feta: https://esolangs.org/wiki/Feta

Ukázka kódu

Tento kód tedy vypíše H3110 W0R1D do souboru "0WTPWT.txt":

WRITE

Trumpscript

Ať už jste příznivci nebo odpůrci, neberte to nijak politicky zabarvené, jen se bavte. Vlastnosti Trumpscriptu jsou takové:

  • v tomto jazyku musí mít všechny číselné hodnoty více, než milion
  • místo True a False jazyk obsahuje Fact a Lie
  • errorové hlášky jsou přímo Trumpovy výroky
  • nesmíte mít více souborů ani žádný IMPORT, Trump neuznává nic, co si Američané sami nenakódí v USA
  • každý program musí končit America is great!

Odkaz na github jazyka: https://github.com/…/TrumpScript

Ukázka kódu

Zde je jeho implementace, která se dost rozrostla, takže třeba sama někdy v tichosti vypne a nikomu nic neřekne atd...

What are we in this country
Hillary speaks nothing but lies
But look at me I came to this election to make guys
believe again
believe in fact
if, all of us real lies the light; : say "VOTE TRUMP" !
but I know we should be free
else the result will be bad: all the work of George
Washington was for nothing
so this election say "Hello World" say "TRUMP FOR PRESIDENT"!
America is great.

Danica

Příklad omezeného jazyka s pekelným vstupem pro programátora je Danica.

  • Danica umí jen 5 příkazů:
    • Print (vypiš),
    • Compare (porovnej),
    • Read (přečti),
    • Greater (je větší) a
    • Smaller (je menší)
  • celý vstup se jí musí předat v F-kách.

Ukázka kódu

Zde je příklad programu "Hello world!":

ffffffffffffffff ffffffffffffffff ffffffff ffffffffffffff fffffffffffffffffff hello world!

Jazyk se zakóduje pomocí jednoduchého pravidla. Umístění v abecedě = počet f:

a = f
b = ff
c = fff
d = ffff
e = fffff
f = ffffff
g = fffffff
h = ffffffff
i = fffffffff
.
.
.

Příklad interpreteru je zde: https://raw.githubusercontent.com/…terpreter.py

Nil

Představuji nihilistický programovací jazyk. Ať mu dáte jakýkoliv vstup, on ho ignoruje.

Ukázka kódu

Validní kód:

Život plyne a smrt je stále blíž a blíž... A pak přijde prázdnota...

Ummm...

Tento jazyk je vhodný pro ty, co zapomínají. Tento jazyk je na tom podobně.

  • Má dva příkazy: S a P
  • S vzbudí program ze spánku
  • P vytiskne výstup... Poslední slovo však zapomene a místo něj vytiskne ummm...
  • Pokud to budete chtít obejít a vytisknout jen jedno slovo, program zase usne...

Ukázka kódu

S
P "Hello, world!"

TroJavaScript

Tento jazyk má úplně stejnou syntax jako Javascript, ale obsahuje trojského koně, takže dělá věci, které programátor nezamýšlel... Kód zde z bezpečnostních důvodů neukážeme.

Huby

Jazyk vhodný pro výuku programování pro věčné začátečníky.

  • Každá funkce v jazyce Huby musí mít název, závorky a určitý počet parametrů, třeba h();
  • Každý příkaz musí být ukončen středníkem, třeba h();
  • Je to interpretovaný jazyk, takže není potřeba zavádět třídy, importy ani nic podobného
    • Toto je třeba validní kód v tomto jazyce: h();
  • A to je vše

Ano, tento jazyk umí jen jednu funkci - h();, která vypíše Hello World!

Ukázka kódu

Překvapivě bude ukázka kódu pouze funkce h();

h();

Cheese++

Tento programovací jazyk má úplnou syntaxi, jen trochu pozměněnou...

  • Cheese = Begin ({)
  • NoCheese = End (})
  • Wensleydale() = Print (tiskni do konzole)
  • Swiss = uvozovky, vždy musí předcházet a následovat textovému řetězci
  • Glyn(operation) = to je funkce, která dosazuje hodnotu (viz níže)
  • Cheddar...Coleraine = repeat ... until
  • Stilton...Blue...White = if ... then...else
  • Belgian = vytiskne celý program do konzole
  • Brie = ukončuje řádku, část kódu

Ukázka kódu

Příklad programu "Hello world!":

Cheese
   Wensleydale(SwissHello World!Swiss)Brie
NoCheese

Deklarace proměnné:

Glyn(                         // uvozuje deklaraci
 VarName(value)               // deklaruje proměnnou VarName s hodnotou 'value'
)
Brie                          // ukončovací znak (jako středník)

Snížení hodnoty proměnné o 1:

Glyn(VarName = Varname - 1)Brie

Tento jazyk zatím kompiler nemá, ale přesto má dobře udělanou stránku na wiki, tak sdílím odkaz: https://esolangs.org/…Cheese%2B%2B

evil

Abychom zakončili naše příklady něčím opravdu složitým, zde je jazyk evil. Tento jazyk je prostě evil...

Ukázka kódu

Ukázka klasického programu Hello, world!:

zaeeeaeeew   (H)
zaeeaeeaeaw  (e)
zuueeueueaw  (l)
zuueeueueaw  (l)
zuueeueew    (o)
zuueeaeeeaw  (,)
zaeeeeew     ( )
zuueeueeeew  (w)
zuueeueew    (o)
zuueeueeaaaw (r)
zuueeueueaw  (l)
zaeeaeeaew   (d)
zaeeeeeaw    (!)
zaeeuuuw     (\r)
zaeaaaaaaw   (\n)

Je to příklad opravdu propracovaného jazyka, pro zájemce doporučuji nahlédnout, ale nepokoušet se pochopit...: https://esolangs.org/wiki/Evil

Populární problémy, co mají esoterické jazyky vyřešit

Po úvodu a ukázkách kódu přichází zhodnocení. Jak poznat že můj esoterický jazyk je kvalitní? Někdy stačí, že je vtipný, viz. Cheese++. Někdy stačí, že je minimalistický. Přesto je ale několik úloh, které chceme, aby esoterické jazyky měly:

  • Každý slušný jazyk by měl vypsat Hello world!
  • Je super, pokud jazyk umí vypsat sám sebe (svůj zdrojový kód) tzv. Quine
  • Je super, pokud jazyk umí vypsat vstupní parametry na výstup, tzv. Cat (přečti 3 a vypiš 3)

Pokud byste někdy rádi vytvořili vlastni esoterický jazyk, meze se nekladou. Pokud by byl zájem, můžeme si takovou tvorbu ukázat :)


 

Všechny články v sekci
Ezoterické programovací jazyky
Článek pro vás napsal Ondřej Michálek
Avatar
Uživatelské hodnocení:
5 hlasů
Autor se věnuje teoretické informatice. Ve svých volných chvílích nepohrdne šálkem dobrého čaje, kaligrafickým brkem a foukací harmonice.
Aktivity