Ho visto molti curriculum CS e suggerimenti di apprendimento per i nuovi programmatori che chiedono all'aspirante programmatore di studiare un interprete lisp che è specificamente scritto in lisp. Tutti questi siti dicono cose simili a "è una rivelazione intellettuale", "è un'esperienza illuminante che ogni programmatore serio dovrebbe avere", o "ti mostra relazioni hardware / software" e altre dichiarazioni vaghe, in particolare da questo articolo tratto da questo stimabile how-to .
Il sentimento generale della mia domanda è: come fa lisp a raggiungere i suddetti obiettivi e perché lisp? Perché non un'altra lingua?
Lo sto chiedendo perché ho appena finito di scrivere un interprete di schemi in schema (tratto da SICP http://mitpress.mit.edu/sicp/ ) e ora sto scrivendo un interprete di pitone in schema e sto lottando per avere questa leggendaria epifania ciò dovrebbe provenire specificamente dal primo. Sto cercando dettagli tecnici specifici tra le due lingue che posso sfruttare nei loro interpreti di schemi per capire come funzionano i programmi.
Più specificamente:
Perché lo studio di un interprete scritto nella lingua che interpreta è così enfatizzato? È semplicemente un grande esercizio mentale mantenere la lingua originale e la lingua costruita o ci sono problemi specifici le cui soluzioni possono essere trovate solo nella natura del lingua originale?
In che modo gli interpreti lisp dimostrano buoni concetti di architettura per il futuro design del software?
Cosa mi perderei se facessi questo esercizio in un linguaggio diverso come C ++ o Java?
Qual è lo strumento da asporto o lo "strumento mentale" più utilizzato da questo esercizio? **
** Ho selezionato la risposta l'ho fatto perché mi sono accorto che ho guadagnato da questo esercizio più abilità nella progettazione di strumenti di parsing nella mia testa rispetto a qualsiasi altro strumento unico e mi piacerebbe trovare diversi metodi di analisi che possono lavorare meglio per il regime interprete dell'interprete python.