HQ9 +

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


1. Команди

  • Команда H виводить повідомлення Hello, world!;
  • Команда Q виводить вихідний код програми, яка виконується (тобто, quine);
  • Команда 9 виводить слова вірша 99 Bottles of Beer on the Wall [1];
  • Команда + збільшує на одиницю ( інкрементіруется) лічильник, який не має ніякої можливості подальшого застосування.

2. Загальні відомості

HQ9 + - це жартівливий мову, кожна команда якого являє собою звичайну задачу, яку виконує починаючий програміст, коли вчиться програмувати, або коли вивчає нову мову програмування. Звичайне вправа - написати програму, яка виводить повідомлення Hello, world!. Існують деякі мови програмування, на яких це дійсно важко зробити, однак для HQ9 + це елементарна задача, команда H виведе це повідомлення. Одна з найтяжче завдань для багатьох мов програмування - це вивести quine (власний код). На HQ9 + ці завдання стають тривіальними.

Інтерпретатор для HQ9 + дуже легко написати, тому їх було створено дуже багато. Наприклад, інтерпретатор HQ9 + на Python був написаний приблизно за 5 хвилин і має всього лише 16 рядків. Також існує транслятор, написаний на Сі, який переводить вихідний код з HQ9 + на Сі і містить лише 40 рядків.

Оскільки HQ9 + не підтримують введення даних, то неможливо на мові HQ9 + написати інтерпретатор або компілятор до мови HQ9 +.

Існує також інший жартівливий мова програмування HQ9 + +, відомий також як HQ9 + з Класами, об'єктно-орієнтована версія, створена Девідом Морган-Маром (David Morgan-mar). У ній додана нова команда, + +, яка збільшує лічильник два рази і створює об'єкт. У відповідності з принципом приховування інформації, доступ до цього об'єкта неможливий.

Крім того, існує мова HQ9 , в якому в порівнянні з HQ9 + + доданий оператор '-' для перевірки правильності програми. Результати перевірки залежать від місцезнаходження оператора:

  • якщо він стоїть першим символом в програмі, то це синтаксична помилка
  • після 'H' - відбувається помилка введення-виведення
  • після 'Q' - програма йде в нескінченну рекурсію (хороша реалізація повинна впасти після переповнення стека)
  • після '9 '- починається нескінченний цикл
  • після '+' - виробляється розподіл одиниці на нуль
  • після '+ +' - викидає віртуальне виключення, яке є методом нового підкласу стандартного суперкласу. У відповідності з кращими принципами приховування даних, не існує способу перехопити це виняток.

3. Приклади

Вихідний код Висновок
H Hello world!
HQ Hello world!
HQ
QQQQ QQQQ
QQQQ
QQQQ
QQQQ
Q + Q + Q Q + Q + Q
Q + Q + Q
Q + Q + Q