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: da n a n^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:


✅ 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