Forth (Informatik)
Forth wurde von Charles H. Moore 1969 entwickelt und ist in erster Linie als Programmiersprache bekannt geworden. Forth ist aber nicht nur eine Programmiersprache, sondern gleichzeitig ein Betriebssystem und eine Entwicklungsumgebung zur Erstellung von Forth-Programmen. Daher nennt man das tatsächlich implementierte Forth auf einem Rechner auch ein Forth-System.
| Inhaltsverzeichnis |
Entstehungsgeschichte
Diese Eigentümlichkeit einer All-in-One-Lösung lässt sich gut aus der Entstehungsgeschichte heraus erklären. Denn Forth entstand aus einem Problem, das sich Moore eingebrockt hatte: er hatte zur Steuerung des Teleskops einer Sternwarte einen Rechner gekauft. Doch war dies wirklich nur ein "nackter" Rechner - also die reine Hardware ohne jede Software. Also ging er den Weg, alle notwendigen Komponenten selbst zu programmieren, die für eine (komfortable) Programmierung und einen (komfortablen) Betrieb eines Rechners notwendig sind: ein Betriebssystem, eine Hochsprache und eine Entwicklungsumgebung. Alle diese Komponenten wurden innerhalb eines einzelnen Programms realisert - dem Forth-System.
Die Vorgehensweise einer All-in-One-Lösung ist ein Sonderweg von Forth geblieben. Normalerweise werden die oben genannten Komponenten getrennt voneinander konzipiert und entwickelt.
Eine komplettere Abhandlung der Geschichte von Forth findet sich hier.
Forth-System
Das Forth-System ist als virtuelle Maschine realisiert. Wesentliche Datenstruktur in Forth ist der Stack oder Stapel, die Notation von Ausdrücken entspricht der 'umgekehrten Polnischen Notation' UPN.
Forth benutzt zur Arbeit zwei Stacks, einen für Daten, den anderen für die Rücksprungadressen der Subroutinen. Diese Subroutinen werden in Forth Worte genannt und in einem Dictionary abgelegt. Ein jeweils konkret vorliegendes Forth-System besteht praktisch nur aus diesem Wörterbuch selbst, wobei die Worte des Kernwortschatzes als Programmteile potentiell eine Doppelfunktion ausfüllen: Einmal regeln sie in ihrem niedergelegten Zusammenspiel die komplette interne Funktionalität des Programmiersystems selbst - einschließlich der präsentierten Benutzerschnittstelle, und gleichzeitig ist jedes einzelne Wort dem Programmierer zur allfälligen eigenen Verwendung für die geplante Anwendung zugänglich. Interaktiv lässt sich der Wortschatz Schritt für Schritt erweitern. Das soll heißen: Forth ist komplett in Forth programmiert, so dass es sehr leicht auf neue Rechner und Betriebssysteme übertragen werden kann. Assemblercode (üblicherweise auch in Forth-Notation) gibt es nur in denjenigen paar Worten, die die Anbindung an die Umgebung bewerkstelligen, und dann auch noch in denjenigen, die das Arbeitstempo des Systems bestimmen.
Programmiersprache
Alle Ausdrücke werden in Umgekehrter Polnischer Notation (UPN) beschrieben. "Umgekehrte Polnische Notation" klingt, als sei das eher kompliziert und unnatürlich, aber damit ist nichts anderes gemeint als beispielsweise Formulierungen wie:
- Wäsche waschen
- Brot schneiden
- sieben addieren (oder als Formel: 7 +)
Also ganz gewöhnlich alltagssprachlich wird erst das Ding genannt, mit dem man etwas tun kann ("Wäsche"), und danach das, was man damit macht ("waschen").
Forth funktioniert nach dem Stapel-Prinzip. Wenn man zum Beispiel (5 + 3) * (7 + 2) in Forth ausrechnen will, gibt man folgende Sequenz ein:
- 5 3 + 7 2 + * .
Der abschließende Punkt sorgt für die Ausgabe des Ergebnisses. Wenn man den Punkt nicht angibt, verbleibt das Rechenergebnis auf dem Stapel. Die Auswertung des Forth-Ausdrucks beginnt mit dem Zeilenabschluss (Return).
| SWAP | n1 n2 n3 | -> | n1 n3 n2 | vertauscht die ersten beiden Stack-Elemente |
| DUP | n1 n2 | -> | n1 n2 n2 | dupliziert das oberste Stack-Element |
| ROT | n1 n2 n3 n4 | -> | n1 n3 n4 n2 | rotiert die obersten drei Stack-Elemente |
| ROLL | n1 n2 n3 3 | -> | n3 n1 n2 | |
| PICK | n1 n2 n3 2 | -> | n1 n2 n3 n1 | |
| DROP | n1 n2 n3 n4 | -> | n1 n2 n3 | entfernt das oberste Stack-Element aus dem Stapel |
Forth eignet sich für das interaktive Entwickeln von Steuerungssystemen. Da sind dann Programmpassagen möglich wie:
- Ventil öffnen
- Hupe einschalten
- usw.
Die frühesten bekannten Anwendungen waren Steuerungen für Observatorien, denn die eingangs genannte Teleskopsteuerung wurde von vielen anderen Observatorien übernommen.
Ein Forth-Interpreter kann sehr ressourcenschonend implementiert werden. Deshalb eignet sich die Sprache auch besonders gut für Microcontroller. Jüngste Entwicklung ist das Colorforth von Charles H. Moore.
Weblinks
- Das Programmiersystem Forth
- Instant Programming Tool Holonforth
- ForthFreak - Ein Wiki über Forth (englisch)
- Chuck Moore's colorForth, VLSI design tools and 25x Forth Multicomputer chip
- Links zu Forth
