The Forth Language #2

Il Forth è un linguaggio strano: è un linguaggio interpretato ma contemporaneamente è compilato, in pratica ogni volta che viene valutata una espressione Forth, il compilatore la trasforma in un insieme di chiamate a subroutine, in cui la chiamata stessa è sottintesa. L’interprete esegue in sequenza tutte le subroutine prodotte dal compilatore. Il vantaggio è che questo tipo di codifica produce del codice estremamente compatto, lo svantaggio è che l’esecuzione è leggermente rallentata, rispetto all’esecuzione di un codice equivalente scritto in Assembly.

Questa tecnica di compilazione è chiamata Threaded Code.

Consideriamo un semplice esempio:

: triplo 3 * ;

Questa riga di codice definisce una nuova word il cui nome è triplo che appunto triplica il valore in cima alla catasta.

Il linguaggio Forth mette a disposizione svariate decine di word, cioè di parole chiave che sono associate a varie funzioni.

Per esempio * è la word associata alla funzione di moltiplicazione dei due valori in cima alla catasta. Vi sono altre word di tipo aritmetico e vi sono word che manipolano la catasta, infine vi sono word che consentono di definire nuove word.

La word : inizia la definizione di una nuova word, il cui nome è la stringa che segue e la cui funzionalità è definita dalle words che seguono la stringa.

La word ; termina la definizione di una nuova word.

Si dice che con : si entra in stato compilazione e con ; si torna allo stato inteprete o esecuzione.

Che differenza c’è tra questi due stati: è semplice, ogni word ha due differenti comportamenti (uno in stato compilazione e uno in stato esecuzione), e quando viene letta dall’interprete agisce in un modo oppure nell’altro.

Per capire bene questo aspetto bisogna comprendere come è fatta una word e cos’è il dizionario.

Ma questo ve lo spiego nella prossima puntata……..

 

Lascia un commento