Dies ist nur eine Frage, die ich beim Lesen über interpretierte und kompilierte Sprachen hatte.
Ruby ist zweifellos eine interpretierte Sprache, da der Quellcode zum Zeitpunkt der Ausführung von einem Interpreter verarbeitet wird.
Im Gegenteil, C ist eine kompilierte Sprache, da man den Quellcode zuerst nach der Maschine kompilieren und dann ausführen muss. Dies führt zu einer viel schnelleren Ausführung.
Kommen wir nun zu Python :
- Ein importierter Python-Code ( somefile.py ) erstellt eine Datei ( somefile.pyc ) im selben Verzeichnis. Angenommen, der Import erfolgt in einer Python-Shell oder einem Django-Modul. Nach dem Import ändere ich den Code ein wenig und führe die importierten Funktionen erneut aus, um festzustellen, dass der alte Code noch ausgeführt wird. Dies deutet darauf hin, dass * .pyc-Dateien kompilierte Python-Dateien sind, die der ausführbaren Datei ähneln, die nach dem Kompilieren einer C-Datei erstellt wurde, obwohl ich * .pyc-Dateien nicht direkt ausführen kann.
- Wenn die Python-Datei (somefile.py) direkt ausgeführt wird (./somefile.py oder python somefile.py), wird keine .pyc-Datei erstellt und der Code so ausgeführt, wie er das interpretierte Verhalten anzeigt.
Dies deutet darauf hin, dass ein Python-Code jedes Mal kompiliert wird, wenn er in einen neuen Prozess importiert wird, um eine .pyc-Datei zu erstellen, während sie bei der direkten Ausführung interpretiert wird.
Also als welche Art von Sprache sollte ich es betrachten? Interpretiert oder kompiliert? Und wie ist die Effizienz im Vergleich zu interpretierten und kompilierten Sprachen?
Laut der Interpreted Languages- Seite von Wiki wird sie als Sprache aufgelistet, die zu Virtual Machine Code kompiliert wurde. Was ist damit gemeint?
RUN
. Es war, als ob Sie einen Compiler hätten, der den Schritt des Lexierens ausführt und dann einen Stream von Tokens ausgibt, der jedes Mal neu analysiert werden muss, wenn das Programm ausgeführt wird. Ganz und gar nicht wie die moderne Bytecode-Kompilierung javac
, die beispielsweise Lexing, Parsing und Optimierung umfasst.