BLACK FRIDAY! Slevy až 80 % jsou všude. Tak je nepropásni a přejdi do rostoucího IT oboru!
The real BF 2020

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!
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

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 Tricerator
Avatar
Jak se ti líbí článek?
4 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 (6)

 

 

Komentáře

Avatar
Jan Procházka:7. září 18:56

Trochu mi chybí (ne)zmínka o OstraJavě. Fajront.

 
Odpovědět
7. září 18:56
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Jakub Hroník:11. září 20:55

Trochu škoda, že tu nemá zmínku otec všech ezojazyků, INTERCAL.

 
Odpovědět
11. září 20:55
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.