% Content-encoding: UTF-8 \documentclass[ngerman]{article} \usepackage[utf8]{inputenc} \usepackage{multicol,babel} \usepackage{xspace} \setcounter{secnumdepth}{0} \setcounter{tocdepth}{0} \renewcommand{\reftextbefore}{auf der vorherigen Seite} \renewcommand{\reftextfacebefore}{auf der gegenüberliegenden Seite} \renewcommand{\reftextafter}{auf der nächsten Seite} \renewcommand{\reftextfaceafter}{auf der gegenüberliegenden Seite} \renewcommand{\figurename}{Abbildung} \begin{document} \title{fHQ9+} \author{Michael Kalus} \begin{document} \maketitle Die Beschäftigung mit esoterischen Programmiersprachen kann zu tieferem Verständnis seriöser Programmiersprachen sowie zur Verbesserung strukturellen Denkens führen. Praktische Bedeutung haben die esoterischen Programmiersprachen somit in Forschung und Lehre. Klar, dass wir da als Forth--Verein nicht tatenlos zusehen können. \begin{multicols}{2} \section{Das Konzept} Auch HQ9+ ist so eine esoterische Programmiersprache, entwickelt von Cliff L.\,Biffle. HQ9+ ist nicht turingvollständig, da weder bedingte Anweisungen noch Schleifen möglich sind. Er entwickelte mit HQ9+ eine Sprache, mit der in Programmierkursen häufig gestellte Aufgaben trivial gelöst werden können. Das Prinzip der Trivialisierung setzt sich in der objekt--orientierten Variante HQ9++ von David Morgan--Mar fort, bei der Objekte erstellt werden können, die, wie auch der Zähler, keine Funktion erfüllen können. Hier möchte ich mich demonstrativ an die Implementation des klassischen HQ9+ halten, und zeigen, dass es in Forth simpel ist, seine eigene Programmiersprache zu schaffen. In Abweichung vom Original wird allerdings ein Delimiter (space) benutzt, um die Befehle zu trennen. Da sowieso jede Implementation irgend einer Programmiersprache ihre spezifischen umgebungsbedingten kleinen Abweichungen (environmental dependency) hat, ist dies durchaus legitim. Implementiert worden ist der komplette Befehlssatz: \texttt{H Q 9 +} \section{Beispielcode} Um die Leistungsfähigkeit von HQ9+ zu erkunden, gebe z.\,B.\ folgendes ein: \texttt{H} \ret\\ \texttt{Q Q Q Q} \ret\\ \texttt{H Q H Q} \ret\\ \texttt{9} \ret\\ Viel Vergnügen. \end{multicols} \section{Quellen:} \begin{small} \url{http://www.cliff.biffle.org/esoterica/hq9plus.html}\\ \url{http://de.wikipedia.org/wiki/Esoterische_Programmiersprache}\\ \url{http://de.wikipedia.org/wiki/HQ9%2B}\\ \url{http://99-bottles-of-beer.net/lyrics.html}\\ \url{http://de.wikipedia.org/wiki/The_Complexity_of_Songs} --- Über die Komplexität von Liedern, Donald E.\,Knuth, 1977 \end{small} \section{Code} \begin{quote} \listinginput[1]{1}{2010-01/fHQ9plus.fs} \end{quote} \end{document}