Forth - vroby65/MiniForthConsole GitHub Wiki
#forth
🧠 Introduzione a Forth: Storia, Sintassi ed Esempi
🧠 Le origini: Charles H. Moore e l'idea di un nuovo linguaggio
Forth nasce alla fine degli anni '60 per opera di Charles H. Moore, un ingegnere elettronico e programmatore visionario. All’epoca, i linguaggi di programmazione erano ingombranti, poco flessibili e richiedevano molta memoria e potenza di calcolo, risorse che i computer del tempo avevano in quantità molto limitata.
Moore desiderava un linguaggio:
- veloce e compatto,
- molto vicino all’hardware,
- ma anche interattivo e flessibile.
Sviluppò il primo Forth nel 1968, su un minicomputer IBM 1130, ma fu nel 1970 che realizzò la prima versione operativa su PDP-11. In questa fase Forth non era un prodotto “pubblico”, ma uno strumento personale per il controllo di strumenti e dispositivi.
🔭 Il salto alla notorietà: osservatori astronomici
Il grande successo iniziale di Forth arrivò nel 1971, quando Moore lo usò per automatizzare il telescope da 40 pollici dell’osservatorio di Kitt Peak, in Arizona.
L’ambiente astronomico aveva bisogno di:
- reagire in tempo reale ai comandi dell’operatore,
- controllare motori e sensori,
- fare calcoli rapidi e precisi,
- il tutto in tempo reale e su hardware limitato.
Forth si dimostrò perfetto: compatto, efficiente, facilmente portabile e con prestazioni migliori rispetto ad altri linguaggi come Fortran o Assembly.
🌍 Diffusione e comunità
Dopo il successo in astronomia, Forth venne adottato anche in altri contesti industriali:
- automazione industriale,
- controllo di robot,
- sistemi di telecomunicazione,
- applicazioni spaziali (come la sonda Galileo della NASA, lanciata nel 1989: molte sue funzioni erano programmate in Forth).
A metà anni '70 nacque una piccola comunità di sviluppatori attorno a Forth. Nel 1978 fu fondata la Forth Interest Group (FIG) in California, che pubblicava software e documentazione, in particolare FIG-Forth, una distribuzione di riferimento gratuita e popolare.
🧰 Verso la standardizzazione
Negli anni ’80 iniziarono a comparire tante versioni differenti di Forth, ognuna con leggere modifiche alla sintassi, all’ambiente e alle funzioni di base. Questo causò problemi di compatibilità.
Per risolvere questo caos nacque ANS Forth, uno standard promosso da ANSI (American National Standards Institute), pubblicato nel 1994.
Lo standard:
- definisce la sintassi base e le parole fondamentali del linguaggio,
- permette compatibilità tra diverse implementazioni,
- lascia spazio all’estensibilità, un pilastro di Forth.
Nel tempo ANS Forth è stato aggiornato con il progetto Forth 200x, che porta nuove funzionalità mantenendo la filosofia originale.
💡 Filosofia unica
Forth è diverso da quasi tutti i linguaggi. Alcuni principi fondamentali:
- Interattività: Forth ha un interprete REPL incorporato. Puoi scrivere e testare codice in tempo reale.
- Stack-oriented: tutti i dati sono passati tramite uno stack. Niente variabili visibili, niente parametri in funzione.
- Estendibilità estrema: puoi definire nuove parole (funzioni) che si comportano come comandi nativi. Puoi anche modificare la sintassi del linguaggio stesso.
- Semplicità ed efficienza: implementare un interprete Forth completo può richiedere meno di 20 KB di codice.
🚀 Forth nello spazio
Un fatto poco noto ma incredibile è che Forth è stato usato nello spazio. In particolare:
- NASA ha utilizzato Forth nei sistemi di bordo della sonda Galileo verso Giove.
- Forth era ideale perché poteva girare su CPU con risorse limitate e offriva un controllo preciso e affidabile.
- Anche l’Agenzia Spaziale Europea (ESA) ha sperimentato con Forth in alcuni prototipi.
🧭 Declino e revival
Con la nascita di linguaggi moderni (C, C++, Java), Forth ha perso popolarità nel mondo generalista, ma non è mai sparito.
Oggi è ancora usato in:
- sistemi embedded (microcontrollori ARM, RISC-V),
- didattica,
- progetti hobbistici e sperimentali,
- linguaggi esoterici e minimalisti.
La sua filosofia radicale e la vicinanza all’hardware lo rendono unico nel panorama dei linguaggi di programmazione.
🕸️ Curiosità
- Moore ha anche creato hardware pensato per Forth, come il F21, un microprocessore progettato appositamente per essere programmato in Forth.
- Il linguaggio PostScript (usato nelle stampanti) è fortemente ispirato a Forth.
- Forth è un caso raro di linguaggio che può essere scritto in sé stesso.
Nel tempo sono nate molte versioni di Forth. Alcune tappe importanti:
- 1970 – Primo prototipo su PDP-11
- 1980 – Standardizzazione da parte della Forth Interest Group (FIG Forth)
- 1994 – Primo standard ANSI Forth (ANS Forth)
- 2008 – Revisione dello standard (Forth 200x)
- Oggi – Molti interpreti Forth disponibili per sistemi embedded, Linux, Windows, web, ecc.
🧾 Sintassi base e esempi
La sintassi di Forth è molto compatta. Tutto è una “word” (parola), cioè una funzione.
✅ Esempio 1: somma di due numeri
3 4 + . \ Output: 7
3 4
mette i numeri nello stack,+
somma i due numeri in cima allo stack,.
stampa il risultato.
✅ Esempio 2: definizione di una nuova parola (funzione)
: quadrato ( n -- n^2 ) dup * ;
5 quadrato . \ Output: 25
: nome ... ;
definisce una nuova parola,dup
duplica l’elemento in cima allo stack,*
moltiplica,- Il commento
( n -- n^2 )
descrive lo stack: dan
an^2
.
✅ Esempio 3: ciclo
: conta ( -- ) 10 0 do i . loop ;
conta \ Output: 0 1 2 3 4 5 6 7 8 9
Gioco alto basso
\ Gioco Alto-Basso in Forth
variable numero-segreto
variable tentativo
: genera-numero ( -- )
100 random 1 + numero-segreto ! ;
: leggi-tentativo ( -- )
." Inserisci un numero tra 1 e 100: "
accept
s>number drop tentativo ! ;
: confronta ( -- flag )
tentativo @ numero-segreto @
dup ." Il numero segreto è: " . cr
over < if
." Troppo basso!" cr false exit
then
over > if
." Troppo alto!" cr false exit
then
." Esatto!" cr true ;
: alto-basso ( -- )
cr ." *** Gioco Alto-Basso ***" cr
genera-numero
begin
leggi-tentativo
confronta
until
." Hai indovinato!" cr ;
\ Avvio del gioco
alto-basso
🛠️ Implementazioni attuali di Forth
⚙️ Interpreti e compilatori
Nome | Descrizione |
---|---|
gforth | Interprete Forth completo, aderente ad ANS Forth, disponibile per Linux e Windows |
VFX Forth | Versione commerciale potente per Windows |
iForth | Ottimizzato per performance su CPU moderne |
Mecrisp | Forth minimal per microcontrollori ARM |
4tH | Compilatore Forth-like con sintassi simile a Pascal |
SwiftForth | Ambito professionale, per Windows e macOS |
RetroForth | Moderna e minimalista, interessante per didattica |
🌐 Versioni online
Puoi provare Forth direttamente nel browser con questi strumenti:
-
Try Forth Online (JSForth): https://skilldrick.github.io/easyforth/
-
WebForth (WebAssembly): https://fatiherikli.github.io/webforth/
-
Repl.it (Gforth): https://replit.com/~ (cerca "Forth" e scegli un template Gforth)
✅ Conclusione
Forth è molto più di un linguaggio: è una filosofia di programmazione. Radicale, compatto, potente, ancora oggi affascina chi cerca un controllo totale sul sistema, o una via alternativa al modo “classico” di scrivere software.
📚 Risorse utili
- https://forth-standard.org/ – Standard ufficiale ANS Forth
- https://www.forth.com – Sito di SwiftForth
- Libro consigliato: "Starting Forth" di Leo Brodie – Ottimo per imparare da zero (anche online: http://www.forth.com/starting-forth/)