Ich habe es schwer gehabt, PyPys Übersetzung zu verstehen. Es scheint etwas absolut Revolutionäres zu sein, wenn ich einfach die Beschreibung lese, aber ich bin schwer bedrängt, eine gute Dokumentation zu finden, um tatsächlich einen realen Code in etwas wie LLVM zu übersetzen. Gibt es so etwas? In der offiziellen PyPy-Dokumentation wird nur die Funktionalität überflogen, anstatt alles zu liefern, was ich selbst ausprobieren kann.Wo kann ich mehr über die Übersetzungsfunktion von PyPy erfahren?
Antwort
Dieses Dokument scheint in ziemlich viel Detail zu gehen (und ich denke, dass eine vollständige Beschreibung für eine Stackoverflow Antwort außerhalb des Bereichs ist):
Die allgemeine Idee des Übersetzens von einer Sprache zur anderen ist nicht besonders revolutionär, aber es hat erst in letzter Zeit Popularität/Anwendbarkeit in "realen" Anwendungen gewonnen. GWT tut dies mit Java (Erzeugung von Javascript) und es gibt eine Bibliothek für so gut Haskell in verschiedene andere Sprachen zu übersetzen (genannt YHC)
Suchen Sie nach Python-spezifischen Übersetzung, oder nur die allgemeine "wie kompilieren Sie einige Code zu Bytecode"? Wenn Letzteres der Fall ist, überprüfen Sie the LLVM tutorial. Ich finde besonders das zweite Kapitel interessant, das Ihnen beibringt, einen Compiler für Ihre eigene Sprache zu schreiben.
Wenn Sie einige von Hand auf Beispiele möchten, PyPy's Getting Started Dokument einen Abschnitt „betitelte das Ausprobieren Übersetzer".
PyPy-Übersetzer ist im Allgemeinen nicht für mehr öffentliche Verwendung gedacht. Wir verwenden es für die Übersetzung unserer eigenen Python-Interpreter (einschließlich JIT und GCs, beide in RPython geschrieben, diese eingeschränkte Teilmenge von Python). Die Idee ist, dass Sie mit einem guten JIT und GC sogar beschleunigen können, ohne die Übersetzungs-Toolchain von PyPy zu kennen oder zu verwenden (und noch wichtiger, ohne sich auf RPython zu beschränken).
Cheers, Fijal
Es ist wie etwas aus einfach das Lesen der Beschreibung absolut revolutionär aussieht,
Soweit ich weiß, ist PyPy Roman in dem Sinne, dass es das erste System ausdrücklich entworfen für Implementierung Sprachen. Andere Werkzeuge existieren, um mit einem Großteil des Front-Ends zu helfen, wie zum Beispiel Parser-Generatoren, oder für das eigentliche Back-End, wie zum Beispiel Codegenerierung, aber nicht viel existierte, um die zwei zu verbinden.
- 1. Wo kann ich mehr über WebCoreSharedBufferData erfahren?
- 2. Wo kann ich mehr über "Ameisenkolonie" -Optimierungen erfahren?
- 3. Wo kann ich etwas über MEF erfahren?
- 4. Wo kann ich mehr über JNDI-Strings erfahren?
- 5. Wo kann ich über Empfehlungssysteme erfahren?
- 6. Parsing, wo kann ich darüber erfahren
- 7. Was sind die Längen/Grenzen C Präprozessor als Spracherstellungswerkzeug? Wo kann ich mehr darüber erfahren?
- 8. Sie können mehr über GCM-Fehler erfahren?
- 9. Kann ich etwas über ReleaseComObject erfahren? Kann ich es ignorieren?
- 10. Erfahren Sie mehr über das Hören von Ereignissen in JavaScript
- 11. Wo ist die GIL in PyPy?
- 12. Wo kann ich mehr über TransportSecurityWithMessageCredential in Silverlight 3
- 13. Wo kann ich mehr über den Google-Suchalgorithmus „Meinen Sie?“
- 14. C# und WCF, wo erfahren Sie es?
- 15. Verwendung von Pypy-Compiler
- 16. wo kann ich über JVM Debugger-Protokoll lernen?
- 17. Wohin ich gehe, um mehr über C# Asp.net mit MVC & WebServices zu erfahren
- 18. Warum kann ich Notepad ++ nicht mehr über die Befehlszeile starten?
- 19. Wo kann ich über Audio- oder Video-Codecs lernen?
- 20. Problem mit Übersetzungsfunktion
- 21. Wie kann ich mehr darüber erfahren, warum mein Laravel Queued Job fehlgeschlagen ist?
- 22. Verwenden von Pygame mit PyPy
- 23. Wie kann ich den Ländercode des Telefons erfahren?
- 24. Erfahren Sie mehr über Android Internals (Tauchen tief in das System)
- 25. Gibt es irgendwo etwas über die mögliche Zukunft von F # zu erfahren?
- 26. wie kann ich customer_id zählen, wo store_id mehr als 1
- 27. Tornado auf PyPy
- 28. Wo finde ich eine Übersicht über unterstützte Sammlungsmethoden/-klassen
- 29. Was ist die Referenz für die CSS-Übersetzungsfunktion?
- 30. Was bedeutet die Ausgabe während PyPy Build?
Link ist tot (PyPy verschoben). Ist das das gleiche Dokument? http://pypy.readthedocs.org/en/latest/translation.html – leewz
@leewangzhong Es ist wahrscheinlich, aber ich bin mir nicht sicher, wie der ursprüngliche Link zu diesem Zeitpunkt aussah. – rcreswick
Oh ja, wir haben Wege, das herauszufinden. https://web.archive.org/web/20111227090444/http://codespeak.net/pypy/dist/pypy/doc/translation.html. Lohnt sich ein Update zu Ihrer Antwort? – leewz