<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% 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}</pre></body></html>