Pergunta

Estou tendo dificuldades para entender a tradução do PyPy.Parece algo absolutamente revolucionário simplesmente lendo a descrição, no entanto, tenho dificuldade em encontrar uma boa documentação sobre como realmente traduzir um trecho de código do mundo real para algo como LLVM.Será que tal coisa existe?A documentação oficial do PyPy apenas aborda a funcionalidade, em vez de fornecer qualquer coisa que eu possa experimentar sozinho.

Foi útil?

Solução

Este documento parece entrar em muitos detalhes (e acho que uma descrição completa está fora do escopo de uma resposta stackoverflow):

A idéia geral de traduzir de um idioma para outro não é particularmente revolucionária, mas só recentemente vem ganhando popularidade/aplicabilidade em aplicações do "mundo real". GWT faz isso com Java (gerando Javascript) e há uma biblioteca para traduzir Haskell para várias outras linguagens também (chamada YHC)

Outras dicas

Se você quiser alguns exemplos práticos, Primeiros passos do PyPy documento tem uma seção intitulada "Experimentando o tradutor".

O tradutor PyPy, em geral, não se destina ao uso público.Nós o usamos para traduzir nosso próprio intérprete Python (incluindo JIT e GCS, ambos escritos em Rpython, esse subconjunto restrito de Python).A idéia é que, com o bom JIT e o GC, você poderá acelerar, mesmo sem saber ou usar a cadeia de ferramentas de tradução da Pypy (e, mais importante, sem se restringir a Rpython).

Saúde, Fijal

Você está procurando uma tradução específica do Python ou apenas o geral "como você compila algum código para bytecode"?Se este for o seu caso, verifique o tutorial do LLVM.Acho especialmente interessante o capítulo dois, que ensina você a escrever um compilador para sua própria linguagem.

Parece algo absolutamente revolucionário simplesmente lendo a descrição,

Pelo que eu sei, o PyPy é novo no sentido de que é o primeiro sistema expressamente projetado para implementando línguas.Existem outras ferramentas para ajudar com grande parte do front-end, como geradores de analisador, ou para o back-end, como geração de código, mas não existiam muitas para conectar os dois.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top