Che cos'è Self-compilation (a.k.a. Meta-compilation ) in Forth? Come funziona e perché è utile? Ha un utilizzo pratico e viene ancora utilizzato nei sistemi moderni?
Un metaprogramma è uno che accetta un altro programma come input. Ogni compilatore è un metaprogramma, in questo senso.
Un metacompiler è un compilatore che accetta un compilatore, di solito sé stesso. È strettamente correlato all'idea di un compilatore bootstrap. Un altro concetto correlato è l'omoiconicità, il che significa che la struttura del programma è simile nella forma ai dati su cui il programma opera.
Le lingue archetipiche da considerare sono Lisp e Forth. In Lisp tutto è una lista; c'è un nucleo di operazioni che include la capacità di definire nuove operazioni; e un grande sistema Lisp può essere riavviato da un piccolo core.
Forth si occupa di pile e parole. Ha una piccola serie di parole chiave che eseguono operazioni di base, inclusa la capacità di definire nuove parole; e una grande applicazione Forth viene avviata da quel piccolo nucleo.
Il vantaggio principale in entrambi i casi è la possibilità di eseguire il bootstrap di un nuovo sistema scrivendo un minuscolo (4K o meno) core in linguaggio assembly su qualche processore, e quindi utilizzarlo per compilare il resto.
Forth è vivo e vegeto e viene ancora utilizzato in alcuni sistemi embedded, ma i principali vantaggi sono stati superati da processori più veloci con più memoria e l'uso di linguaggi di livello superiore standard. Ma se vuoi davvero scrivere codice per un processore troppo piccolo da vedere ad occhio nudo, tieni a mente Forth!
Leggi altre domande sui tag programming-languages compiler forth