Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Ezoterickej programovacie jazyky

Definícia ezoterického programovacieho jazyka, čiže esolangu, je veľmi vágny. V podstate je to čokoľvek, čo bolo myslené ako žart, paródie či iba overenie nejaké domnienky. Pre lepšiu názornosť uvediem niekoľko príkladov.

Feta

Prvým jazykom, ktorý si ukážeme, je Feta:

  • iba jedna inštrukcie: WRITE
  • pokiaľ užívateľ zadá WRITE, vypíše H3110A W0R1D do súboru "0WTPWT.txt"
  • pokiaľ užívateľ zadá čokoľvek iné, program nevypíše nič

Tento jazyk je možné implementovať naozaj veľa spôsoby, akýkoľvek jazyk je vhodný (okrem fety ...). Tu pridávam odkaz na wiki jazyka Feta: https://esolangs.org/wiki/Feta

Ukážka kódu

Tento kód teda vypíše H3110A W0R1D do súboru "0WTPWT.txt":

WRITE

Trumpscript

Či už ste priaznivci alebo odporcovia, neberte to nijako politicky zafarbené, len sa bavte. Vlastnosti Trumpscriptu sú také:

  • v tomto jazyku musia mať všetky číselné hodnoty viac, než milión
  • miesto True a False jazyk obsahuje Fact a Lie
  • errorové hlášky sú priamo Trumpová výroky
  • nesmiete mať viac súborov ani žiadny IMPORT, Trump neuznáva nič, čo si Američania sami nenakódí v USA
  • každý program musí končiť America is great!

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

Ukážka kódu

Tu je jeho implementácia, ktorá sa dosť rozrástla, takže treba sama niekedy v tichosti vypne a nikomu nič nepovie 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

Príklad obmedzeného jazyka s pekelným vstupom pre programátora je Danica.

  • Danica vie len 5 príkazov: Print (vypiše),

    Compare (porovnaj),

    Read (prečítaj),

    Greater (je väčšia) a

    Smaller (je menšia)

  • Print (vypiše),
  • Compare (porovnaj),
  • Read (prečítaj),
  • Greater (je väčšia) a
  • Smaller (je menšia)
  • celý vstup sa jej musí odovzdať v F-kách.

Ukážka kódu

Tu je príklad programu "Hello world!":

ffffffffffffffff ffffffffffffffff ffffffff ffffffffffffff fffffffffffffffffff hello world!

Jazyk sa zakóduje pomocou jednoduchého pravidla. Umiestnenie v abecede = počet f:

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

Príklad interpreter je tu: https://raw.githubusercontent.com/...terpreter.py

Nil

Predstavujem nihilistický programovací jazyk. Nech mu dáte akýkoľvek vstup, on ho ignoruje.

Ukážka 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ý pre tých, čo zabúdajú. Tento jazyk je na tom podobne.

  • Má dva príkazy: S a P
  • S vzbudí program zo spánku
  • P vytlačí výstup ... Posledné slovo však zabudne a namiesto neho vytlačí ummm...
  • Ak to budete chcieť obísť a vytlačiť len jedno slovo, program zase zaspí ...

Ukážka kódu

S
P "Hello, world!"

TroJavaScript

Tento jazyk má úplne rovnakú syntax ako Javascript, ale obsahuje trójskeho koňa, takže robí veci, ktoré programátor nezamýšľal ... Kód tu z bezpečnostných dôvodov neukážeme.

Huby

Jazyk vhodný pre výučbu programovania pre večných začiatočníkov.

  • Každá funkcia v jazyku Huby musí mať názov, zátvorky a určitý počet parametrov, napríklad h();
  • Každý príkaz musí byť ukončený bodkočiarkou, treba h();
  • Je to interpretovaný jazyk, takže nie je potreba zavádzať triedy, importy ani nič podobné Toto treba validný kód v tomto jazyku: h();
  • Toto treba validný kód v tomto jazyku: h();
  • A to je všetko

Áno, tento jazyk vie len jednu funkciu - h();, Ktorá vypíše Hello World!

Ukážka kódu

Prekvapivo bude ukážka kódu iba funkcie h();

h();

Cheese ++

Tento programovací jazyk má úplnú syntax, len trochu zmenenú ...

  • Cheese = Begin ({)
  • NoCheese = End (})
  • Wensleydale() = Print (vytlačiť do konzoly)
  • Swiss = úvodzovky, vždy musí predchádzať a nasledovať textovému reťazcu
  • Glyn(operation) = to je funkcia, ktorá dosadzuje hodnotu (pozri nižšie)
  • Cheddar...Coleraine = repeat ... until
  • Stilton...Blue...White = if ... then...else
  • Belgian = vytlačí celý program do konzoly
  • Brie = ukončuje riadku, časť kódu

Ukážka kódu

Príklad programu "Hello world!":

Cheese
   Wensleydale(SwissHello World!Swiss)Brie
NoCheese

Deklarácia premenné:

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

Zníženie hodnoty premennej o 1:

Glyn(VarName = Varname - 1)Brie

Tento jazyk zatiaľ kompiler nemá, ale napriek tomu má dobre urobenú stránku na wiki, tak zdieľam odkaz: https://esolangs.org/...Cheese%2B%2B

Evil

Aby sme zakončili naše príklady niečím naozaj zložitým, tu je jazyk evil. Tento jazyk je jednoducho evil ...

Ukážka kódu

Ukážka 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 príklad naozaj prepracovaného jazyka, pre záujemcov odporúčam nahliadnuť, ale nepokúšať sa pochopiť ...: https://esolangs.org/wiki/Evil

Populárne problémy, čo majú ezoterickej jazyky vyriešiť

Po úvode a ukážkach kódu prichádza zhodnotenie. Ako spoznať že môj ezoterický jazyk je kvalitný? Niekedy stačí, že je vtipný, viď. Cheese ++. Niekedy stačí, že je minimalistický. Napriek tomu je ale niekoľko úloh, ktoré chceme, aby ezoterické jazyky mali:

  • Každý slušný jazyk by mal vypísať Hello world!
  • Je super, ak jazyk vie vypísať sám seba (svoj zdrojový kód) tzv. Quine
  • Je super, ak jazyk vie vypísať vstupné parametre na výstup, tzv. Cat (prečítaj 3 a vypiše 3)

Ak by ste niekedy radi vytvorili vlastnu ezoterický jazyk, medze sa nekladú. Ak by bol záujem, môžeme si takú tvorbu ukázať:)


 

Všetky články v sekcii
Ezoterické programovacie jazyky
Článok pre vás napísal Ondřej Michálek
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
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