December 28, 2025

Von Python zu Forth

 Über die Vorteile der Python programmiersprache braucht es nicht vieler Worte zu verlieren. Es ist die anfängerfreundlichste Sprache die es derzeit gibt, unterstützt sowohl prozedurale als auch objektivorientierte Konzepte, bietet gut leserlichen Code, hat eine umfangreiche Bibliotheksauswahl und die selbe Software läuft sowohl in Linux als auch Windows (zumindest in der Theorie).

Dennoch gibt es einige wenige Python Programmierer die unzufrieden sind mit dem Ökosystem und die neugierig sind auf mögliche andere bessere Programmiersprachen. Die wohl faszienrende Sprache abseits des Mainstreams ist zweifelsfrei Forth um die sich zahlreiche Legenden ranken während die wenigsten Programmierer praktische Erfahrung damit sammeln konnten.

Der folgende Blogpost erläutert die Forth Sprache für geübte Python programmierer. Der wohl wichtigste Unterschied ist, dass Forth mit deutlich weniger Speicher auskommt als jede andere Sprache. Forth benötigt sogar weniger RAM als die hocheffiziente C Sprache. Wenn ein Betriebssystem wie Haiku was in C++ geschrieben wurde rund 500 MB an RAM benötigt um den desktop anzuzeigen, kommt die Forth sprache für das selbe Betriebssystem mit nur 5 MB aus, also um den Faktor 100x weniger. Der Hauptgrund für den Effizienzvorteil ist der Verzicht auf Variablen. Forth hat keine Variablen die an Funktionen übergeben werden, sondern Forth hat einen Stack der nur wenige Byte groß ist und die Kommunhkation zwischen den Funktionen sicherstellt. Weiterhin ist der Befehlsumfang von Forth kleiner, so dass die Programme weniger Speicher im RAM belegen.

Einschränkend sei gesagt, dass das selbe Programm einmal geschrieben in C und einmal in Forth, in beiden fällen gleich schnell abläuft. Das heißt eine Routine um grafiken zu zeichnen oder eine Game engine die 30fps erzeugt ist in beiden Programmiersprachen mehr oder weniger gleich schnell. Um Forth schneller zu machen bzw. die selbe Software mit weniger Joule an elektrischer Leistunbg ablaufen zu lassen benötigt man speziell angepasste Forth CPU wie deb GA144, was ein hocheffizienter Vektorprozessor mit 144 Kernen ist.

Aber zurück zur Programmiersprache Forth. Im wesentlichen ist Forth eine Teilmenge einer Assemblersprache. Anstatt die üblichen Assembler Mnemonics wie Mov, add, mul, and bietet Forth nur Befehle die auf den Stack zugreifen, also push und pop. Es gibt keine Register wie EAX, EBX, ECX sondern nur diesen einen Stack plus einen zweiten für den Instruction Pointer und mit dieser Teilmenge müssen Forth Programmier dann auskommen.

Leider ergibt sich daraus ein gravierender Nachteil der die geringe Verbreitung von Forth erklärt: die sprache ist noch umständlicher zu lernen als Assembler. In Assembler wurden in den 1980er auf Heimcomputern relativ viele Spiele programmiert, speziell auf den 8bit Rechnern von Commodore und Atari ist Assembler bis heute die einzige weit verbreitete Sprache. Assembler gilt im Vergleich zu C als unleserlich und als maschinennah. Forth übertrifft Assembler im Minimalsmus und ist noch unleserlicher und noch minimalistischer.

Der Hauptgrund warum Forth im Mainstream niemals Akzeptanz fand ist, dass die Sprache ein Problem löst, was es so technisch nicht gibt und zwar das Problem des Hauptspeichers. Such Sicht einer Forth virtual machine ist Speicher extrem knapp. Die Annahme lautet dass der verfügbare Arbeitsspoeicher weniger als 10 kb beträgt. Und mit diesem knappen RAM muss die Software dann vorlieb nehmen. In der Realität hingegen haben moderne PC deutlich mehr Speicher, und zwar 1 GB und deutlich mehr. In so einem Umfeld hat ein Forth Programm keinen Vorteil gegenüber Code der in C geschrieben wurde.´

No comments:

Post a Comment