Revision 102211419 of "HQ9+" on enwiki

'''HQ9+''' is a [[joke programming language]] created by [[Cliff Biffle]] that consists of only four [[command (computing)|commands]], each represented by a single character: H, Q, 9, and +.  It is not [[Turing-complete]], but it is allows highly efficient programs, as long as they need do nothing except increment their accumulator, print "Hello, world", display their source, or output the lyrics 99 Bottles of Beer.

* The <code>H</code> command prints out [[Hello world program|"Hello, world!"]]
* The <code>Q</code> command prints out a copy of the [[source code]] of the program (i.e., it's a [[quine (computing)|quine]]).
* The <code>9</code> command prints out the lyrics for "[[99 Bottles of Beer|99 Bottles of Beer on the Wall]]".
* The <code>+</code> command increments the [[Accumulator (computing)|accumulator]], which happens to serve no purpose.

An example '''HQ9+''' program would be:  <code>HHQ+HQ++</code>.

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 [[vacuous truth|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+ [[Interpreter (computing)|interpreters]] are extremely simple to write, so there have been many written. For example, [[Media:Hq9-plus.py|this]] HQ9+ interpreter was written (in [[Python (programming language)|Python]]) in around five minutes and is only 18 lines long. And, [[Media:hq9p.c|this]] HQ9+ [[compiler]] written in [[C programming language|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++''',<ref>{{cite web|url=http://www.cliff.biffle.org/esoterica/hq9plus.html|title=HQ9++|work=DM's Esoteric Programming Languages|date=[[2007-01-12]]|accessdate=2007-01-21|first=David|last=Morgan-Mar}}</ref> also known as '''HQ9+ with Classes''', an [[object-oriented]] version created by [[David Morgan-Mar]]. This adds a new command, <code>++</code>, which increments the accumulator twice and instantiates an object. Following the principle of [[information hiding]], it is not possible to access this object.
==References==
<references />
==External links==

*[http://www.cliff.biffle.org/esoterica/hq9plus.html HQ9+]
*[http://www.almnet.de/esolang/hq9plus.php online HQ9+ interpreter]
*[http://code.eachmapinject.com/esoteric/hq9plus.rb HQ9+ interpreter in] [[Ruby programming language|Ruby]]

[[Category:Esoteric programming languages]]

[[cs:HQ9+]]
[[es:HQ9+]]
[[ko:HQ9+]]
[[it:HQ9+]]
[[ja:HQ9+]]
[[pl:HQ9+]]
[[ru:HQ9+]]