Question

J'ai eu du mal à comprendre la traduction de PyPy.Cela ressemble à quelque chose d'absolument révolutionnaire rien qu'en lisant la description, mais j'ai du mal à trouver une bonne documentation sur la traduction réelle d'un morceau de code du monde réel en quelque chose comme LLVM.Une telle chose existe-t-elle ?La documentation officielle de PyPy ne fait qu'effleurer la fonctionnalité, plutôt que de fournir tout ce que je peux essayer moi-même.

Était-ce utile?

La solution

Ce document semble entrer dans les détails (et je pense qu'une description complète est hors de portée d'une réponse stackoverflow) :

L'idée générale de traduire d'une langue à une autre n'est pas particulièrement révolutionnaire, mais elle n'a gagné que récemment en popularité et en applicabilité dans les applications du « monde réel ». GWT le fait avec Java (générant du Javascript) et il existe également une bibliothèque pour traduire Haskell dans divers autres langages (appelée YHC)

Autres conseils

Si vous voulez des exemples concrets, Démarrage de PyPy Le document comporte une section intitulée « Essayer le traducteur ».

Le traducteur PyPy n'est en général pas destiné à un usage plus public.Nous l'utilisons pour traduire notre propre interprète Python (y compris JIT et GCS, tous deux écrits en RPYthon, ce sous-ensemble restreint de Python).L'idée est qu'avec un bon JIT et GC, vous pourrez accélérer même sans connaître ou utiliser la chaîne d'outils de traduction de Pypy (et plus important encore, sans vous restreindre à Rpython).

Bravo, fijal

Recherchez-vous une traduction spécifique à Python, ou simplement le général "comment compiler du code en bytecode" ?Si ce dernier cas est votre cas, vérifiez le tutoriel LLVM.Je trouve particulièrement intéressant le chapitre deux, qui vous apprend à écrire un compilateur pour votre propre langage.

Cela ressemble à quelque chose d'absolument révolutionnaire à la simple lecture de la description,

Pour autant que je sache, PyPy est nouveau dans le sens où il s'agit du premier système expressément conçu pour exécution langues.D'autres outils existent pour aider avec une grande partie du front-end, comme les générateurs d'analyseurs, ou pour le back-end, comme la génération de code, mais il n'existait pas grand-chose pour connecter les deux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top