Por que o Python não possui isso?
Não sei por que você acha que não há implementações em Python que se preocupam com o desempenho. PyPy , IronPython e Jython são todas implementações de Python de força industrial e prontas para produção que se preocupam com o desempenho. Pyston é uma implementação em desenvolvimento que foi criada especificamente para desempenho. Unladen Swallow e Psyco também foram projetos para melhorar o desempenho do Python.
No entanto, o fato de os usuários do CPython superarem em muito a base total de usuários combinada de todas as outras implementações, de que a Unladen Swallow foi rejeitada pela comunidade, de que a maioria desses projetos está morta ou está lutando para atrair desenvolvedores, deve lhe dizer algo sobre como o Python a comunidade valoriza o desempenho.
Esta resposta é um bom exemplo da mentalidade típica da comunidade Python: em vez de corrigir os problemas de desempenho, eles preferem simplesmente escrever seu código não no Python.
Eu estive olhando PyPy e IronPython, que reivindicam ganhos de velocidade. PyPy Não entendo como uma implementação Python escrita em Python, uma linguagem interpretada, será mais rápida que a implementação de referência em C.
Primeiro: não importa o idioma que o compilador está escrito em Afinal, o compilador só é executado. Uma vez , por isso mesmo se fosse lento, isso não importa: o desempenho do compilador é irrelevante, o que é relevante é o desempenho da saída do compilador.
Em segundo lugar, uma vez que só importa o quão rápido a saída do compilador é, e o compilador é escrito em Python, ou seja, a linguagem que ele compila, ele pode realmente fazer -se rapidamente através da compilação de si.
Em terceiro lugar, não existe uma "linguagem interpretada". Uma linguagem é um conjunto de regras e restrições matemáticas. É uma especificação. Um pedaço de papel. Um idioma não é compilado ou interpretado. Uma linguagem simplesmente é . Compilação e interpretação são características de uma implementação de linguagem , mais precisamente, um compilador ou intérprete (duh!), Não a linguagem. Todo idioma pode ser implementado por um compilador. Todo idioma pode ser implementado por um intérprete. Você pode gerar mecanicamente um compilador a partir de um intérprete e um intérprete a partir de um compilador.
Mas tudo isso realmente não importa, porque o PyPy na verdade não é escrito em Python. Está escrito em RPython . O RPython consiste em duas partes, a linguagem de programação RPython e a estrutura do RPython.
A linguagem de programação RPython não é Python. É uma linguagem de programação diferente. O RPython é uma linguagem de programação com estaticamente, aproximadamente no mesmo nível de abstração que Java, com aproximadamente o mesmo desempenho que C. O RPython é um subconjunto sintático e semântico do Python, o que significa que todo programa RPython é um programa válido do Python e pode ser executado por uma implementação do Python (embora normalmente várias ordens de magnitude mais lenta, mas isso ainda seja útil para depuração, porque você obtém acesso a todas as ferramentas do Python e a interpretação começa imediatamente, enquanto a compilação da implementação da linguagem geralmente leva de 5 a 10 minutos ), mas o inverso não é verdadeiro.
A estrutura RPython é uma estrutura para escrever implementações de linguagem dinâmica de alto desempenho na linguagem de programação RPython. Inclui um coletor de lixo, espaço para objetos, protocolo de metaobjetos, objetos, tipos e operações predefinidos e assim por diante. Mas a joia da coroa é sua capacidade de gerar automaticamente um compilador JIT a partir de um intérprete: se você implementar uma linguagem na estrutura do RPython, precisará apenas escrever um intérprete, a estrutura do RPython cuidará do JIT.
Existem muitas implementações de linguagem na plataforma RPython , não apenas o PyPy.
IronPython, mesma ideia, mas não vejo como o .NET Framework aumentará a velocidade.
A maioria das implementações da ISO CLI, como as várias variantes do .NET da Microsoft ou Mono, contêm sofisticados coletores, otimizadores e compiladores de lixo. O mesmo vale para implementações Jython e Java.
O IronPython é um compilador, ele compila o código-fonte Python para as árvores DLR (DLR é o Dynamic Language Runtime), que são então compilados ainda mais para o código de bytes CIL, que normalmente é novamente compilado para o código da máquina nativo.