Auto-compilazione in avanti

4

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?

    
posta 53777A 06.04.2016 - 11:19
fonte

1 risposta

7

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!

    
risposta data 06.04.2016 - 13:34
fonte

Leggi altre domande sui tag