Zum Inhalt springen
YellowBlue
IT-Grundlagen4 Min. Lesezeit

Compiler vs. Interpreter: Unterschied erklärt

Kurzantwort

Ein Computer versteht nur Maschinencode aus Nullen und Einsen, kein für Menschen lesbares Programm. Ein Compiler übersetzt den gesamten Quellcode vorab in ein ausführbares Programm – schnell in der Ausführung, aber unflexibel. Ein Interpreter übersetzt den Code Zeile für Zeile während der Ausführung – flexibler, aber langsamer. Viele moderne Sprachen kombinieren beide Ansätze.

Teil des Lernpfads Programmieren und Softwareentwicklung · Schritt 4 von 18

Du schreibst Programmcode in einer für Menschen lesbaren Sprache – aber der Computer versteht davon kein Wort. Irgendjemand muss übersetzen. Ob das ein Compiler oder ein Interpreter tut, macht einen großen Unterschied, und die Frage ist ein Prüfungsklassiker.

Warum muss Code überhaupt übersetzt werden?

Ein Prozessor versteht nur Maschinencode – nackte Befehle aus Nullen und Einsen. Der Quellcode, den du schreibst (if, while, alter = 18), ist für Menschen gemacht, nicht für die Hardware. Zwischen beidem muss übersetzt werden.

Was macht ein Compiler?

Ein Compiler übersetzt den kompletten Quellcode auf einmal, bevor das Programm läuft. Das Ergebnis ist eine fertige, ausführbare Datei, die der Computer direkt starten kann.

Vorteil: Das fertige Programm läuft schnell, weil beim Start nichts mehr übersetzt werden muss. Nachteil: Nach jeder Änderung am Code muss neu übersetzt werden, und das Programm ist an eine bestimmte Plattform gebunden. Klassisch compilierte Sprachen sind C und C++.

Was macht ein Interpreter?

Ein Interpreter übersetzt den Code Zeile für Zeile während der Ausführung. Es entsteht keine eigenständige Programmdatei – der Interpreter muss immer mitlaufen.

Vorteil: flexibel – Code lässt sich sofort testen, ohne vorher zu übersetzen, und läuft überall dort, wo der Interpreter vorhanden ist. Nachteil: langsamer, weil bei jeder Ausführung neu übersetzt wird. Eine typische interpretierte Sprache ist Python.

Der direkte Vergleich

MerkmalCompilerInterpreter
Übersetzungalles vorabZeile für Zeile beim Ausführen
Ergebnisfertige, ausführbare Dateikeine, Interpreter läuft mit
Ausführungschnelllangsamer
Fehler zeigen sichbeim Übersetzenerst beim Ausführen der Stelle
BeispielC, C++Python

Und wo liegt Java?

Viele moderne Sprachen kombinieren beide Ansätze. Java etwa wird zuerst in einen plattformunabhängigen Zwischencode (Bytecode) compiliert, den dann zur Laufzeit eine virtuelle Maschine ausführt.

Selbstkontrolle

Selbstkontrolle

Wann zeigt sich bei einem compilierten Programm ein Syntaxfehler im Code?

Häufige Fragen

Was ist der Unterschied zwischen Quellcode und Maschinencode?

Quellcode ist der von Menschen geschriebene Programmtext in einer Programmiersprache. Maschinencode besteht aus den Befehlen, die der Prozessor direkt ausführen kann, dargestellt in Nullen und Einsen. Ein Übersetzer wandelt Quellcode in Maschinencode um, weil die Hardware den Quellcode selbst nicht versteht.

Ist compiliert immer besser als interpretiert?

Nein, beide haben ihren Platz. Compilierte Programme laufen schneller und eignen sich für rechenintensive Anwendungen. Interpretierte Sprachen sind flexibler, schneller zum Ausprobieren und plattformunabhängiger. Welcher Ansatz besser passt, hängt vom Einsatzzweck ab.

Was ist Bytecode?

Bytecode ist eine Zwischenstufe zwischen Quellcode und Maschinencode. Er ist bereits vorübersetzt, aber noch nicht an eine bestimmte Hardware gebunden. Eine virtuelle Maschine führt den Bytecode zur Laufzeit aus. Dadurch läuft dasselbe Programm auf verschiedenen Systemen, ohne neu compiliert zu werden.

Muss ich als Programmierer selbst compilieren?

In compilierten Sprachen stößt du den Übersetzungsvorgang an, meist mit einem einzigen Befehl oder Klick in der Entwicklungsumgebung. Bei interpretierten Sprachen entfällt dieser Schritt, du startest den Code direkt. Moderne Werkzeuge nehmen dir den Vorgang weitgehend ab.

Weiterlesen: Variablen und Datentypen einfach erklärt · Fehlerbehandlung mit Exceptions · OOP-Grundlagen: Klasse, Objekt, Prinzipien · Programmablaufplan (PAP) und Struktogramm

Das Wichtigste in Kürze

  • Ein Prozessor versteht nur Maschinencode, nicht den lesbaren Quellcode.
  • Ein Compiler übersetzt alles vorab in eine ausführbare Datei – schnelle Ausführung.
  • Ein Interpreter übersetzt Zeile für Zeile beim Ausführen – flexibel, aber langsamer.
  • Der Compiler meldet Fehler vorab, der Interpreter erst zur Laufzeit.
  • Sprachen wie Java kombinieren beides über Bytecode.

Verwandte Beiträge

IT-Grundlagen4 Min. Lesezeit

Fehlerbehandlung mit Exceptions

Wie Programme mit Fehlern umgehen, ohne abzustürzen: try-catch-finally, was eine Exception ist und warum man erwartbare Fehler gezielt behandelt.

IT-Grundlagen3 Min. Lesezeit

Rekursion: wenn sich eine Funktion selbst aufruft

Wie Rekursion funktioniert, warum jede rekursive Funktion eine Abbruchbedingung braucht und wann Rekursion sinnvoller ist als eine Schleife.

IT-Grundlagen4 Min. Lesezeit

Sortier- und Suchalgorithmen verstehen

Wie Bubblesort und die binäre Suche funktionieren, warum die lineare Suche langsamer ist und was die O-Notation über die Laufzeit verrät.