www.wikidata.de-de.nina.az
Forth ist eine imperative stackbasierte Programmiersprache Ein Forth System beinhaltet ein Betriebssystem zum Ablauf und eine Entwicklungsumgebung zur Erstellung von Forth Programmen Daher nennt man ein tatsachlich implementiertes Forth auf einem Rechner ein Forth System Viele Versionen generieren heute so wie in anderen Programmiersprachen auch hochoptimierten Maschinencode ForthParadigmen stapelorientiertErscheinungsjahr ca 1970Designer Charles H MooreEntwickler Charles H MooreTypisierung typenlosDialekte FORTH 79 FORTH 83 ANS FORTH Forth 2012 1 Beeinflusst von Burroughs Large Systems Lisp APL AssemblerBeeinflusste STOIC Factor PostScript RPL REBOLforth standard org Inhaltsverzeichnis 1 Entstehungsgeschichte 2 Forth System 2 1 Programmierung in Forth 2 2 Beispiel eines UPN Ausdrucks 2 3 Worter fur Stack Operationen 3 Anwendungen 4 Forth Implementierungen und abgeleitete Sprachen 5 Siehe auch 6 Literatur 7 Weblinks 8 EinzelnachweiseEntstehungsgeschichte BearbeitenCharles H Moore entwickelte Forth in den Jahren vor 1969 aus einem selbstgeschriebenen Mini Interpreter Dieser Interpreter enthielt bereits viele Eigenschaften der spateren Programmiersprache war aber auf ein darunterliegendes Betriebssystem angewiesen Moore benutzte ihn als Makrosprache fur Programme die er in Fortran ALGOL PL I und Assembler schrieb Die Computertechnik dieser Zeit veranderte sich gerade von Grosscomputern die im Batchbetrieb arbeiteten hin zu Minicomputern die auch interaktives Arbeiten zuliessen 1968 schrieb Moore neben seiner eigentlichen Arbeit fur einen IBM 1130 Minicomputer schliesslich ein Schachprogramm das er zuvor in Algol kodiert hatte in seine Programmiersprache um Das Schachprogramm war dadurch deutlich einfacher zu portieren und Moore nannte seine Sprache nun das erste Mal FORTH Ursprunglich sollte die Sprache FOURTH heissen weil sie eigentlich fur die Computer der vierten Generation vorgesehen war welche erwartungsgemass als Mikrocomputer vertrieben wurden Das Betriebssystem auf dem Moore programmierte liess jedoch nur Dateinamen mit einer Lange von funf Buchstaben zu weshalb er sich fur das Homophon FORTH entschied 2 Die Eigentumlichkeit einer umfassenden Losung aus Programmiersprache und Betriebssystem lasst sich gut aus der Entstehungsgeschichte 3 heraus erklaren Moore hatte zur Steuerung des 11 Meter Radioteleskops des National Radio Astronomy Observatory NRAO auf dem Kitt Peak in Arizona zwei Honeywell Rechner ohne geeignete Software zur Verfugung einen 16 kB DDP 116 und einen 32 kB H316 Er hatte sich vorgenommen alle notwendigen Komponenten selbst zu programmieren die fur eine komfortable Programmierung und den sicheren Betrieb der Rechner notwendig sind Hierzu gehoren ein Betriebssystem eine Hochsprache und eine Entwicklungsumgebung All diese Komponenten wurden innerhalb eines einzelnen Programms verwirklicht dem Forth System Beide Computer waren fur die Steuerung des Teleskops und seiner wissenschaftlichen Instrumente verantwortlich sie uberwachten die Positionierung und die Nachfuhrung das Sammeln und Aufzeichnen der Daten auf Magnetband und unterstutzten ein interaktives Grafikterminal Tektronix 4002A 4 auf dem die Astronomen die aufgezeichneten Daten analysieren und als Hardcopy ausdrucken konnten Der Multitasking Charakter des Systems erlaubte den gleichzeitigen Ablauf dieser Funktionen ohne dass dabei Storungen oder Laufzeitkonflikte auftraten Insgesamt funktionierte das System so gut dass Astronomen aus der ganzen Welt sich dafur interessierten und eine Kopie haben wollten Seine Anwendung verbreitete sich schnell und 1976 war Forth als Standardsprache durch die Internationale Astronomische Union angenommen nbsp Populare Bucher uber Forth aus der Zeit des ZX81 und des SpectrumDie Vorgehensweise einer sogenannten All in one Losung ist jedoch 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 moglich ware wunscht man sich meist Portabilitat Auch die Programmiersprache Oberon die im Rahmen des Ceres Systems entwickelt wurde ist unabhangig von diesem erhaltlich Ahnlich wie Forth hatte nur noch das Programmiersprache Betriebssystem Paket EUMEL und ELAN verfahren Normalerweise werden die oben genannten Komponenten getrennt voneinander konzipiert und entwickelt Forth System BearbeitenEin vollstandiges Forth System kann bereits mit wenigen Kilobyte Speicherbelegung realisiert werden Diese Eigenschaft war zur Zeit der Entstehung ausserordentlich wichtig da die Rechner damals verhaltnismassig wenig RAM zur Verfugung hatten Ausserdem ist der eigentliche Kern des Forth Systems sehr klein und der Rest des Systems bereits selbst in Forth definiert Eine Portierung des Forth Systems auf andere Prozessoren ist dadurch erheblich einfacher Diese positive Eigenschaft hat Forth in den spaten 1970er Jahren eine relativ grosse Verbreitung beschert Heute macht dies Forth zu einer Hochsprache die besonders zur Programmierung verschiedenster Mikrocontroller geeignet ist Zur Entwicklung werden dabei aber kombinierte Systeme benutzt bei denen der Zwischencode auf einem Host PC vorkompiliert und lediglich das Ergebnis im Mikrocontroller des Clients abgelegt wird Dadurch konnen einige interaktive Funktionen des Forth Systems entfallen und der Quellcode kann dabei umfassender kommentiert werden Die wesentlichen Elemente der internen Forth Architektur sind die beiden Stapel Data Stack und Return Stack ein kleiner Satz Register die gegebenenfalls unabhangig von der Hardware simuliert werden und das Dictionary eine Sprungtabelle die den Token mit der jeweils aufzurufenden Funktion verknupft Das auf dem Stapel abgelegte Datenwort wird als Zelle bezeichnet wobei diese 16 32 oder 64 Bit gross sein kann Uberdies kann das Dictionary in mehrere Vocabularies nach Bedarf aufgeteilt werden Das Forth System selbst ist als virtuelle Maschine realisiert Alle Anweisungen und mathematischen Ausdrucke werden in umgekehrter polnischer Notation UPN formuliert Dies ergibt sich einfach daraus dass das Forth System fur jeden Eingabewert zunachst pruft ob dieser im Dictionary vorhanden ist Ist dies der Fall wird die entsprechende Funktion aufgerufen die dann auf alle bisher getatigten Eingaben zugreifen kann Wenn der Wert nicht im Dictionary vorhanden ist wird er als Zahlenwert oder Zeichenkette interpretiert Nachfolgende Eingaben sind in beiden Fallen zu diesem Zeitpunkt noch nicht eingelesen und haben daher auf den Programmablauf noch keine Auswirkung Man kann daher auch wie zum Zeitpunkt der Entstehung ublich den Eingabedatenstrom leicht durch ein sequentielles Medium wie z B einen Lochkarte nstapel oder ein Magnetband realisieren Forth hat zwei wesentliche Eigenschaften die es von vielen anderen Programmiersystemen seiner Zeit unterscheiden Forth war von Beginn an Public Domain Forth ist selbstkompilierend und erlaubt dabei dem Anwender direkten Zugriff auf den Compiler wodurch die Befehlsstruktur beliebig erweitert werden kannProgrammierung in Forth Bearbeiten Die Programmierung in Forth unterscheidet sich grundlegend von anderen Sprachen In Forth gibt es keinen Unterschied zwischen integrierten und programmierten Funktionen sog Wortern wohl aber einen funktionalen Kern von Wortern Primitiva die direkt in Maschinencode implementiert sind Es laufen auch keine unmittelbaren Routinen ab stattdessen wird die Sprache um zusatzliche Worter erweitert Der Start eines Programms entspricht in Forth dem Aufruf eines Wortes das somit die Hauptroutine des Programms darstellt Da auch der Compiler dadurch erweitert wird indem man Worter definiert die in der Entwicklungsumgebung ablaufen und damit den Zwischencode unmittelbar manipulieren fuhrt das zu einer Flexibilitat die nur mit wenigen anderen Hochsprachen zu erreichen ist Beispiel eines UPN Ausdrucks Bearbeiten Fur die Berechnung des Ausdrucks 5 3 7 2 wird in Forth die folgende Sequenz eingegeben 5 3 7 2 Die Verarbeitung des Ausdrucks erfolgt bereits beim Lesen Der Eingabestring wird von Leerzeichen in Worter unterteilt Das Wort 5 ist normalerweise nicht im Worterbuch vorhanden es wird als Zahl interpretiert das heisst ihr Wert hier 5 wird auf den Value Stack gelegt Gleiches gilt fur das Wort 3 Das nun folgende Wort ist hingegen im Worterbuch vorhanden Es wird daher die entsprechende Funktion aufgerufen Diese Funktion entfernt die obersten beiden Werte vom Stapel addiert sie und legt das Ergebnis zuruck auf den Stapel Die kleine Funktion ist ublicherweise in der jeweiligen Maschinensprache realisiert Auf dem Stapel liegt nun die Zahl 8 Das nachste Wort ist 7 es wird die Zahl 7 auf den Stapel gelegt Danach folgt das Wort 2 hier landet die Zahl 2 auf dem Stapel Als Nachstes wieder das Wort wodurch erneut die Additionsfunktion aufgerufen wird Auf dem Stapel liegt nun zuoberst die Zahl 9 darunter die Zahl 8 Danach wird das Wort gelesen und im Worterbuch gefunden die zugehorige Funktion nimmt die beiden obersten Werte vom Stapel und legt ihr Produkt darauf Die Multiplikationsfunktion kann je nach Forth System als Maschinencode oder ihrerseits bereits in Forth implementiert sein Das nachste gelesene Wort ist nun Dieses Wort nimmt den obersten Wert nun die Zahl 72 vom Stapel und gibt ihn auf dem Anzeigegerat aus Worter fur Stack Operationen Bearbeiten Befehl Stack BeschreibungDUP n1 n2 n1 n2 n2 dupliziert das oberste Stack ElementSWAP n1 n2 n3 n1 n3 n2 vertauscht die obersten beiden Stack ElementeROT n1 n2 n3 n4 n1 n3 n4 n2 holt das dritte Stack Element nach obenOVER n1 n2 n3 n1 n2 n3 n2 kopiert das zweite Stack ElementPICK n1 n2 n3 2 n1 n2 n3 n1 kopiert das angegebene hier 2 entspr dritte Stack ElementDROP n1 n2 n3 n4 n1 n2 n3 entfernt das oberste Stack ElementAnwendungen BearbeitenForth ist im Gegensatz zu Assembler eine Hochsprache die trotzdem hardwarenah und damit sehr schnell ausgefuhrt wird Die Ausbaufahigkeit ist ein Grundprinzip von Forth es mussen ohnehin die allermeisten Funktionen selbst programmiert werden Es existieren mit dem RTX2010 sogar Chipsatze fur Raumfahrt Anwendungen auf denen Forth direkt ausgefuhrt werden kann Forth eignet sich gut fur die interaktive Entwicklung von Steuerungssystemen wobei das Ergebnis der Lesbarkeit von Pseudocode nahekommen kann Ventil offnen Alarm einschalten Turen verriegeln usw Die fruhesten bekannten Anwendungen waren Steuerungen fur Radioteleskope und Observatorien fur Astronomie und Raumfahrt Andere Anwendungen im technisch wissenschaftlichen Bereich kamen erst spater hinzu Mit einem Einsatz auf der Raumsonde Galileo war Forth 1989 eine der ersten Hochsprachen im Weltraum bis dahin waren fur solche Systeme uberwiegend Assembler Sprachen ublich 5 6 Auch die Raumsonde Philae bekannt durch die Landung auf einem Kometen 2014 war in Forth programmiert Forth Implementierungen und abgeleitete Sprachen BearbeitenDie Portierung von Forth auf den Apple II fuhrte in den 1970er Jahren der Programmierer John T Draper durch damit entwickelte er die Textverarbeitung EasyWriter Eine grafikfahige Erweiterung von Forth fur den Apple II war GraFORTH 7 ASYST war eine Erweiterung von Forth zum Messen Steuern und Regeln fur PCs 8 Factor ist eine auf Forth aufbauende Programmiersprache die sich jedoch starker an die Anwendungsentwicklung orientiert als an der maschinennahen Funktionalitat von Forth Eine neuere Anwendung fur Forth ist das Konzept der Open Firmware IEEE 1275 Eine Weiterentwicklung von Forth ist Interpress von Xerox woraus sich wiederum die Seitenbeschreibungssprache Adobe PostScript entwickelte Das spater ebenfalls von Adobe entwickelte PDF lehnt sich zwar stark an PostScript an und konnte somit als Urenkel von Forth angesehen werden ist jedoch im Gegensatz zu PostScript und Forth keine vollstandige Programmiersprache 4tH Implementierung von Hans Bezemer multiplattform amforth fur den Atmel ATMega Mikrocontroller GPL myforth fur 8051 chips Tethered Forth myforth fur arduino C 128 Forth 1986 vom westdeutschen Holtkotter Verlag veroffentlichter Forth Dialekt fur den 8 Bit Heimcomputer Commodore 128 9 Fusion Forth fur den Atari ST kForth 32 kleiner Forth Interpreter in C geschrieben x86 32 Bit PropForth fur den Parallax Propeller Mikrocontroller Reverse Polish LISP RPL fur HP48 49 Taschenrechner herkforth ein colorForth fur Linux PPC Computer Intelligence Forth ein in Assembler geschriebenes ISO Forth PFE Portable Forth Environment Mops eine Entwicklungsumgebung fur den Apple Macintosh basierend auf Forth Reva fur x86 Prozessoren 32 Bit multiplattformfahig SP Forth OpenSource Forth fur Win32 u Linux STOIC von Jonathan Sachs fur Minirechner entwickelt und spater auf CP M portiert volksFORTH ein System der Forth Gesellschaft e V Win32Forth Public Domain LGPL fur Windows 32 Bit Delta Forth NET Forth Compiler fur die NET Plattform SwiftFORTH und SwiftX professionelles FORTH fur PC und Mikrocontroller iForth Shareware multiplattformfahiger Compiler fur 32 u 64 Bit colorForth fur den PC Floppy Image Extracter Source Reader bigFORTH x86 native code Forth mit MINOS GUI Gforth GNU Forth multiplattformfahiger Interpreter 32 und 64 Bit VFX Forth professioneller plattformubergreifender Forth Compiler RetroForth fur DOS Linux FreeBSD Windows oder standalone pForth PD portables Forth in C fur eingebettete Systeme oder Desktops DurexForth modernes OpenSource Forth fur den C64 ein Diskettenimage der jeweils aktuellen Version bekommt man hier JForth Demo fur AmigaSiehe auch BearbeitenJupiter Ace Canon CatLiteratur BearbeitenLeo Brodie Starting FORTH 1981 aktualisierte Online Edition Leo Brodie Thinking FORTH Punchy Publishing 2004 ISBN 978 0 9764587 0 8 Ronald Zech Die Programmiersprache FORTH eine kompakte Darstellung der Programmiersprache mit vielen Beispielen 2 Auflage Franzis 1985 ISBN 3 7723 7262 7 Thom Hogan FORTH Ganz einfach ubers v Karl Heinz Buchner Vieweg amp Sohn Braunschweig Wiesbaden 1985 ISBN 978 3 528 04292 9 C Kevin McCabe Programmieren mit FORTH ubers v Peter Monadjemi Springer Vieweg 1988 ISBN 978 3 322 90106 4 Edward K Conklin Elizabeth D Rather Forth Programmer s Handbook Forth Inc 1997 ISBN 0 9662156 0 5 Elizabeth D Rather Forth Application Techniques 5 Auflage Forth Inc Los Angeles 2008 ISBN 1 4196 8576 7 Mitch Derick Linda Baker FORTH Encyclopedia The Complete Forth Programmer s Manual 2 Ausg Mountain View Press Mountain View CA USA 1982 ISBN 978 9 993 16563 7 W P Salman O Tisserand B Toulout FORTH Editions EYROLLES Paris 1983 engl Ubersetzung von M J Stewart Macmillan Publishers Ltd 1984 ISBN 978 0 333 36798 8 Weblinks BearbeitenForth Gesellschaft e V Deutschland FORTH A Language for Interactive Computing Charles H Moores fruheste Veroffentlichung zur Sprache 1970 Thinking Forth Project Forth die etwas andere Programmiersprache 64 er Bericht 1984 Forth Audiocast bei Hackerfunk ch Zurich Forth Family TreeEinzelnachweise Bearbeiten http www forth200x org Charles Moore Forth The Early Years 1991 abgerufen am 5 Mai 2016 Entstehungsgeschichte von Forth https ub fnwi uva nl computermuseum tek4002a html Computers in Spaceflight The NASA Experience Chapter Six Distributed Computing on Board Voyager and Galileo history nasa gov abgerufen am 23 August 2019 Forth in Space Applications FORTH Inc abgerufen am 23 August 2019 GraFORTH II Language Reference PDF 4 5 MB 1 2 Vorlage Toter Link www virtualapple org Seite nicht mehr abrufbar festgestellt im November 2022 Suche in Webarchiven nbsp Info Der Link wurde automatisch als defekt markiert Bitte prufe den Link gemass Anleitung und entferne dann diesen Hinweis Campbell et al Up and Running with Asyst 2 0 MacMillan Software Co 1987 Manfred Wenzel Forth am Commodore 128 In Commodore Welt Band 3 Nr 11 1986 S 56 f Normdaten Sachbegriff GND 4017981 3 lobid OGND AKS LCCN sh85050918 Abgerufen von https de wikipedia org w index php title Forth Programmiersprache amp oldid 230379452