Forth (Programmiersprache)


Forth (Programmiersprache)

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 ein tatsächlich implementiertes Forth auf einem Rechner ein Forth-System.

Inhaltsverzeichnis

Entstehungsgeschichte

Diese Eigentümlichkeit einer umfassenden Lösung lässt sich gut aus der Entstehungsgeschichte[1] heraus erklären. Moore hatte zur Steuerung des Teleskops einer Sternwarte einen Rechner ohne Software gekauft. Er hatte sich vorgenommen, alle notwendigen Komponenten selbst zu programmieren, die für eine (komfortable) Programmierung und den (komfortablen) Betrieb des Rechners notwendig sind. Hierzu gehören ein Betriebssystem, eine Hochsprache und eine Entwicklungsumgebung. All diese Komponenten wurden innerhalb eines einzelnen Programms verwirklicht – dem Forth-System.

Die Vorgehensweise einer so genannten „All-in-One-Lösung“ ist ein Sonderweg von Forth geblieben. Selbst Programmiersprachen wie Smalltalk oder Self gehen (in der Regel) nicht so weit, auch das Betriebssystem zu ersetzen. Obwohl dies möglich wäre, wünscht man sich meist Portabilität. Auch die Programmiersprache Oberon, die im Rahmen des Ceres-Systems entwickelt wurde, ist unabhängig von diesem erhältlich. Normalerweise werden die oben genannten Komponenten getrennt voneinander konzipiert und entwickelt.

Factor ist eine auf Forth aufbauende Programmiersprache, die sich jedoch stärker an die Anwendungs-Entwicklung orientiert als an der Low-Level-Funktionalität von Forth.

Forth-System

Das Forth-System ist als virtuelle Maschine realisiert. Die wesentliche Datenstruktur in Forth ist der Stapel (englisch stack). Ausdrücke werden in Forth in der umgekehrten polnischen Notation (UPN) formuliert.

Forth benutzt zur Arbeit zwei Stapel: Den einen für Daten, den anderen (returnstack) für die Rücksprungadressen beim Verzweigen in Unterprogramme (Subroutinen). Programmcode wird in Forth durch die Definition von Worten (words) in einer Bibliothek (dictionary) abgelegt.

Ein Forth-System besteht aus dem Wörterbuch, wobei die Worte des Kernwortschatzes als Programmteile potentiell eine Doppelfunktion ausfüllen. Interaktiv lässt sich der Wortschatz Schritt für Schritt erweitern. Das soll heißen: Ein Forthsystem ist (bis auf den Kern) komplett in Forth programmiert, so dass es leicht auf neue Rechner und Betriebssysteme übertragen werden kann. Assemblercode (üblicherweise auch in Forth-Notation) gibt es nur in Worten, die die Anbindung an die Umgebung bewerkstelligen, oder in denjenigen, die das Arbeitstempo des Systems bestimmen.

Forth hat zwei wesentliche Eigenschaften, die es von vielen anderen Programmiersystemen seiner Zeit unterscheiden:

  • Forth war von Beginn an Open Source
  • Forth erlaubt dem Anwender Zugriff auf den Compiler; dadurch können beliebige eigene Datenstrukturen implementiert werden

Beispiel eines UPN Ausdrucks

Für die Berechnung des Ausdrucks (5 + 3) * (7 + 2) wird in Forth die folgende Sequenz eingegeben:

5 3 + 7 2 + * .

Die Verarbeitung erfolgt nach der Eingabe des Zeilenabschlusses (Eingabetaste).

Im gegebenen Beispiel werden die Zahlen 5 und 3 auf dem Stapel gelegt. Der Plus-Operator ersetzt die beiden Operanden (also fünf und drei) auf dem Stapel durch die Summe 8. Die Summenbildung wird nun für die Zahlen 7 und 2 wiederholt. Auf dem Stapel befinden sich jetzt die Werte 8 und 9. Der Multiplikations-Operator ersetzt dann die Werte durch das Produkt 72. Der Punkt am Ende der Eingabe gibt das Ergebnis aus.

Wörter für Stack-Operationen

Befehl Stack Beschreibung
DUP n1 n2 n1 n2 n2 dupliziert das oberste Stack-Element
SWAP n1 n2 n3 n1 n3 n2 vertauscht die obersten beiden Stack-Elemente
ROT n1 n2 n3 n4 n1 n3 n4 n2 holt das dritte Stack-Elemente nach oben
OVER n1 n2 n3 n1 n2 n3 n2 kopiert das zweite Stack-Element
PICK n1 n2 n3 2 n1 n2 n3 n1 kopiert das angegebene (hier: 2 entspr. dritte) Stack-Element
DROP n1 n2 n3 n4 n1 n2 n3 entfernt das oberste Stack-Element

Forth eignet sich für das interaktive Entwickeln von Steuerungssystemen. Da sind dann Programmpassagen möglich wie:

  1. Ventil öffnen
  2. Hupe einschalten
  3. 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 ressourcenschonend implementiert werden. Deshalb eignet sich die Sprache auch besonders gut für Microcontroller. Ideal ist ein kombiniertes System: Das Programm wird in Klartext mit allen Kommentaren auf dem PC geschrieben und gespeichert. Dieser Text ist oft einige hundert Kilobyte lang und würde nicht in den beschränkten Speicher eines Controllers passen. Nur die sehr kompakte Zusammenfassung davon (ein Befehl = ein Byte) wird zum Microcontroller übertragen und dort abgearbeitet. Ein praktisches Beispiel für kleinere Roboter findet man in ROBOprogy. Jüngste Entwicklung ist das Colorforth von Charles H. Moore. Ältere FORTH-Derivate sind das GraFORTH sowie das Messdatenanalyse-System ASYST.

Freie Forth-Systeme

  • amrFORTH — 8051 Tethered Forth für Windows/OSX/Linux/*BSD
  • Reva — Pentium (Linux und Windows)
  • pbForth — für den Hitachi H8 in LEGO Mindstorms Robotics Invention System als Alternative
  • PFE — Portable Forth Environment
  • Gforth — GNU Forth Language Environment
  • bigFORTH — x86 native code Forth mit MINOS GUI
  • kForth — Kleiner Forth-Interpreter, in C++ geschrieben
  • SP-Forth (SPF) — OpenSource Forth für Win32
  • Informationen über Forth für 8-bit Home-Computer (Atari, Apple, ZX-80, …)
  • RetroForth — Public Domain, für DOS, Linux, FreeBSD, Windows oder standalone -- hat ein wiki
  • pForth — PD portables Forth in 'C' für Embedded Systeme oder Desktops.
  • herkforth — Ein colorForth für Linux/PPC
  • Computer Intelligence Forth — ein in Assembler geschriebenes ISO-Forth
  • eForth von C.H.Ting
  • Mops — Ein objektorientierter Forth-Dialekt für den Apple-Macintosh, basiert auf dem früher kommerziellen Neon
  • GraFORTH — Forth für den Apple ][ mit AV Primitiven (ShrinkIt archive)
  • Win32Forth — Forth für Microsoft Windows 95/2000/XP
  • MVP Forth Quelltext verfügbar, von Mountain View Press
  • colorForth für den PC, Floppy-Image-Extracter/Source-Reader.
  • amforth für den Atmel ATMega-Mikrocontroller (GPL).
  • Holon — eine Forth-basierte integrierte Entwicklungsumgebung.
  • SwiftFORTH und SwiftX — professionelles FORTH für PC und Mikrocontroller

Eine moderne Anwendung für Forth ist das Konzept der Open Firmware (IEEE-1275).

Weblinks

Quellen

  1. Entstehungsgeschichte von Forth

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • 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 …   Deutsch Wikipedia

  • Forth (Informatik) — Forth Paradigmen: stapelorientiert Erscheinungsjahr: ca. 1970 Entwickler: Charles H. Moore Typisierung: typenlos Dialekte …   Deutsch Wikipedia

  • FORTH —   [fɔːθ, englisch], Informatik: eine höhere Programmiersprache, v. a. für Gerätesteuerungen. FORTH Programme sind in ihrem Befehlsvorrat erweiterungsfähig, von großer Kompaktheit und laufen sehr schnell ab …   Universal-Lexikon

  • Programmiersprache/Zeittafel — Jahr Name Entwickler, Hersteller Vorläufer, Vorgänger 1840 Erstes Programm Ada Lovelace * 1946 Plankalkül Konrad Zuse * 1952 A 0 Grace Hopper * …   Deutsch Wikipedia

  • Programmiersprache — Quelltext eines Programms in der Programmiersprache C++. Eine Programmiersprache ist eine formale Sprache, die zur Formulierung von Computerprogrammen verwendet wird. Die Anweisungen (Befehle) können dabei entweder in Maschinencode geschrieben… …   Deutsch Wikipedia

  • Forth — I Forth   [»vorwärts«, oder nach engl. the fourth, »die Vierte«], eine maschinennahe Programmiersprache mit Elementen höherer Sprachen, die in den 1960er Jahren von Charles H. Moore (*1938) zur Steuerung von Radioteleskopen entwickelt wurde.… …   Universal-Lexikon

  • Forth — Der Ausdruck Forth bezeichnet: eine Programmiersprache, siehe Forth (Informatik) einen Ortsteil der Marktgemeinde Eckental im Landkreis Erlangen Höchstadt einen Fluss in Schottland, siehe Forth (Fluss) den Mündungsbereich des Flusses Forth, siehe …   Deutsch Wikipedia

  • Forth — eigentlich Fourth (da 4GL), imperative Programmiersprache mit UPN (Stack) Methodik …   Acronyms

  • Forth — eigentlich Fourth (da 4GL), imperative Programmiersprache mit UPN (Stack) Methodik …   Acronyms von A bis Z

  • Aleph (Programmiersprache) — Aleph ist eine objektorientierte, funktionale Programmiersprache. Sie stellt die herkömmliche Programmierung auf eine breitere Basis. So ist interaktive Entwicklung und Kompilierung vereint. Die Arbeit mit Aleph ist am Problem orientiert und… …   Deutsch Wikipedia