Ho visto molti curricula CS e suggerimenti di apprendimento per i nuovi programmatori che richiedono all'aspirante programmatore di studiare un interprete Lisp specificamente scritto in lisp. Tutti questi siti dicono cose simili a "è una rivelazione intellettuale", "è un'esperienza di illuminazione che ogni programmatore serio dovrebbe avere" o "mostra le relazioni hardware / software" e altre affermazioni vaghe, in particolare da questo articolo tratto da questa procedura affidabile .
Il sentimento generale della mia domanda è, in che modo il lisp raggiunge gli obiettivi sopra indicati e perché il lisp? Perché non qualche altra lingua?
Te lo chiedo perché ho appena finito di scrivere un interprete di schemi in schema (tratto da SIC link ) e ora sono scrivendo un interprete python in schema e sto lottando per avere questa leggendaria epifania che dovrebbe venire specificatamente dal primo. Sto cercando dettagli tecnici specifici tra le due lingue che posso sfruttare nei loro programmi di interpretazione per capire come funzionano i programmi.
Più in particolare:
Why is the study of an interpreter that is written in the language it interprets so emphasized - is it merely a great mental exercise to keep the original language and built language straight or are there specific problems whose solutions can only be found in the nature of the original language?
How do lisp interpreters demonstrate good architecture concepts for one's future software design?
What would I miss if I did this exercise in a different language like C++ or Java?
What is the most used takeaway or "mental tool" from this exercise? **
** Ho selezionato la risposta che ho fatto perché ho ho notato che ho acquisito da questo esercizio più abilità nel progettare strumenti di analisi nella mia testa rispetto a qualsiasi altro strumento singolo e mi piacerebbe trovare diversi metodi di analisi che potrebbero funzionare meglio per l'interprete dello schema rispetto all'interprete python.