% Anekdoten rund ums Forth

\section{Interview mit Dirk Brühl}

\newcommand{\mk}{\item[mk:]}
\newcommand{\db}{\item[db:]}

\newenvironment{interview}{\begin{description}}{\end{description}}

\begin{interview}
\item[Michael (mk):] Dirk, du hast etliches in Forth programmiert und beruflich längere Zeit davon gelebt. Wen kennst du eigentlich, der Forth ebenso verwendet hat?

\item[\bf Dirk (db):] Mmmmh ... muss ich drüber nachdenken! Ich kenne etliche, die von Forth begeistert sind, aber wenige die Forth tatsächlich auch verwendet haben. Persönlicher bekannt war mir Wolfgang Allinger, der in Forth programmierte, Software für Ultraschallgeräte bei Krautkrämer (\url{http://www.ob-ultrasound.net/history1.html}) und Dr.~Delius. Er war von Forth so begeistert, dass er später alle seine DNA--Analysen mit Hilfe von Forth durchgeführt hat. Und Dr. Haeggqwist,
% Gynäkologe,
 der war da eine Ausnahme, lebte nicht direkt davon. 
% Das war alles noch in den Anfängen des Forth (RSC--Forth) und der Mikroprozessoren.

\mk Kanntest du nicht auch Heinz Schnitter?

\db Ja, natürlich. Er verwendete im Gegensatz zu mir und den Vorgenannten Forth im großen Stil, zum Beispiel etwa hundert Mikroprozessoren, in Forth programmiert, miteinander verbunden, um einen Beschleuniger in Fahrt zu bringen. Ich habe ihn stets bewundert. Er hat mich damals animiert, für ein Projekt vier Mikroprozessorboards miteinander zu koppeln, und auf der Forth--Tagung in München habe ich einigen Interessierten gezeigt, wie auf einfache Art und Weise, mit einem Flachkabel, zehn Mikroprozessorboards mit RSC--Forth dazu gebracht werden können, miteinander zu kommunizieren. 

\mk Forth ist ja kein Gedanke in nur einem einzelnen Hirn geblieben. Und auch die Umgebung des Forth hat sich doch stark geändert, \emph{normative Kraft des Faktischen} sozusagen, so dass das Forth, wie es mal war, da verloren drin aussieht, oder?

\db Das ist nur der äußere Schein, vor allem in der PC--Welt. In der Welt der Mikroprozessoren ist Forth gut verbreitet --- vielleicht nicht so sehr in Deutschland oder in den USA --- das Land, wo Forth ohne Vorurteile verwendet wird, ist wohl am ehesten England --- siehe MPE und Inventio Software. Auch in Russland ist Forth stark verbreitet, so wie es in der ehemaligen sogannten DDR war. Forth arbeitet hauptsächlich im Verborgenen, wie Du Julian V.~Nobles Tutorial entnehmen kannst. 

\mk Wie du ja selbst schon gesagt hast, für die einfachen Mikroprozessoren damals war es passend und Klasse.

\db Für die einfachen Mikroprozessoren wie dem 6502 hätte ich Forth nicht gebraucht. Da konnte ich mir selbst helfen und habe ich auch gemacht. Sogar für die Geldkarten--Softwareerweiterung für SIEMENS--Parkscheinautomaten in den 90er Jahren habe ich wieder alles in Assembler geschrieben, weil die ursprüngliche Software in Assembler geschrieben war, aber sehr gut strukturiert. Nur deshalb war es mir möglich, Erweiterungen problemlos einzufügen. Auch die Software für die Burr--Brown--Terminals TM71 etc. habe ich komplett in Assembler geschrieben, ursprünglich war die Software in C, aber die wollte Burr-Brown USA für die \mbox{Magnetkarten--,} Barcodeleser-- und Drucker--Erweiterungen (hier in der BRD) nicht rausrücken --- zu meiner Freude, denn mit C wäre ich aufgeschmissen gewesen. Auch haben sie behauptet, das Projekt wäre nicht durchführbar, man würde einen zweiten Mikroprozessor dafür brauchen, was sie dann auch gemacht haben. Aber in Deutschland wurden die Terminals mit meiner Software verkauft, die nur einen, den vorhandenen, Mikroprozessor benötigte.
Das war in den 80er Jahren, ebenso die Software für Feuerwehr, U--Bahn-- und Straßenbahn-Funkverkehr war in Assembler geschrieben, allerdings unter Verwendung meines eigenen virtuellen Mikroprozessors, wie ich bereits mal erwähnt hatte. 

Für die komplizierten Mikroprozessoren ist Forth wesentlich wichtiger, für mich sogar unabdingbar! Nur mit Forth konnte ich ein Projekt für Philips mit einem 68331 und einem Xilinx-FPGA durchführen. Deshalb hatte ich für das Layout des Boards Leute beauftragt, die mit UR/Forth arbeiteten und für mich dann ein Forth-System auf den 68331 portiert haben, damit ich die Leiterplatte testen konnte. Ich musste dann letztendlich das Leiterplatten-Layout selbst machen, weil beim ersten Mal zu viele Fehler drin waren, aber dank Forth konnte ich dann die Platine komplett testen. War mein \emph{Prunkstück}, ein Ausschnitt davon mit meinem Layout auf SophistiCAD (ein in Forth geschriebenes Leiterplatten-Layout-System) ist auf \url{http://www.bruehlconsult.com/de.html} zu sehen.

Mein letztes kommerzielles Projekt war eine Dual--Prozessor--Architektur mit einem 8--Bit 6502--kompatiblen Mitsubishi--Mikroprozessor (auf den ich das RSC--Forth portiert habe; siehe \url{http://www.bruehlconsult.com/Downloads-de.html}) und einem 32--Bit--Philips--ARM--LPC--Mikroprozessor, das ich nur deshalb durchführen konnte, weil ich von MPE ein Board mit diesem Mikro und integriertem Forth bestellen konnte.

Der Mitsubishi M16, den ich zunächst für das Projekt vorgesehen hatte --- ich hatte sogar etliche Entwicklungsboards mit dem M16 --- ist da durchgefallen, weil es kein Forth dafür gab und weil ich doch nicht den Nerv hatte, ein eigenes Forth dafür zu schreiben. Einen Werkstudenten aus Stuttgart konnte ich beauftragen, die PWM--Funktion des M16 auszuprobieren (er konnte C), aber das hat dann auch nicht mehr geholfen, weil ich feststellte, dass eine 16--Bit-- Timer--Auflösung für unsere Ansprüche zu gering war. Also war ich froh, dass es Stephen Pelc und sein MPE--ARM--Forth gab.

Ansonsten hätte ich --- zum ersten Mal in meinem Leben und ausgerechnet hier in der Fremde, das Handtuch werfen müssen. Mit Hilfe von Forth lief alles bestens --- das war das Projekt, in das ich zum Testen eines PID--Reglerprogramms ein 8--Kanal--Oszilloskop, nur aus Software bestehend, eingebaut hatte.

Meine Quintessenz: Je komplizierter das System, umso mehr habe ich davon, wenn ich Forth einsetzen kann --- auch wenn das nicht die gängige Meinung ist, es ist meine persönliche Erfahrung. Und zu den komplizierten Systemen zählt natürlich auch der PC, auch wenn ich in der Grundig--Akademie bei meinem letzten Mikroprozessorkurs Mikroprozessor--Programmierung mit Hilfe des PC--Debuggers unterrichtet hatte. Ich würde aber niemals auf die Idee kommen, ein PC--Programm in Assembler oder C zu schreiben. Eine Ausnahme war VB --- und das führte zum Wunsch nach einem visualForth!

\mk Ich bin ja immer wieder verwundert, dass Forth trotz der Hardwareentwicklungen in all den Jahren weiter besteht --- wenn auch fast nicht 
wiederzuerkennen unter all den Objekten in modernen großen Forth--Systemen. Das win32forth kann ich nicht mehr komplett verstehen so wie das RSC--Forth einmal.

\db Wie aus meinen obigen Ausführungen zu entnehmen ist, Forth existiert weiterhin nicht trotz der Hardwareentwicklungen, sondern gerade wegen der Hardware--Entwicklungen --- siehe die Entstehungsgeschichte des OpenBoot--PROMs. Ich hätte gerne mit dem BigForth gearbeitet, aber Bernd Paysans Sachen waren für mich zu undurchschaubar --- aber der Drache ist prima! Hätte gerne auch mal so etwas gemacht, aber wie? Dazu muss man wahrscheinlich ein Bernd Paysan sein!

Ich gebe mir auch keine Mühe, Win32Forth [1] komplett zu verstehen. Meine Arbeitsgrundlage ist, dass w32f ein Forth--System ist, und mir die Forth--System--Worte zur Verfügung stellt --- das ist gerade \emph{the beauty of Forth}. Forth ist ein Knowledge--System, ein System, dass sich selbst kennt, und dessen eingebautes Wissen mir hilft, meine Aufgaben zu erfüllen. Dazu kommt, dass ich stets nur an einem kleinen Stück, einem Modul, einem Teil der Software arbeite. Das entlastet meinen Denkapparat, ich kann mich auf dieses kleine Stück konzentrieren, und von dem Rest muss ich nur wissen, dass er da ist und funktioniert, und das ist durch die inkrementelle Arbeitsweise sichergestellt.

Damit kann ich arbeiten, solange ich mich in bekanntem Forth--Terrain bewege. Und wenn es darum geht, neues Terrain zu betreten, gibt es Hilfen weltweit. Im Falle der Grafik konnte ich damals auf Jos van de Vens Ressourcen zurückgreifen, und das war phantastisch! Ich brauche nicht zu wissen, wie das Forth gefädelt ist. Die CPUs sind heutzutage so schnell, dass es für mich sowieso keine Rolle spielt. Virtuell ist virtuell, und virtuell ist nun Mainstream geworden --- das nur als Randbemerkung.

\mk Du hast Forth also als Instrument benutzt, um Einsicht zu bekommen in Maschinen, die dir bis dahin unbekannt waren. Als Türöffner sozusagen?

\db Im Falle des Projekts mit dem 68331 auf jeden Fall. Und mit dem ARM--Mikroprozessor hätte ich ohne Forth überhaupt nicht arbeiten können, obwohl ich dort ein kleines Modul in Maschinensprache geschrieben habe, nur drei oder vier Maschinenbefehle lang. Auch jemand anders, der da intelligenter ist als ich, bräuchte trotzdem wesentlich mehr Zeit, weil er erst einmal jede Menge über die internen Register und die Start--Routinen lernen muss, was mit Forth nicht der Fall ist. Für den PWM--Timer habe ich ein Demoprogramm von Philips, das in C geschrieben war, in Forth transferiert, sah danach viel besser aus und war einfacher zu handhaben in Forth. Was das RSC--Forth angeht: So einfach sollte es mit visualForth wieder werden!

\mk Ich finde, es braucht ein didaktisches Durcharbeiten der Schichten des Forth, damit junge Leute damit wieder einsteigen können in das, was man Programmieren nennt.

\db Ich lese derzeit ein interessantes Buch \emph{MADE to STICK --- Why some Ideas Survive and Others Die}, von Chip Heath \& Dan Heath, außerordentlich interessant. Sie schreiben zum Beispiel vom \emph{Fluch des Wissens} --- wenn jemand etwas weiß, kann er es meist einem Nichtwissenden nicht vermitteln, weil er inzwischen zu abstrakt denkt (in Kurzform). Das erinnerte mich an meine These, dass es immer nur eine gewisse Anzahl von Menschen gibt, die sich auskennen, und wo bleiben die anderen? Für die anderen will ich sorgen. Meine Devise war immer, dass Forth für den Mann an der Werkbank ist. 

\mk Motivation hast du ja genug. An etlichen Stellen ist dir der Ruf nach so etwas wie visualForth in den Ohren geklungen. Das hilft, um an so einem Projekt nicht so schnell zu verzweifeln, denke ich. Denn das ist ja kein so ganz kleines Vorhaben.  
  
\db Ja, das muss ich mir immer wieder erzählen, obwohl es mein eigener dringender Wunsch war, endlich da mal was mit Windows machen zu können, ohne das nervtötende VB verwenden zu müssen. Und dass andere auch danach suchten, hätte mir klar sein müssen, und das kam ja dann auch nach einiger Zeit raus. Die Forth--Tagung (2009 in Neuenkirchen bei Rheine) und die Unterstützung der FG haben mir außerordentlich geholfen. Durch diesen Ecktermin kam alles auf die Reihe, pünktlich und ohne Stress [2]. 

\mk Dirk, hab Dank für die Mitteilung deiner Erfahrungen.
\end{interview}

Dirk Brühl lebt heute im Ruhestand in Pensylvania USA.

\subsection{Links} % bzw. Fußnoten:
{[1]} \url{http://tech.groups.yahoo.com/group/win32forth/}\\
{[2]} \url{http://www.visualforth.org/Alpha}

