Interpretierte und kompilierte Programmiersprachen: Was ist der Unterschied?

Jedes Programm besteht aus einer Reihe von Anweisungen, ob zwei Nummern hinzugefügt oder eine Anfrage über das Internet gesendet werden sollen. Compiler und Interpreter nehmen von Menschen lesbaren Code und konvertieren ihn in computerlesbaren Maschinencode.

In einer kompilierten Sprache übersetzt der Zielcomputer das Programm direkt. In einer interpretierten Sprache wird der Quellcode nicht direkt vom Zielcomputer übersetzt. Stattdessen liest und führt ein anderes Programm, auch bekannt als Interpreter, den Code aus.

Okay ... aber was bedeutet das eigentlich ?

Stellen Sie sich vor, Sie haben ein Hummus-Rezept, das Sie machen möchten, aber es ist in Altgriechisch geschrieben. Es gibt zwei Möglichkeiten, wie Sie, ein nicht altgriechischer Sprecher, seinen Anweisungen folgen können.

Das erste ist, wenn jemand es bereits für Sie ins Englische übersetzt hat. Sie (und jeder andere, der Englisch sprechen kann) könnten die englische Version des Rezepts lesen und Hummus machen. Stellen Sie sich dieses übersetzte Rezept als kompilierte Version vor.

Der zweite Weg ist, wenn Sie einen Freund haben, der Altgriechisch kann. Wenn Sie bereit sind, Hummus zu machen, sitzt Ihr Freund neben Ihnen und übersetzt das Rezept Zeile für Zeile ins Englische. In diesem Fall ist Ihr Freund der Dolmetscher für die interpretierte Version des Rezepts.

Kompilierte Sprachen

Kompilierte Sprachen werden direkt in Maschinencode konvertiert, den der Prozessor ausführen kann. Infolgedessen sind sie in der Regel schneller und effizienter auszuführen als interpretierte Sprachen. Sie geben dem Entwickler auch mehr Kontrolle über Hardwareaspekte wie Speicherverwaltung und CPU-Auslastung.

Kompilierte Sprachen benötigen einen "Build" -Schritt - sie müssen zuerst manuell kompiliert werden. Sie müssen das Programm jedes Mal neu erstellen, wenn Sie Änderungen vornehmen müssen. In unserem Hummus-Beispiel wird die gesamte Übersetzung geschrieben, bevor sie bei Ihnen ankommt. Wenn der ursprüngliche Autor entscheidet, dass er eine andere Art von Olivenöl verwenden möchte, muss das gesamte Rezept erneut übersetzt und Ihnen erneut zugesandt werden.

Beispiele für rein kompilierte Sprachen sind C, C ++, Erlang, Haskell, Rust und Go.

Interpretierte Sprachen

Dolmetscher durchlaufen ein Programm Zeile für Zeile und führen jeden Befehl aus. Wenn der Autor entscheidet, dass er eine andere Art von Olivenöl verwenden möchte, kann er das alte herauskratzen und das neue hinzufügen. Ihr Übersetzerfreund kann Ihnen diese Änderung dann sofort mitteilen.

Interpretierte Sprachen waren früher signifikant langsamer als kompilierte Sprachen. Mit der Entwicklung der Just-in-Time-Kompilierung verringert sich diese Lücke jedoch.

Beispiele für häufig interpretierte Sprachen sind PHP, Ruby, Python und JavaScript.

Eine kleine Einschränkung

Die meisten Programmiersprachen können sowohl kompilierte als auch interpretierte Implementierungen haben - die Sprache selbst muss nicht unbedingt kompiliert oder interpretiert werden. Der Einfachheit halber werden sie jedoch typischerweise als solche bezeichnet.

Python kann beispielsweise entweder als kompiliertes Programm oder als interpretierte Sprache im interaktiven Modus ausgeführt werden. Andererseits können die meisten Befehlszeilentools, CLIs und Shells theoretisch als interpretierte Sprachen klassifiziert werden.

Vorteile und Nachteile

Vorteile kompilierter Sprachen

Programme, die in nativen Maschinencode kompiliert werden, sind in der Regel schneller als interpretierter Code. Dies liegt daran, dass der Prozess der Übersetzung von Code zur Laufzeit den Overhead erhöht und dazu führen kann, dass das Programm insgesamt langsamer wird.

Nachteile kompilierter Sprachen

Die bemerkenswertesten Nachteile sind:

  • Zusätzliche Zeit, die benötigt wird, um den gesamten Kompilierungsschritt vor dem Testen abzuschließen
  • Plattformabhängigkeit des generierten Binärcodes

Vorteile interpretierter Sprachen

Interpretierte Sprachen sind in der Regel flexibler und bieten häufig Funktionen wie dynamisches Schreiben und kleinere Programmgrößen. Da Interpreter den Quellprogrammcode selbst ausführen, ist der Code selbst plattformunabhängig.

Nachteile interpretierter Sprachen

Der bemerkenswerteste Nachteil ist die typische Ausführungsgeschwindigkeit im Vergleich zu kompilierten Sprachen.