Duplicar posibles:
Bootstrapping a language¿Por qué se deben escribir intérpretes de idiomas en el idioma de destino?
¿Cuál es la importancia de tener un intérprete para un determinado idioma escrito en el idioma de destino (por ejemplo, PyPy)?
Duplicar posibles:
Bootstrapping a language¿Por qué se deben escribir intérpretes de idiomas en el idioma de destino?
¿Cuál es la importancia de tener un intérprete para un determinado idioma escrito en el idioma de destino (por ejemplo, PyPy)?
Estoy seguro de que hay muchas razones diferentes para hacerlo. En algunos casos, es porque realmente cree que el idioma es la mejor herramienta ... por lo que escribir el intérprete de idioma o el compilador en el idioma en sí se puede ver como una forma de comida para perros. Si está realmente interesado en este tema, el siguiente artículo es una lectura realmente sorprendente sobre el desarrollo de Squeak. La versión actual de squeak es un tiempo de ejecución smalltalk escrito en smalltalk.
El Squeak VM no está realmente escrito en Smalltalk, sino en Slang. Slang es solo C con una sintaxis Smalltalk. –
no es tanto acerca de cómo escribir el intérprete en sí mismo - más acerca de cómo escribir el intérprete en un lenguaje de alto nivel, no en C. Lo ideal sería que, al hacerlo permite cambiar detalles de la implementación y haciendo que el intérprete sea más modular.
Para el caso específico de PyPy, escribir el intérprete y los objetos centrales en (R) Python permite redirigir PyPy para objetivos (C, JVM, .NET, JavaScript, etc.) y también permite reemplazar aspectos como el recolector de basura.
Un beneficio adicional es que si implementa buenos debuggers e IDE para su idioma de destino, también funcionan para su idioma de origen.
De esta manera, puede probar que el idioma de destino es un asunto serio, porque poder hacer que compile algo es una señal de que es un buen lenguaje.
OK, C++ y Java producen compiladores también ... así que tal vez ese argumento es solo la mitad de bueno de lo que parece.
Creo que esto estaba cubierto de hilos de "arranque": http://stackoverflow.com/questions/13537/bootstrapping-a-language http://stackoverflow.com/questions/193560/implementing-a-compiler-in -Sí mismo –