Forth

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Dieser Artikel behandelt die Programmiersprache Forth in Sicht der Commodore Computersysteme.

Forth wurde 1969 von Charles H. Moore entwickelt, wobei in weiterer Folge auch Elizabeth Rather bedeutenden Einfluss hatte.[1] Forth ist zugleich Programmiersprache und Entwicklungsumgebung, wobei es unabhängig von einem Betriebssystem ist und die notwendigen Funktionen selbst zur Verfügung stellt. Dies war gewissermaßen eine Notwendigkeit, nachdem die ersten Einsatzgebiete eher den Charakter eines Embedded-Systems hatten bzw. über gar kein Betriebssystem verfügten. Auch Multitasking war in etlichen Implementierungen vorhanden, weil damalige Betriebssysteme (sofern vorhanden) oft ein solches Konzept nicht kannten. Spätere Forth-Umgebungen waren dann sehr wohl in die jeweilige Betriebssystemumgebung eingebettet, wo auch Floatingpoint, Grafik- und GUI-Bibliotheken und die vorliegende Massenspeicherverwaltung Verwendung fanden.
Es ist für viele unterschiedliche Minicomputer, Embedded-System-Boards und Mikrocomputer, unter anderem auch für den C64, erhältlich. Ein tatsächlich implementiertes Forth nennt man Forth-System.

Inhaltsverzeichnis

[Bearbeiten] Entstehungsgeschichte

Forth wurde auf einem IBM-1130 Minicomputer (mit IBM-2250 Display/Terminal) entwickelt auf der Basis eines in Algol programmierten Schachspiels entwickelt. Ursprünglich sollte die Sprache Fourth heißen, womit Moore auf den zukünftigen Einsatz in vielen dezentralen kleinen Mikrocomputern hinweisen wollte und dies als nächsten Schritt nach der so genannten "dritte Generation" der damaligen Programmiersprachen auf zentralen Systemen sah. Zu dieser Zeit ließ die Programmierumgebungen jedoch nur Dateinamen mit maximal fünf Buchstaben zu, weswegen Moore sich für das Homophon Forth als Name entschied. Die Großschreibung des Namens in den Anfangsjahren leitete sich aus dem Zwang ab, dass die IBM-2250 nur Großbuchstaben zuließ. Nachdem etliche Minicomputer bereits das Ziel einer Forth-Umsetzung waren, wurde ab Mitte der 1970er Forth auf zahlreiche Heim- und Personalcomputer portiert. Mit FORTH-77 manifestierte sich 1977 der erste vorläufige Forth-Standard, der 1979 in den ersten offiziellen FORTH-79-Standard mündete.

Die Vorgehensweise einer All-in-One-Lösung ist ein Sonderweg von Forth geblieben; selbst Programmiersprachen wie Smalltalk oder Self gehen in der Regel nicht soweit, auf ein Betriebssystem verzichten zu können. Das ist als entscheidender Vorteil zu sehen, Forth rasch auf eine beliebige Hardware portieren zu können. Auch Oberon, das im Rahmen des Ceres-Systems entwickelt wurde, ist unabhängig von einem Betriebssystem erhältlich. Normalerweise werden die oben genannten Komponenten getrennt voneinander konzipiert und entwickelt.

Eine umfangreichere Abhandlung der Geschichte von Forth findet sich in der Publikation ACM SIGPLAN Notices, March 1993.[2]

Wegen der kompakten internen Darstellung der Forth-Programme im Speicher und die gegenüber reinem Maschinencode "nur" um den Faktor 10 schlechteren Ausführungszeiten (zum Vergleich: noch immer eine Größenordnung schneller als etwa vergleichbare BASIC-Programme) bietet sich an, aufwendige Applikationen in einer für die Entwicklung komfortablen Forth-Umgebung zu erstellen. Ein populäres Beispiel dafür ist etwa die Tabellenkalkulation Calc Result, die als Steckmodul für den C64 angeboten wurde und damit auch die Umsetzung von komplexen Anwendung auf 8-Bit-Plattformen bewies.
Auch für die Spieleentwicklung eignet sich Forth aus oben genannten Gründen und wurde beispielsweise bei der Entwicklung des Spiels Starflight eingesetzt.[3]

Von Forth beeinflusst ist die Programmiersprache Factor[4] und vereint auch Elemente aus Lisp und Smalltalk. Sie orientiert sich jedoch stärker an die Anwendungsentwicklung und weniger an der Low-Level-Funktionalität üblicher Forth-Systeme.

[Bearbeiten] Standardisierungen

(in der Reihenfolge des Erscheinens)

  1. FIG Forth model (ein weit verbreitetes Portierungsmodell der Forth Interest Group, 1978)
  2. FORTH-79 standard (1979)
  3. FORTH-83 standard (1983)
  4. ANS Forth standard (ANSI technical committee X3J14 24. März 1994)
  5. Forth 2012 Standard (2014)

[Bearbeiten] Implementierungen

Die Massenspeicherverwendung ist je nach Implementierung höchst unterschiedlich gelöst. Prinzipiell benötigt Forth einen blockorientierten Massenspeicher (üblicherweise ein Floppy-Laufwerk), um dort in Form von 1024-Zeichen großen Screens (welche den Sourcecode-Text enthalten) selbst zu organisieren.
Manche Implementierungen verwenden das CBM-Dateisystem lediglich für den rohen Zugriff direkt auf die Blockstruktur.
Andere Variante hingegen legen die Screens einfach als Dateien des CBM-Dateisystems ab (z.B. als sequenzielle Dateien, wie etwa bei C64 Forth/79 von Micro Productions).

Unabhängig von der konkreten internen Forth-Massenspeicherverwaltung, gibt es entsprechende Erweiterungen und Definitionen, um auf Daten des CBM-Dateisystem wie gewohnt zuzugreifen. Nicht selten orientiert sich das an dem Schema wie BASIC mit Dateien umgeht bzw. ist die Schnittstelle an die KERNAL-Funktionen angelehnt.

[Bearbeiten] C64

[Bearbeiten] C128

[Bearbeiten] C128 im CP/M-Modus

[Bearbeiten] Quellen

  1. Entwurf für einen Beitrag der History of Programming Languages II Konferenz, Chuck Moore, 1991 Sprache:englisch
  2. ACM SIGPLAN Notices, Volume 28, No. 3, March 1993 Sprache:englisch
  3. Wikipedia: Starflight (Development) Sprache:englisch
  4. dt. Wikipedia: Programmiersprache Factor

[Bearbeiten] Literatur

  • Rather, Elizabeth D., Colburn, Donald R. and Moore, Charles H., The Evolution of Forth, in History of Programming Languages-II, Bergin T. J. and Gibson, R. G., Ed., New York NY: Addison-Wesley, 1996, ISBN 0-201-89502-1 Sprache:englisch

[Bearbeiten] Weblinks

WP-W11.png Wikipedia: Forth (Informatik)
WP-W11.png Wikipedia: Forth (programming language) Sprache:english