Frage

Do Sprachen wie z.B. Ruby (wenn MRI ausgeführt wird, meine ich nicht auf Byte-Code kompiliert) durchgeführt, jedes Mal, wenn tatsächlich geparst eine Ausführung von beispielsweise Verfahren oder Schleifenkörper benötigt wird? Ich meine, eine Schleife auszuführen, müssen Sie ihren Körper analysieren N mal?

Ich habe immer gedacht, dass alle diese Programme einmal am Bootstrap analysiert werden, umgewandelt in einem "stark typisierte Aussagen Baum usw. Ist das nicht wahr?

War es hilfreich?

Lösung

Ich werde nur gemein sein jetzt und sagen, dass fast jeder Programmiersprache interpretiert wird, ob es eine Software (Ruby, Python, Java) oder eine Hardware (C, C ++) Interpreter:)

Für eine wirkliche Antwort, während ich weiß nicht, über die interne Ruby-Implementierung, ich bin sicher, wie die Hölle sie die Aussage nicht analysiert immer und immer und immer wieder. Während nicht-Bytecode in der ursprünglichen Implementierung (oder tat wandern sie schon?), Sie verwenden eine Zwischendarstellung (man kann es schön sehen, wenn Sie C-Erweiterungen für sie schreiben wollen), so dass nur diejenigen, immer und immer wieder ausgeführt wird.

Andere Tipps

Ausgelegt ist ein Wort mit einer sehr losen Definition. Auch Maschinencodebefehle durch den Prozessor interpretiert werden.

Generell unterscheidet man zwischen den Sprachen hergestellt, die kompiliert werden, bevor sie ausgeführt und Sprachen, die keinen Übersetzungsvorgang haben und in einem anderen Programm, genannt der Interpreter ausführen. Die letztgenannten Arten von Sprachen werden oft als interpretierte Sprachen .

Die Linie ist nicht so klar in einigen Fällen:

  • können Einige Sprachen entweder kompiliert oder interpretiert werden, z.B. PHP.
  • Einige interpretierten Code kann zur Laufzeit in nativen Maschinenanweisungen kompiliert werden ( JIT-Kompilierung ).
  • Einige kompilierten Sprachen können eine exec Funktionalität hat, den Code zur Laufzeit erzeugt werden und ausgeführt ermöglicht, den normalen Übersetzungsvorgang zu umgehen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top