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

Посилання

[ред. | ред. код]