Compiler und Interpreter

Aus FI-Wiki

Compiler und Interpreter

Programmiersprachen benötigen eine Übersetzung, damit der Computer den geschriebenen Quellcode ausführen kann. Dabei kommen zwei grundlegende Übersetzungsverfahren zum Einsatz: Compiler und Interpreter.

Was ist ein Compiler?

Ein Compiler übersetzt den gesamten Quellcode auf einmal in eine andere Form – meist in Maschinencode oder wie in Java in Bytecode.

  • arbeitet vollständig vor der Ausführung
  • erzeugt eine neue Datei (z. B. *.class* bei Java)
  • überprüft den gesamten Code auf syntaktische Fehler
  • führt das Programm erst nach der erfolgreichen Übersetzung aus

Beispiel (Java):

javac Programm.java      Programm.class

Eigenschaften:

  • schnelle Programmausführung
  • gut für große Programme
  • Fehler werden schon beim Kompilieren entdeckt

Was ist ein Interpreter?

Ein Interpreter übersetzt und führt den Quellcode Schritt für Schritt zur Laufzeit aus.

  • kein Erzeugen einer separaten Datei
  • liest den Code Zeile für Zeile
  • stoppt direkt beim ersten Fehler
  • häufig verwendet in Skriptsprachen

Beispiele:

  • Python
  • JavaScript
  • PHP

Eigenschaften:

  • sofortige Ausführung
  • ideal zum schnellen Testen
  • tendenziell langsamer als kompilierter Code

Vergleich: Compiler vs. Interpreter

Merkmal Compiler Interpreter
Übersetzung gesamte Datei auf einmal Zeile für Zeile
Ausführungsgeschwindigkeit schnell (optimierter Code) langsamer
Fehlererkennung Fehler bereits vor der Ausführung Fehler zur Laufzeit
Ergebnis erzeugt Datei (z. B. *.class*) keine separate Datei
Typische Sprachen Java, C, C++ Python, JavaScript, PHP

Vorteile und Nachteile

Verfahren Vorteile Nachteile
Compiler schnelle Ausführung

optimierter Code Fehler früh erkennbar

längere Übersetzungszeit

Programm muss neu kompiliert werden

Interpreter sofortige Ausführung

ideal für Tests und Skripte kein Kompilieren nötig

langsamer

Fehler erst während der Ausführung

Wie arbeitet Java?

Java nutzt beide Prinzipien kombiniert:

  1. Compiler (javac) → erzeugt Bytecode
  2. JVM-Interpreter / JIT-Compiler → führt Bytecode aus

Dadurch ist Java:

  • plattformunabhängig
  • effizient
  • sicher

Kurz gesagt

  • Ein Compiler übersetzt den gesamten Quellcode vor der Ausführung.
  • Ein Interpreter führt den Code Zeile für Zeile direkt aus.
  • Java kombiniert beide Verfahren (Compiler → Bytecode → JVM).