Paul Graham ha scritto che "The unusual thing about Lisp-- in fact, the defining quality of Lisp-- is that it can be written in itself." Ma questo non mi sembra il meno inusuale o definitivo.Cosa significa che "Lisp può essere scritto in sé stesso?"
ISTM che un linguaggio di programmazione è definito da due cose: il suo compilatore o interprete, che definisce la sintassi e la semantica per la lingua da fiat, e la sua libreria standard, che definisce in larga misura gli idiomi e le tecniche che sono esperti gli utenti useranno quando scrivono il codice nella lingua.
Con alcune eccezioni specifiche (ad esempio, i membri non C# della famiglia .NET), le librerie standard della maggior parte delle lingue sono scritte in quella lingua per due buoni motivi: poiché condivideranno lo stesso insieme di definizioni sintattiche, convenzioni di chiamata di funzioni e "aspetto generale" del linguaggio, e perché le persone che sono in grado di scrivere una libreria standard per un linguaggio di programmazione sono i suoi utenti, e in particolare i suoi progettisti. Quindi non c'è niente di unico lì; questo è abbastanza standard.
E ancora, non c'è nulla di unico o inusuale nel compilatore di un linguaggio scritto in sé. I compilatori C sono scritti in C. I compilatori Pascal sono scritti in Pascal. Il compilatore C# di Mono è scritto in C#. Diamine, anche some scripting languages ha implementazioni "scritte in sé".
Quindi cosa significa che Lisp è inusuale per essere scritto in sé stesso?
Come dici tu, un compilatore o un interprete self-hosting non è una grande novità. Un linguaggio il cui albero sintattico astratto * è * il codice, che a sua volta è completamente manipolabile in quanto i dati, al contrario, è piuttosto un animale diverso. Scansionando il documento di McCarthy sul quale stava commentando Paul Graham, non c'è ragione di dubitare che sia questa simmetria a essere nota. –
http://stackoverflow.com/questions/1481053/questo-è-il-exact-definition-of-a-metacircular-interpreter –