When the HQ9++ specification was unveiled, it was perceived by many to be the final step in the development of esoteric languages, and for good reasons. HQ9++ is elegant, simple, and yet powerful enough to accomplish every esoteric task. Much of its gracefulness is due to the transparent inclusion of the object-oriented paradigm.
There is, however, a fatal flaw in both of the parent languages: there hardly is any machinery to assist in the debugging of the code. HQ9+- alleviates this problem by introducing a concept which makes debugging and quality control easy and straightforward.
HQ9+- maintains the backwards compatibility with both HQ9++ and HQ9+, as long as interpreters (compilers) are treating undocumented characters as comments. Strictly speaking, any correct HQ9+- program is also a correct HQ9++ program and will produce an identical output.
There are five operators:
The first four are the same as in the original specification.
H prints "Hello World!".
Q prints the text of the program.
9 prints the (canonical) text of the song "99 Bottles Of Beer On The Wall".
+ increments the counter. As in HQ9++, ++ increments the counter twice and creates an object of a new subclass of the generic superclass.
In order to facilitate the quality control, one new operator is added: - (minus sign). It is interpreted as follows:
We are proud to present an interpreter written in highly portable C. This is a new implementation of HQ9++, HQ9+-, and HQ9+, written entirely from scratch. It is licensed under GNU GPL, and is entirely free software. The following design goals were met:
Download the source tarball: hq9+-i-9.9.txz
Original specification of HQ9+ by Cliff L. Biffle. (Internet Archive)
Original specification of HQ9++ by David Morgan-Mar.
See the Info page for copyright information.