Ovviamente non sei un "fanboy" Lisp, perché i ragazzi e le ragazze che si adattano a quella descrizione possono solitamente essere contati per sapere che il Lisp è un linguaggio compilato. Lisp apparve nel 1958. Il manuale Lisp 1 del 1961 descrive già la compilazione.
L'interpretazione è utile; ci dà semantica senza dover scrivere prima un compilatore. Questa semantica fornisce un modello di riferimento per la semantica compilata: i programmi idealmente, interpretati e compilati fanno la stessa cosa. Quando troviamo che non lo fanno, o lo risolvono, o in qualche modo delineano e giustificano la situazione.
L'interpretazione può essere utilizzata per avviare un sistema Lisp compilato senza richiedere un'implementazione Lisp esistente, ma utilizzando un altro linguaggio come C. Interpretazione evita la necessità di scrivere un compilatore Lisp nel linguaggio di avvio.
L'implementazione CLISP di ANSI Common Lisp ne è un buon esempio. Per compilare CLISP è necessario solo un compilatore C. Il compilatore Lisp di CLISP è scritto in Lisp. Quindi, ovviamente, non hai nulla con cui eseguire il compilatore. La soluzione è interpretare il compilatore utilizzando un interprete scritto in C.
Mentre è in esecuzione interpretato, il compilatore compila gran parte della libreria Lisp.Il risultato di ciò è ciò che CLISP chiama "immagine di memoria parzialmente compilata": un'immagine che contiene routine compilate, ma alcune routine interpretate. (Penso che il compilatore stesso sia ancora interpretato codice).
Questa immagine mezza compilato viene quindi utilizzato per compilare il codice rimanente, con conseguente nell'immagine completamente compilato.
Senza l'interprete, compilatore di CLISP potrebbe essere bootstrap solo insistendo su un'altra implementazione Lisp per essere installato prima. (Il modo in cui hai bisogno di un compilatore C per il GCC di boostrap). Oppure, il compilatore di CLISP dovrebbe essere scritto in C, in modo che il compilatore venga compilato usando il compilatore C esistente e quindi applicato al codice Lisp per compilarlo prima che possa essere eseguito.
Nessuno ha ragione di voler scrivere un compilatore Lisp in C e richiedere un'implementazione Lisp per creare un'implementazione Lisp è un grosso svantaggio in un mondo in cui il Lisp non è onnipresente. Cosa accadrebbe con il modello boostrapping Lisp-compiler-in-C è che il compilatore Lisp scritto in C sarebbe uno completamente minima e anche incompleta che emette il codice di scarsa qualità, solo abbastanza buono per iniziare la boostrapping, e un "vero" il compilatore sarebbe ancora scritto in Lisp.
C'è una scuola di pensiero che dice che lo Smalltalkers tra la Banda dei Quattro mettere il modello interprete nel libro come uno scherzo, solo per deridere il C++ folla. Sfortunatamente, il pubblico del C++ non ha capito la battuta, e ora siamo rimasti bloccati. (Lo scherzo è, naturalmente, che in Smalltalk il programmatore ottiene il pieno accesso runtime programmatico al compilatore e interprete, e quindi non c'è bisogno di qualcosa di simile al modello interprete.) –