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
aFalse
jazyk obsahujeFact
aLie
- 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
aP
S
vzbudí program zo spánkuP
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ťazcuGlyn(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 konzolyBrie
= 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ť:)