Pregunta

Las lenguas, como por ejemplo, Ruby (si se ejecuta MRI, me refiero a no compilados a código de bytes) ejecutar realmente analizada cada vez cuando, por ejemplo, es necesaria una ejecución del método o bucle cuerpo? Es decir, para ejecutar un bucle, es necesario analizar su cuerpo N tiempos?

acabo siempre pensé que todos estos programas están siendo analizadas una vez en el arranque, transformado en un árbol de declaraciones ‘inflexible de tipos’, etc. ¿No es cierto?

¿Fue útil?

Solución

Yo sólo estaré media ahora y decir que casi todo el lenguaje de programación CADA se interpreta, si se trata de un software (Ruby, Python, Java) o un hardware (C, C ++) intérprete:)

Para obtener una respuesta real, mientras que yo no sé acerca de la implementación interna de Ruby, estoy seguro que ellos no analizar el estado de una y otra y otra vez. Si bien no se utiliza el código de bytes en la implementación original (o hizo que ya migran?), Utilizan alguna representación intermedia (se puede ver muy bien cuando se quiere escribir C-extensiones para ello), por lo que acaba de ejecutar a personas una y otra vez.

Otros consejos

interpretada es una palabra con una definición muy floja. Incluso instrucciones de código máquina son interpretados por el procesador.

En una distinción general entre los idiomas que se compilan antes de que se ejecutan y los idiomas que no tienen un proceso de compilación y se ejecutan dentro de otro programa, llamado el intérprete. Los últimos tipos de idiomas se refieren a menudo como lenguajes interpretados .

La línea no es tan clara en algunos casos:

  • Algunos idiomas puede ser compilado o interpretado, ya sea, por ejemplo, PHP.
  • Algunos código interpretado podría ser compilado en tiempo de ejecución en instrucciones de máquina nativo ( JIT compilación ).
  • Algunos lenguajes compilados puede tener una funcionalidad que permite exec código que se genera y se ejecuta en tiempo de ejecución, sin pasar por el proceso de compilación normal.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top