He visto muchos currículos de CS y sugerencias de aprendizaje para nuevos programadores que requieren que el aspirante a programador estudie un intérprete de lisp que está específicamente escrito en lisp. Todos estos sitios dicen cosas similares a "es una revelación intelectual", "es una experiencia de iluminación que todo programador serio debería tener" o "muestra relaciones hardware / software" y otras declaraciones vagas, particularmente de este artículo tomado de este reputado cómo hacerlo .
El sentimiento general de mi pregunta es, ¿cómo logra lisp los objetivos anteriores y por qué lisp? ¿Por qué no otro idioma?
Estoy preguntando esto porque acabo de terminar de escribir un intérprete de esquema en esquema (tomado de SICP http://mitpress.mit.edu/sicp/ ) y ahora estoy escribiendo un intérprete de Python en esquema y estoy luchando por tener esta legendaria epifanía se supone que proviene específicamente del primero. Estoy buscando detalles técnicos específicos entre los dos idiomas que pueda explotar en sus intérpretes de esquemas para comprender cómo funcionan los programas.
Más específicamente:
¿Por qué es tan enfatizado el estudio de un intérprete que está escrito en el idioma que interpreta? ¿Es simplemente un gran ejercicio mental para mantener el lenguaje original y el lenguaje correcto o existen problemas específicos cuyas soluciones solo se pueden encontrar en la naturaleza del lenguaje? ¿idioma original?
¿Cómo demuestran los intérpretes lisp buenos conceptos de arquitectura para el diseño de software futuro?
¿Qué extrañaría si hiciera este ejercicio en un lenguaje diferente como C ++ o Java?
¿Cuál es la comida para llevar o "herramienta mental" más utilizada en este ejercicio? ** **
** he seleccionado la respuesta que hice porque he notado que he obtenido de este ejercicio más habilidad en el diseño de herramientas de análisis sintáctico en mi cabeza que cualquier otra herramienta única y me gustaría encontrar diferentes métodos de análisis que pueden funcionar mejor para el esquema intérprete que el intérprete de python.