Frage von Reality101010, 85

Unterschied zwischen compiler, interpreter und jit compiler?

kurz und knackig bitte, die Unterschiede der Funktionsweisen :D

Danke im Vorraus

Antwort
von ByteJunkey, 68

Compiler: Der Compiler "übersetzt" den ganzen Code beim compilieren in die "Maschienensprache". Es wird nur einmal ausgeführt.
Interpreter: Der Interpreter "übersetzt" zur Laufzeit den Code in "Maschienensprache".
Logische Folger: Der Interpreter ist langsamer.
Falls ich das falsch Erklärt habe, dann bitte korrigieren ;)

Kommentar von Reality101010 ,

und wie kann das beim jit kombiniert werden ??:D

Kommentar von ByteJunkey ,

da bin ich leider überfragt. Sorry :(

Kommentar von TeeTier ,

Viele Skriptsprachen, wie z. B. PHP, kombinieren Interpreter und JIT. Und sogenannte Optimizer sorgen dafür, dass der kompilierte JIT-Code nach Ausführung nicht wieder weggeworfen, sondern im Speicher gehalten wird. Bei großen Projekten werden somit dann nicht mehr bei jedem einzelnen Request ca. 8MB PHP-Quelltext durchgenudelt (aka Interpretiert), sondern nur das erste mal und dann vorläufig nicht mehr, bis die Code-TTL abgelaufen, oder der Quelltext modifiziert wurde. :)

Antwort
von Unkreatiiiev, 57

Der Compiler kompiliert den Code. Am Ende hat man entweder Bytecode oder Maschinencode.

Interpreter führen geschriebenen Code aus, ohne ihn in irgendeinem Zwischenzustand zu haben.

Just-in-time-compiler kompilieren Teiles des Programms während der Laufzeit.

Einige Sprachen können sowohl interpretiert als auch kompiliert werden. LISP zum Beispiel (und Python?).

Kommentar von ByteJunkey ,

Das trifft eher zu, als meine Antwort ;)

Kommentar von Reality101010 ,

Java und c# auch?? :D

Kommentar von Unkreatiiiev ,

C# kenn' ich mich nicht mit aus. Java wird auf jeden Fall zu Bytecode kompiliert, der dann von einer VM (der JVM) interpretiert wird.

Kommentar von PerfectMuffin ,

Also, um es auszusprechen: Ein Hybrid.

Abgesehen davon... https://en.wikipedia.org/wiki/JavaOS

Kommentar von TeeTier ,

... (und Python?)

Ja, Python auch. Bei CPython wird der kompilierte Bytecode danach aber oft weggeworfen, und nur Ausführungszeit im Speicher gehalten. Man kann Python aber auch am Anfang eines Skriptes mit:

sys.dont_write_bytecode = False

... dazu veranlassen, den kompilierten JIT-Code in einer *.pyc Datei zu speichern, die nur dann neu kompiliert wird, wenn der Timestamp der Original-Quelldatei neuer ist, als die PYC-Datei. (erinnert etwas an das Verhalten von "make")

Alternativ kann man auch Umgebungsvariablen oder den "-B" switch verwenden.

Expertenantwort
von TeeTier, Community-Experte für programmieren, 29

Ein Compilier kompiliert, ein Interpreter interpretiert, und ein JIT Compiler kompiliert "Just In Time".

Ich hoffe, das war jetzt kurz und knackig genug. :)

Du darfst mein Posting jetzt gerne als "Hilfreichste Antwort" auswählen.

Vielen Dank im Voraus! :)

Keine passende Antwort gefunden?

Fragen Sie die Community