HQ9+
From Wikipedia, the free encyclopedia
HQ9+ is a joke programming language created by Cliff Biffle that consists of only four commands, each represented by a single character: H, Q, 9, and +. It is not Turing-complete, but it is highly efficient at certain types of programs.
- The
H
command prints out "Hello, world!" - The
Q
command prints out a copy of the source code of the program (i.e., it's a quine). - The
9
command prints out the lyrics for "99 Bottles of Beer on the Wall". - The
+
command increments the accumulator, which happens to serve no purpose.
An example HQ9+ program would be: HHQ+HQ++
.
This program would output "Hello, world! Hello, world! HHQ+HQ++ Hello, world! HHQ+HQ++" as well as incrementing the accumulator three times.
It is claimed that all useful programs written in HQ9+ run over twice as fast as the same programs written in any other language. Since no useful programs can be written in HQ9+, this is vacuously true.
HQ9+ is a joke; each command represents a common task that beginners are given when learning to program, or that programmers give themselves when learning a new programming language. A common exercise, for example, is to write a computer program that prints "Hello, world!". There are some programming languages in which this is actually difficult; however, in HQ9+ the task is elementary, since the program "H" will accomplish the task. One of the hardest tasks in many programming languages is to write a quine, that is, a program which prints its own source code. However, in HQ9+, this is also trivial.
HQ9+ interpreters are extremely simple to write, so there have been many written. For example, this HQ9+ interpreter was written (in Python) in around five minutes and is only 18 lines long. And, this HQ9+ compiler written in C translates source code from HQ9+ to C, and is only about 40 lines long.
Since HQ9+ programs do not accept input, it is not possible to write an HQ9+ interpreter or compiler in HQ9+.
There is also another joke language called HQ9++, also known as HQ9+ with Classes, an object-oriented version created by David Morgan-Mar. This adds a new command, ++
, which increments the accumulator twice and instantiates an object. Following the principle of information hiding, it is not possible to access this object.