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.
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í: 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.chiqrsx9+.pl, zdrojový kód intrepretru v němž byl jazyk definován Ørjanem Johansenem 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. V každé implementaci se přesná funkce tedy může lišit. V té původní se přidá ke každému písmenu náhodné číslo a spustí tato instrukce v jazyce Perl. V jiné se přidá ke každému písmenu číslo 7 a opět spustí instrukce v Perlu.
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.
HQ9F+ a FHQ9+- Tyto dva jazyky přidávají operátor F, který vypíše čísla od 1 do 100 s tím, že čísla dělitelná třemi nahradí Fizz a čísla dělitelná pěti Buzz. Obě varianty se liší pouze přítomností nebo absencí operátoru -.
+ Extrémně minimalistická varianta, kde existuje pouze příkaz +. Ostatní znaky jsou ignorovány.
HI9+ Tato varianta má místo příkazu Q příkaz I, lišící se v tom, že funguje pouze u interpretované varianty. U kompilované varianty vypíše „I can't bel1eve 1t's not qu1ne!“
Reference
Externí odkazy Autorova stránka o HQ9+ v archive.org Online Interpret HQ9+
Kategorie:Programovací jazyky Kategorie:Ezoterické programovací jazyky Kategorie:Parodie