¿Es necesario compilar Python?
En términos sencillos, la compilación consiste en convertir un lenguaje de alto nivel en código de máquina que la CPU puede ejecutar. Cuando compilas C, haces exactamente esto. El resultado de la compilación es un archivo ejecutable binario y su sistema puede ejecutar el programa directamente.
Por el contrario, un intérprete funciona leyendo una línea de código de un archivo fuente a la vez y luego realizando las operaciones correspondientes, línea por línea. Por supuesto, así es como funcionan los llamados lenguajes de scripting.
Pero, de hecho, la definición anterior tiene demasiadas limitaciones. Los lenguajes reales suelen utilizar múltiples implementaciones para lograr funciones más útiles y potentes. Podemos pensar en la compilación como algo más general: convertir un idioma en otra forma de idioma. A menudo, el idioma de origen tiene un nivel superior al del idioma de destino, como en la conversión de C a código de máquina. Por supuesto, convertir JavaScript 8 a JavaScript 5 también es una compilación.
En Python, el código fuente se compila en un formato de nivel inferior al que llamamos código de bytes. El código de bytes es una secuencia de instrucciones, similar al conjunto de instrucciones de una CPU. Pero el código de bytes no lo ejecuta directamente la CPU, sino la máquina virtual. Por supuesto, una máquina virtual no imita el entorno de todo el sistema operativo, pero proporciona un entorno en el que se puede ejecutar el código de bytes.
Mire un pequeño fragmento de código Python y su código de bytes correspondiente
Del código de bytes, podemos ver f'...'. Esta cadena formateada funciona convirtiendo la cadena interna en una serie de cadenas literales y variables, y luego concatenándolas usando el signo +.
dis es un módulo de desmontaje en la biblioteca estándar de Python, que se utiliza para mostrar información de código de bytes del código Python. La máquina virtual que ejecuta el código de bytes mencionado anteriormente se puede implementar en cualquier lenguaje, incluido el propio Python. Si está interesado, consulte el proyecto nedbat/byterun en GitHub. Este proyecto se puede utilizar para aprender, pero no para producción.
Sin embargo, cuando ejecutamos Python, no tenemos idea del proceso de compilación; no hay llamadas explícitas al compilador, simplemente ejecutamos el archivo .py y la compilación se realiza automáticamente cuando es necesario. Esto es diferente de JAVA, donde cada vez que escribe código JAVA para ejecutarlo, debe compilarlo manualmente en un archivo .class y luego ejecutarlo. Por lo tanto, a JAVA se le llama lenguaje compilado y a Python se le llama lenguaje interpretado. Pero, de hecho, ambos lenguajes se compilan en código de bytes y luego se entregan a la máquina virtual para su ejecución.
Otra característica importante de Python es la línea de comandos interactiva. Puede escribir una declaración de Python y volver inmediatamente a la ejecución. De hecho, incluso en este caso, Python lo convertirá a código de bytes y luego lo ejecutará. Muchos lenguajes compilados no tienen esta funcionalidad de línea de comandos interactiva. Del mismo modo, debido a que no hay ningún programa compilado al que llamar, muchas personas se refieren al programa que ejecuta los archivos fuente de Python como intérprete de Python.
Aunque es muy breve, todavía me falta añadir algo. Algunos lenguajes compilados (como C o JAVA) también tienen líneas de comando interactivas, pero estas líneas de comando no son el foco de estos lenguajes. JAVA se compila inicialmente en código de bytes y luego se ejecuta, pero luego se ejecuta justo a tiempo (JIT); ) tecnología de compilación, puede compilar directamente en código de máquina, similar a C.
Como se puede ver en la descripción anterior, la interpretación y la compilación no se pueden separar completamente. A menudo nos gustaría clasificar los lenguajes de programación existentes en unas pocas palabras, pero en realidad es demasiado difícil hacerlo.
Un último punto es que la forma en que se ejecuta el código es una cuestión de implementación del lenguaje, no una característica del lenguaje.
Estamos hablando de Python arriba, pero en realidad es una descripción de CPython, que es un intérprete. Se llama CPython porque el intérprete está escrito en C y C es el intérprete predeterminado de Python. Por supuesto, hay muchos otros intérpretes, por ejemplo, PyPy es otro intérprete que utiliza tecnología JIT y se ejecuta mucho más rápido que CPython.
Volviendo a la pregunta del título, Python se denomina lenguaje interpretado porque no invoca operaciones de compilación, como se muestra en la figura, y exhibe más características interpretadas. Pero, de hecho, la compilación existe y el método específico de compilación depende de la implementación del lenguaje, es decir, del diseño del intérprete.
Para obtener más artículos técnicos relacionados con Python, visite la sección de tutoriales de Python para aprender. Lo anterior es el contenido detallado que compartí sobre si es necesario compilar Python. Espero que sea útil para todos. Para obtener más tutoriales sobre Python, preste atención a otros artículos relacionados de Global Green Vine.