HQ9+

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 2. března 2019; kontroly vyžadují 8 úprav .

HQ9+  je esoterický programovací jazyk vytvořený Cliffem Bifflem, který se skládá ze čtyř příkazů , z nichž každý představuje jeden znak : H , Q , 9 a + . Tento jazyk není Turing kompletní .

Příkazy

Obecné informace

HQ9+ je vtipný jazyk, jehož každý příkaz je běžnou úlohou , kterou začínající programátor provádí , když se učí programovat nebo když se učí nový programovací jazyk . Běžným cvičením je napsat program, který vytiskne zprávu Hello, world! ". Existují některé programovací jazyky, kde je to opravdu obtížné, ale pro HQ9+ je to základní úkol, příkaz H zobrazí tuto zprávu. Jedním z nejobtížnějších úkolů pro mnoho programovacích jazyků je vytvořit quine (program, který vydává svůj vlastní kód). Na HQ9+ se tyto úkoly stávají triviálními.

Interpret pro HQ9+ se píše velmi snadno, takže jich vzniklo hodně. Například interpret HQ9+ Python byl napsán asi za 5 minut a má pouze 16 řádků. Existuje také překladač napsaný v C , který přeloží zdrojový kód HQ9+ do C pouze na 40 řádcích.

Existuje také další vtipný programovací jazyk, HQ9++ , také známý jako HQ9+ s třídami, objektově orientovaná verze vytvořená Davidem Morgan-marem. Přidá nový příkaz ++, který zdvojnásobí počítadlo a vytvoří objekt. V souladu se zásadou skrývání informací není přístup k tomuto objektu možný.

Navíc je zde jazyk HQ9± , ve kterém je oproti HQ9++ přidán operátor ' - ' pro kontrolu správnosti programu. Výsledky kontroly závisí na umístění operátora:

Příklady

Zdroj Závěr
H Ahoj světe!
ústředí Ahoj světe!
ústředí
QQQQ QQQQ
QQQQ
QQQQ
QQQQ
Q+Q+Q Q+Q+Q
Q+Q+Q
Q+Q+Q

Implementace

Implementace jazyka je velmi jednoduchá. Následuje implementace interpretu v Pythonu.

first_string_pattern = ' {0} {1} piva na zdi, {0} {1} piva.' second_string_pattern = 'Sejměte jednu a dejte ji kolem, {} {} piva na zdi.' čítač = 0 zdroj = vstup () for c in source : if c == 'H' : print ( 'Ahoj světe!' ) elif c == 'Q' : print ( source ) elif c == '9' : for bottle in range ( 99 , 0 , - 1 ): with_right_postfix = 'lahve' pokud lahev != 1 else tisk 'lahve' ( prvni_string_vzor . format ( lahev , with_right_postfix )) with_right_postfix = 'lahve' pokud lahev - 1 != 1 else tisk 'lahve ' ( druh_vzor_strunu_formatu . ( láhev - 1 if bottle - 1 != 0 else 'no more' , with_right_postfix )) print () print ( 'Už žádné lahve piva na zdi, žádné lahve piva.' ) print ( 'Jít do obchodu a koupit si ještě 99 lahví piva na zeď.' ) elif c == '+' : čítač += 1 else : print ( 'Chyba syntaxe!' )

Implementace v C++ :

#include <iostream> #include <conio.h> pomocí jmenného prostoru std ; int main () { systém ( "titul HQ9+" ); int pocet = 0 ; zdroj řetězce ; char ch ; cout << "Zdroj: " ; cin >> zdroj ; systém ( "cls" ); for ( int i = 0 ; i < zdroj . velikost (); i ++ ) { ch = zdroj [ i ]; if ( ch == 'H' ) { cout << "Ahoj světe!" << endl ; } else if ( ch == 'Q' ) { cout << zdroj << endl ; } else if ( ch == '9' ) { pro ( int pivo = 99 ; pivo > 1 ; pivo -- ) { cout << pivo << " lahve piva na zeď, " << pivo << " lahve piva" << endl ; cout << "Sejmi jednu, dej ji kolem, " << pivo - 1 << " lahve piva na zeď!" << endl ; cout << endl ; } cout << "1 láhev piva na zeď, 1 láhev piva." << endl ; cout << "Sundej si jednu a dej si ji kolem, žádné další lahve piva na zdi." << endl ; cout << endl ; cout << "Už žádné lahve piva na zdi, žádné lahve piva." << endl ; cout << "Jdi do obchodu a kup si ještě, 99 lahví piva na zeď." << endl ; } else if ( ch == '+' ) { počítat ++ ; } jinak { cout << "Chyba syntaxe!" << endl ; } } getch (); návrat 0 ; }

Odkazy

Poznámky

  1. Text básně Archivováno 27. srpna 2008 na Wayback Machine