GeeksforGeeks

Cuando hablamos de Python a menudo nos referimos no sólo al lenguaje sino también a la implementación. Python es en realidad una especificación para un lenguaje que puede ser implementado de muchas maneras diferentes.

Antecedentes
Antes de seguir adelante vamos a entender la diferencia entre bytecode y código de máquina (código nativo).
Código de máquina (aka código nativo)
El código de máquina es un conjunto de instrucciones que se ejecuta directamente por la CPU. Cada instrucción realiza una tarea única, como la carga o una operación lógica en los datos de la memoria de la CPU. Casi todos los lenguajes de alto nivel, como C, traducen el código fuente en código máquina ejecutable con la ayuda de compiladores, cargadores y enlazadores. Cada procesador o familia de procesadores tiene su propio conjunto de instrucciones de código máquina.
Bytecode
También es una representación binaria ejecutada por la máquina virtual (no por la CPU directamente). La máquina virtual (que se escribe diferente para diferentes máquinas) convierte la instrucción binaria en una instrucción específica de la máquina. Uno de los lenguajes que utiliza el concepto de Bytecode es Java.

El Código Máquina es mucho más rápido que el Bytecode pero el Bytecode es portable y seguro en comparación con el Código Máquina.

Implementaciones de Python
Cpython
La implementación por defecto del lenguaje de programación Python es Cpython. Como su nombre indica Cpython está escrito en lenguaje C. Cpython compila el código fuente de python en bytecode intermedio, que es ejecutado por la máquina virtual Cpython. CPython se distribuye con una gran biblioteca estándar escrita en una mezcla de C y Python. CPython proporciona el más alto nivel de compatibilidad con los paquetes de Python y los módulos de extensión de C. Todas las versiones del lenguaje Python están implementadas en C porque CPython es la implementación de referencia.
Algunas de las implementaciones que se basan en el núcleo del runtime de CPython pero con comportamiento o características extendidas en algunos aspectos son Stackless Python, wpython, MicroPython.
Stackless Python – CPython con énfasis en la concurrencia usando tasklets y canales (usado por dspython para la Nintendo DS)

Otras implementaciones
También hay algunas otras implementaciones del lenguaje Python Las únicas implementaciones que se sabe que son compatibles con una versión determinada del lenguaje son IronPython, Jython y PyPy.

Jython
Jython es una implementación del lenguaje de programación Python que puede ejecutarse en la plataforma Java. Los programas de Jython utilizan clases de Java en lugar de módulos de Python. Jython compila en código de bytes de Java, que luego puede ser ejecutado por la máquina virtual de Java. Jython permite utilizar las funciones de la biblioteca de clases Java desde el programa Python. Jython es lento en comparación con Cpython y carece de compatibilidad con las bibliotecas de CPython.

IronPython
Una implementación de Python escrita en C# dirigida al marco .NET de Microsoft. Al igual que Jython, utiliza la máquina virtual .Net, es decir, Common Language Runtime. IronPython puede utilizar el .NET Framework y las bibliotecas de Python, y otros lenguajes .NET pueden utilizar el código de Python de forma muy eficiente. IronPython se comporta mejor en los programas de Python que utilizan hilos o múltiples núcleos, ya que tiene un JIT, y también porque no tiene el bloqueo global del intérprete.

PyPy
«Si quieres que tu código se ejecute más rápido, probablemente deberías usar PyPy». – Guido van Rossum (creador de Python)
Python es un lenguaje de programación dinámico. Se dice que Python es lento ya que la implementación por defecto de CPython compila el código fuente de python en bytecode que es lento en comparación con el código máquina (código nativo). Aquí entra PyPy.
PyPy es una implementación del lenguaje de programación Python escrita en Python. El intérprete está escrito en RPython (un subconjunto de Python).

PyPy utiliza (compilación justo a tiempo). En términos simples JIT utiliza métodos de compilación para hacer el sistema de interpretación más eficiente y rápido. Así que básicamente JIT hace posible compilar el código fuente en código máquina nativo que lo hace muy rápido.
PyPy también viene por defecto con soporte para el modo stackless, proporcionando micro-hilos para la concurrencia masiva. Se dice que Python es aproximadamente 7,5 veces más rápido que Cpython.

Algunas otras implementaciones de Python son CLPython, Pyston, Psyco, Cython, IPython.

Este artículo ha sido escrito por Saurabh Daalia. Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando contribute.geeksforgeeks.org o enviar tu artículo por correo a [email protected]. Verás cómo tu artículo aparece en la página principal de GeeksforGeeks y ayudarás a otros Geeks.

Deja un comentario