Мова програмування HQ9+
HQ9+ — жартівлива мова програмування, створена Кліфом Біффлом (Cliff Biffle), яка складається з чотирьох команд, кожна з яких представляє один символ: H, Q, 9, та +. Ця мова не є повною за Т’юрингом.
- Команда H виводить повідомлення Hello, world!;
- Команда Q виводить вихідний код програми, яка виконується (тобто, quine);
- Команда 9 виводить слова віршика 99 Bottles of Beer on the Wall;
- Команда + збільшує на одиницю (інкрементує) лічильник, який не має ніякої можливості подальшого застосування.
Приклад програми на HQ9+: HHQ+HQ++
Ця программа виведе Hello, world! Hello, world! HHQ+HQ++ Hello, world! HHQ+HQ++ та збільшить лічильник три рази.
Вважається, що усі корисні програми написані на HQ9+ працюють вдвічі швидше, ніж ці ж програми написані будь якою іншою мовою програмування. Оскільки жодної корисної програми на HQ9+ написати не можна, то це є безмістовною правдою.
HQ9+ — це жарт; кожна команда представляє собою звичайне завдання, яке виконує початківець, коли вчиться програмувати, або програміст, коли вивчає нову мову програмування. Звичайна вправа, наприклад, написати программу, яка виводить повідомлення Hello, world!. Існують деякі мови програмування, на яких це справді важко зробити, однак для HQ9+ це елементарне завдання, оскільки програма H виконає його. Одне з найважчих завдань на багатьох мовах програмування — це вивести quine (власний вихідний код). Але на HQ9+ ця вправа також стає тривіальною.
Інтерпретатор для HQ9+ дуже легко написати, тому їх було створено дуже багато. Наприклад, інтерпретатор HQ9+ на Python був написаний приблизно за 5 хвилин та має всього лиш 18 рядків. Також існує компілятор HQ9+ написаний на Сі, який переводить вихідний код з HQ9+ на Сі та містить лише 40 рядків.
Оскільки HQ9+ не підтримують ввід даних, то не можливо на мові HQ9+ написати інтерпретатор чи компілятор до мови HQ9+.
Існує також інша жартівлива мова програмування HQ9++, відома також як HQ9+ з Класами, об’єктно-орієнтована версія, створена Девідом Морган-Маром (David Morgan-Mar). У ній додано нову команду, ++, яка збільшує личильник два рази та створює об’єкт. Дотримуючись принципу приховування інформації, неможливо отримати доступ до цього об’єкту.