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:
- Compiler (javac) → erzeugt Bytecode
- 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).
