HQ9+
HQ9+ je parodický ezoterický programovací jazyk, navržený Cliffem Bifflem. Není turingovsky úplný, ale je vysoce efektivní pro některé základní programátorské úlohy.
Syntaxe
HQ9+ je tvořen čtyřmi příkazy, z nichž každý je kódován jedním znakem:
- Příkaz H vypíše „Hello, world!“.
- Příkaz Q vypíše zdrojový text programu (a tím umožňuje velmi efektivně napsat krátký program, který vypíše svůj vlastní zdrojový text, tzv. quine).
- Příkaz 9 vypíše text písně „99 Bottles of Beer on the Wall“. Tato úloha se často používá k ověření, jak elegantně lze skládat v jazyce cykly. Vysoká optimalizace HQ9+ ji umožňuje zvládnout pomocí jednoho znaku.
- Příkaz + zvýší o jedničku hodnotu akumulátoru.
Příklad
Příklad programu:
HHQ+HQ++
Tento program vypíše „Hello, world!Hello, world!HHQ+HQ++Hello, world!HHQ+HQ++“ a navíc třikrát inkrementuje akumulátor.
Další verze
HQ9++
Existuje objektové rozšíření jazyka, nazývané HQ9++, které vytvořil David Morgan-Mar. To přidává nový, zpětně kompatibilní příkaz ++, který zvýší hodnotu akumulátoru o dvě a navíc vytvoří instanci objektu. V souladu s principem zapouzdření k objektu nelze přistupovat.[1]
HQ9+-
Dalším jazykem vycházejícím z původního jazyka je HQ9+- od Ivana Melikampa, které je rozšířením HQ9++. Přidává příkaz -, který má zajišťovat ladění programu a jeho kvalitu kontroly. Tento příkaz vyvolává některé běžné programové chyby v závislosti na tom, na jakém místě se tento příkaz nachází:[2]
- Pokud je prvním operátorem, vyvolá syntaktickou chybu.
- Pokud mu předchází znak H, vyvolá I/O chybu.
- Pokud mu předchází znak Q, dostane se program do nekonečné rekurze.
- Pokud mu předchází znak 9, dostane se program do nekonečné smyčky.
- Pokud mu předchází znak -, zmenší hodnotu akumulátoru o jedna.
- Pokud mu předchází znak +, dělí jedničku nulou, ledaže předchozími znaky byl řetězec ++. V takovém případě vyvolá virtuální výjimku, která sama o sobě je metodou objektu nové podtřídy generické supertřídy. V souladu s principem zapouzdření dat neexistuje způsob jak tuto výjimku zachytit.
CHIQRSX9+
CHIQRSX9+ je turing-kompletní verzí původního jazyka, která jej rozšiřuje o další příkazy. Vytvořil ji Ørjan Johansen 3.–5. dubna 2002.[3] Přidává tyto příkazy:
- Příkaz C zkopíruje vstup na výstup.
- Příkaz I interpretuje vstup jako zdrojový kód programu napsaného v CHIQRSX9+.
- Příkaz R zakóduje vstup pomocí ROT13.
- Příkaz S seřadí vstupní řádky.
- Příkaz X udělá jazyk turing-kompletním, přičemž není definováno, jak toho má být dosaženo.
H9+
Jazyk H9+ je totožný s jazykem HQ9+ s tím rozdílem, že je vypuštěn příkaz Q. Pro zachování stejné funkcionality je každý znak jiný než H, 9 nebo + ignorován. Pro vytvoření quine je potřeba například následný zdrojový kód:
Hello, world!
HQ9+2D
Jazyk HQ9+2D obsahuje oproti originální verzi ještě čtyři příkazy ^, v , > a < které slouží k posunu čítače instrukcí daným směrem. Ten začíná na prvním bajtu programu a jeho posunem je možné přeskakovat příkazy, nebo se k nim vracet. Program po skoku pokračuje normálně z cíle skoku, čili nevrací se na původní místo skoku.
Reference
- DAVID, Morgan-Mar. HQ9++ [online]. [cit. 2011-07-23]. Dostupné online. (anglicky)
- MELIKAMP, Ivan. HQ9+- [online]. 2007-01-12 [cit. 2011-07-23]. Dostupné online. (anglicky)
- chiqrsx9+.pl, zdrojový kód intrepretru v němž byl jazyk definován Ørjanem Johansenem