HQ9+

HQ9+ — жартівлива мова програмування, створена Кліфом Біффлом (Cliff Biffle), яка складається з чотирьох команд, кожна з яких представляє один символ: H, Q, 9, та +. Ця мова не є повною за Т'юрингом.

  • Команда H виводить повідомлення Hello, world!;
  • Команда Q виводить вихідний код програми, яка виконується (тобто, квайн);
  • Команда 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). У ній додано нову команду, ++, яка збільшує лічильник двічі та створює об'єкт. Дотримуючись принципу приховування інформації, неможливо отримати доступ до цього об'єкта.

Посилання[ред. | ред. код]