FORTH

FORTH

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 — Saltar a navegación, búsqueda Para otros usos de este término, véase Forth (desambiguación). Forth o FORTH es un lenguaje de programación para computadores y un ambiente de programación ideado por Charles H. Moore y Elisabeth Rather entre los… …   Wikipedia Español

  • Forth — Семантика: императивный Тип исполнения: интерпретатор/компилятор Появился в: 1971 г. Автор(ы): Чарльз Х. Мур Основные реализации: gForth, pForth, kForth, SP Forth[1], win32forth …   Википедия

  • Forth — Forth, v.[AS. for[eth], fr. for akin to D. voort, G. fort [root]78. See {Fore}, {For}, and cf. {Afford}, {Further}, adv.] 1. Forward; onward in time, place, or order; in advance from a given point; on to end; as, from that day forth; one, two,… …   The Collaborative International Dictionary of English

  • Forth of — Forth Forth, v.[AS. for[eth], fr. for akin to D. voort, G. fort [root]78. See {Fore}, {For}, and cf. {Afford}, {Further}, adv.] 1. Forward; onward in time, place, or order; in advance from a given point; on to end; as, from that day forth; one,… …   The Collaborative International Dictionary of English

  • Forth — may refer to:* Forth (programming language), a stack oriented computer programming language * Forth (album), album by British rock band The Verve * River Forth, a major river in Scotland * Firth of Forth, the estuary and sea bay widening out from …   Wikipedia

  • forth — forth·come; forth·com·er; forth·com·ing·ness; forth; forth·ward; forth·com·ing; forth·right; forth·right·ly; forth·right·ness; forth·tell·er; …   English syllables

  • forth — S2 [fo:θ US fo:rθ] adv [: Old English;] 1.) and so forth used to refer to other things of the type you have already mentioned, without actually naming them = ↑et cetera ▪ She started telling me about her bad back, her migraines, and so forth. 2.) …   Dictionary of contemporary English

  • forth — [ fɔrθ ] adverb LITERARY ** 1. ) away from a place: Go forth and spread the word of God. 2. ) forward or out: He drew forth an envelope. Her first novel brought forth the scorn of critics. from that day/moment/time etc. forth LITERARY after that… …   Usage of the words and phrases in modern English

  • forth — The phrase and so forth is a less common and somewhat more literary alternative for and so on, used after the enumeration of items that could be continued further. There is no difference in meaning, despite the associations of assertiveness that… …   Modern English usage

  • Forth — [fôrth] 1. Forth river in SE Scotland, flowing east into the Firth of Forth: 65 mi (105 km) 2. Firth of long estuary of the Forth, flowing into the North Sea: 51 mi (82 km) …   English World dictionary

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”