Quando falamos de Python, muitas vezes queremos dizer não apenas a linguagem, mas também a implementação. Python é na verdade uma especificação para uma linguagem que pode ser implementada de muitas maneiras diferentes.
Background
Antes de prosseguir, vamos entender a diferença entre bytecode e código de máquina (código nativo).
Machine Code(aka código nativo)
Machine code is set of instructions that directly gets executed by the CPU. Cada instrução executa uma tarefa muito única, como carga ou uma operação lógica sobre os dados na memória da CPU. Quase todas as linguagens de alto nível, como C, traduzem o código fonte em código de máquina executável com a ajuda de Compiladores, carregadores e linkers. Cada processador ou família de processadores tem seu próprio conjunto de instruções de código de máquina.
Bytecode
Bytecode também é representação binária executada por máquina virtual (não por CPU diretamente). A máquina virtual (que é escrita de forma diferente para máquinas diferentes) converte a instrução binária em uma instrução de máquina específica. Uma das linguagens que utiliza o conceito de Bytecode é Java.
Machine Code é muito mais rápida em comparação com Bytecode mas Bytecode é portátil e segura em comparação com Machine Code.
Implementations of Python
Cpython
A implementação padrão da linguagem de programação Python é Cpython. Como o nome sugere o Cpython é escrito em linguagem C. Cpython compila o código fonte do python em bytecode intermediário, que é executado pela máquina virtual do Cpython. CPython é distribuído com uma grande biblioteca padrão escrita em uma mistura de C e Python. CPython fornece o mais alto nível de compatibilidade com pacotes Python e módulos de extensão C. Todas as versões da linguagem Python são implementadas em C porque CPython é a implementação de referência.
Algumas das implementações que são baseadas no núcleo de tempo de execução do CPython mas com comportamento estendido ou características em alguns aspectos são Python sem pilha, wpython, MicroPython.
Python Stackless – CPython com ênfase na concorrência usando tasklets e canais (usados pela dspython para o Nintendo DS)
Outras implementações
Existem algumas outras implementações da linguagem Python também As únicas implementações que são conhecidas por serem compatíveis com uma determinada versão da linguagem são IronPython, Jython e PyPy.
Jython
Jython é uma implementação da linguagem de programação Python que pode rodar na plataforma Java. Os programas Jython usam classes Java em vez dos módulos Python. Jython compila em código byte Java, que pode então ser executado pela máquina virtual Java. Jython permite o uso de funções de biblioteca de classes Java a partir do programa Python. Jython é lento comparado ao Cpython e não é compatível com as bibliotecas CPython.
IronPython
Uma implementação Python escrita em C# com o framework .NET da Microsoft. Similar ao Jython, ele usa .Net Virtual Machine, ou seja, Common Language Runtime. IronPython pode usar o framework .NET e bibliotecas Python, e outras linguagens .NET podem usar o código Python de forma muito eficiente. IronPython tem melhor desempenho em programas Python que utilizam threads ou múltiplos núcleos, pois possui um JIT, e também porque não possui o Global Interpreter Lock.
PyPyPy
“Se você quer que seu código rode mais rápido, você provavelmente deveria apenas usar PyPy”. – Guido van Rossum (criador do Python)
Python é uma linguagem de programação dinâmica. Diz-se que o Python é lento, pois a implementação padrão do CPython compila o código fonte do python em bytecode, que é lento quando comparado ao código da máquina (código nativo). Aqui o PyPy vem em.
PyPyPy é uma implementação da linguagem de programação Python escrita em Python. O interpretador é escrito em RPython (um subconjunto de Python).
PyPy usa (compilação just-in-time). Em termos simples o JIT utiliza métodos de compilação para tornar o sistema de intérpretes mais eficiente e rápido. Assim basicamente o JIT torna possível compilar o código fonte em código de máquina nativo o que o torna muito rápido.
PyPy também vem com suporte a modo sem pilha, fornecendo micro-tarefas para concorrência massiva. Diz-se que Python é aproximadamente 7,5 vezes mais rápido que Cpython.
Algumas outras implementações de Python são CLPython, Pyston, Psyco, Cython, IPython.
Este artigo é contribuído por Saurabh Daalia. Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo usando contribute.geeksforgeeks.org ou enviar seu artigo pelo correio para [email protected]. Veja seu artigo aparecendo na página principal do GeeksforGeeks e ajude outros Geeks.