Forth ist eine stapelorientierte (stack-basierte) Programmiersprache, die Charles H. „Chuck“ Moore ab 1970 entwickelte. Sie arbeitet mit einer Daten- und Rückkehr-Struktur auf einem Stack: Zahlen werden auf den Stapel gelegt, Wörter (Funktionen) nehmen sie von dort und legen Ergebnisse wieder ab. Forth ist extrem klein, schnell und wurde u. a. in der NASA-Raumfahrt und in Open Firmware (Boot-Firmware von Rechnern) eingesetzt.

Umgekehrte Polnische Notation (RPN)

Forth verwendet die umgekehrte polnische Notation: Der Operator folgt seinen Operanden. Die Berechnung 2 + 3 schreibt man als 2 3 + — erst werden beide Zahlen auf den Stack gelegt, dann addiert das Wort + die obersten zwei Werte und legt das Ergebnis (5) zurück. Diese Notation erspart Klammern und entspricht exakt der Funktionsweise einer CPU.

Stack-Operationen

dup    verdoppelt den obersten Wert (… a → … a a)
drop   entfernt den obersten Wert (… a → …)
swap   vertauscht die beiden obersten Werte (… a b → … b a)
over   kopiert den zweitobersten Wert (… a b → … a b a)
rot    rotiert die drei obersten Werte (… a b c → … b c a)
.s     zeigt den kompletten Stack an (Gforth)

Eigene Wörter definieren

Neue Wörter entstehen mit : und enden mit ;. Eine Quadrat-Funktion definiert man so:

: quadrat  dup * ;

Der Aufruf 5 quadrat liefert 25. Wörter werden im Dictionary abgelegt und können jederzeit neu definiert oder erweitert werden — das System ist komplett erweiterbar und wächst mit den Anforderungen.

Gforth als moderne Implementierung

Gforth ist der freie Forth-Compiler für Linux/Unix und erfüllt die Standards ANS Forth (Forth-94, 1994) und Forth-2012. Ein typisches Programm startet man mit gforth datei.fs; interaktiv lassen sich Befehle direkt in der Konsole testen. Weitere bekannte Systeme sind SwiftForth (kommerziell) und verschiedene Embedded-Forths für Mikrocontroller.

Verwandte Grundlagen: APL-Befehle (ebenfalls kompaktes, mathematisch geprägtes Paradigma), Wolfram-Befehle (symbolische Berechnung), Assembly-Befehle (maschinennah, ähnlich minimal), C/C++-Befehle und Python-Befehle (als etablierte Alternativen).