Esto es solo una pregunta que tuve al leer sobre los 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.
Al contrario, C es un lenguaje compilado, ya que uno tiene que compilar el código fuente primero de acuerdo con la máquina y luego ejecutarlo. Este resultado es una ejecución mucho más rápida.
Ahora vamos a Python :
- Un código de 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 django. Después de la importación, cambio un poco el código y ejecuto las funciones importadas nuevamente para encontrar que todavía está ejecutando el código anterior. Esto sugiere que los archivos * .pyc son archivos python compilados similares a los ejecutables creados 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 de manera que indica un comportamiento interpretado.
Estos sugieren que un código de Python se compila 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?
Según la página Idiomas interpretados de wiki, aparece como un idioma compilado en el Código de Máquina Virtual, ¿qué es? ¿Qué significa eso?