Esto es solo una pregunta que tuve al leer sobre idiomas interpretados y compilados.
Ruby es sin duda un lenguaje interpretado ya que el código fuente es procesado por un intérprete en el punto de ejecución.
Por el contrario, C es un lenguaje compilado, ya que primero hay que compilar el código fuente de acuerdo con la máquina y luego ejecutarlo. Este resultado es una ejecución mucho más rápida.
Ahora llegando a Python :
- Un código python ( somefile.py ) cuando se importa crea un archivo ( somefile.pyc ) en el mismo directorio. Digamos que la importación se realiza en un shell de Python o en un módulo de Django. Después de la importación, cambio el código un poco y ejecuto las funciones importadas nuevamente para encontrar que todavía se está ejecutando el código anterior. Esto sugiere que los archivos * .pyc son archivos compilados de Python similares al ejecutable creado después de la compilación de un archivo C, aunque no puedo ejecutar el archivo * .pyc directamente.
- Cuando el archivo python (somefile.py) se ejecuta directamente (./somefile.py o python somefile.py) no se crea ningún archivo .pyc y el código se ejecuta como indica un comportamiento interpretado.
Esto sugiere que se compila un código de Python cada vez que se importa en un nuevo proceso para crear un .pyc mientras se interpreta cuando se ejecuta directamente.
Entonces, ¿qué tipo de lenguaje debería considerarlo? ¿Interpretado o compilado? ¿Y cómo se compara su eficiencia con los idiomas interpretados y compilados?
De acuerdo con la página de Idiomas Interpretados de wiki , aparece como un idioma compilado en Virtual Machine Code, ¿qué significa eso?
RUN
. Era como si tuviera un compilador que realizó el paso lexing y luego generó una secuencia de tokens que tuvieron que analizarse cada vez que se ejecutó el programa. No se parece en nada a la compilación moderna de bytecode como se hace, por ejemplo javac
, que abarca el lexing, el análisis y la optimización.