No creo que sea posible implementar un intérprete para un idioma en ese idioma (llame a esto A), luego ejecútelo sobre otro intérprete existente (llame a este B) para ese idioma y ejecute un programa (llame esta P), y tiene P ejecutándose (A ejecutándose en B) es más rápido que P ejecutándose en B.
Cada operación de A tendrá que implementarse con al menos una operación de B. Entonces, incluso si B es atrozmente malo y A, es óptimamente bueno, el hecho de que A se ejecute en B significa que la maldad de B se ralentizará A.
Podría ser posible implementar un compilador intérprete + JIT para un idioma en el idioma mismo , donde el JAT el compilador produce algún otro código más rápido en tiempo de ejecución y tiene P ejecutándose (A ejecutándose en B) más rápido que P ejecutándose en B. La parte del tiempo de ejecución de P que no está compilada JIT será más lenta (mucho más lenta, normalmente) pero si el compilador JIT identifica con éxito las partes "calientes" de P y las ejecuta más rápidamente que B, entonces todo el sistema podría funcionar más rápido en general.
Pero eso no es realmente interesante. También es posible implementar un compilador para un idioma en ese idioma (C), compilarlo con un compilador existente (D) y hacer que el nuevo lenguaje de compilación produzca un código que sea más rápido de lo que el compilador original habría producido. Espero que eso no te sobresalte; debe quedar claro que la velocidad del código emitido por D solo tendrá un efecto en el tiempo de ejecución de C, no en el tiempo de ejecución de otros programas compilados con C.
Se han escrito compiladores en los idiomas que compilan hecho por décadas (GCC está escrito en C, por ejemplo), y no es realmente relevante para la pregunta real que creo que estás haciendo; tampoco JIT-compiling es un lenguaje que se usa a sí mismo. En ambos casos, la ejecución subyacente es diferente del idioma que está considerando; generalmente código de máquina.
Sin embargo, la fuente de su pregunta es un error. El intérprete de Python de PyPy no está realmente implementado en Python. El proyecto PyPy tiene un intérprete para Python escrito en RPython. RPython es un subconjunto de Python, elegido para que pueda compilarse eficientemente en código de máquina; como lenguaje RPython se parece mucho más a Java con inferencia de tipo y bloques con sangría en lugar de llaves. El proyecto PyPy también tiene un compilador para RPython que está escrito en Python, y es capaz de (en su mayoría) agregar automáticamente un compilador JIT al cualquier intérprete que compila.
Cuando está utilizando realmente el intérprete PyPy en producción, está utilizando un intérprete de código de máquina compilado de las fuentes de RPython, del mismo modo que cuando usa el intérprete CPython utiliza un intérprete de código de máquina compilado de C código fuente. Si ejecuta el intérprete PyPy encima de otro intérprete de Python (que puede hacer porque el código de RPython válido también es código de Python válido, pero no al revés), entonces se ejecuta mucho más lento que el intérprete de CPython.
No conozco pyton, pero para hacer una JVM en Java necesitarás escribir muchos métodos nativos en otro idioma (por ejemplo, C++). – vulkanino
¿Por qué la inacepcion? – Marcin
Lo siento. Lo hice para considerar la última respuesta para una posible aceptación. Mirando la nueva respuesta en este momento, si es mejor de lo que voy a aceptar, de lo contrario, volveré a recibir la respuesta anterior. – ApprenticeHacker