MINT lernen

Compiler und Interpreter

Dein Programm muss übersetzt werden — die Frage ist nur, ob vorher oder während es läuft.

1

Vorher oder währenddessen übersetzen

  • Quelltext:das Programm in einer Hochsprache, so wie du es schreibst.
  • Compiler:übersetzt den ganzen Quelltext vorab in Maschinencode — es entsteht eine ausführbare Datei.
  • Übersetzungszeit:Fehler wie ein vergessenes Anführungszeichen meldet der Compiler, bevor das Programm startet.
  • Laufzeit:danach läuft der fertige Maschinencode ohne weitere Übersetzung — schnell.
  • Nachteil:nach jeder Änderung neu übersetzen; der Maschinencode passt nur zu einem Prozessor und Betriebssystem.
  • Beispiele:C, C++, Rust, Go.
  • Interpreter:liest den Quelltext Anweisung für Anweisung, übersetzt sie und führt sie sofort aus.
  • Vorteil:ohne Übersetzungsschritt testen; läuft überall, wo der Interpreter installiert ist.
  • Nachteil:langsamer — eine Anweisung in einer Schleife wird bei jedem Durchlauf neu verarbeitet.
  • Fehler:fallen erst auf, wenn die Zeile erreicht wird; alles davor ist schon gelaufen.
  • Beispiele:Python, PHP, JavaScript im Browser.
Merke

Compiler und Interpreter: Ein Compiler übersetzt das ganze Programm vor dem Start, ein Interpreter übersetzt und führt es Anweisung für Anweisung während des Laufs aus.

Wähle, wie oft die Schleife läuft, und starte. Oben arbeitet ein Compiler, unten ein Interpreter. Im Modell kostet Übersetzen einer Zeile 2 Zeiteinheiten (ZE), Ausführen 1 ZE. Probiere auch den Tippfehler in Zeile 5.

Wettlauf: Compiler gegen Interpreter

Schleife läuft n-mal
Zeile 5

Halte fest: Der Compiler zahlt einmal vorab für die Übersetzung und ist bei Schleifen schneller; der Interpreter legt sofort los, findet Fehler aber erst, wenn er die Zeile erreicht.

2

Der Mittelweg: Zwischencode

  • Zwischencode:Java und C# übersetzen zuerst in einen Zwischencode: Java in Bytecode, C# in CIL.
  • Virtuelle Maschine:führt den Zwischencode aus: die JVM bei Java, die .NET-Laufzeit bei C#.
  • JIT-Compiler:„just in time“: übersetzt häufig benutzten Zwischencode während des Laufs in Maschinencode.
  • Folge:fast so schnell wie Maschinencode und trotzdem auf vielen Plattformen lauffähig.
3

Allgemeine Hinweise

Die Sprache legt es nicht fest

Kompiliert oder interpretiert ist eine Eigenschaft des Werkzeugs. Für Python gibt es z. B. auch Compiler — üblich ist aber der Interpreter.

Ohne Fehlermeldung ist nichts bewiesen

Ein Interpreter meldet einen Fehler erst, wenn die Zeile ausgeführt wird. Teste darum auch selten erreichte Zweige.

Fehlermeldung lesen

Compiler und Interpreter nennen die Zeilennummer und die Art des Fehlers. Lies die erste Meldung zuerst — spätere sind oft nur Folgefehler.

Videos