Kompilieren (von lateinisch „compilare“, zusammenstellen) bedeutet, Quellcode in eine ausführbare Form zu übersetzen. Ein Compiler liest den gesamten Code, prüft ihn auf Fehler und erzeugt daraus ein Programm – im Gegensatz zum Interpreter, der den Code Zeile für Zeile ausführt.

Die Schritte der Kompilierung

  1. Lexikalische Analyse: Der Quelltext wird in Tokens zerlegt (Schlüsselwörter, Namen, Zahlen).
  2. Parsing: Ein Parser baut aus den Tokens einen Syntaxbaum, der die Struktur des Programms abbildet.
  3. Semantische Analyse: Der Compiler prüft Typen und Zusammenhänge – etwa ob ein Integer mit einem String verglichen wird.
  4. Codegenerierung: Aus dem Syntaxbaum entsteht Maschinencode oder Bytecode.
  5. Optimierung: Der Code wird schneller und kleiner gemacht, ohne das Verhalten zu ändern.
  6. Linken: Der Linker fügt Bibliotheken und weitere Module hinzu und erzeugt die ausführbare Datei.

Compilierte und interpretierte Sprachen

Klassisch kompiliert werden C, C++, Rust, Go und Java (zu Bytecode). Python und JavaScript sind dagegen interpretierte Sprachen – Python übersetzt den Quellcode beim Start intern in Bytecode, und moderne JavaScript-Engines nutzen Just-in-Time-Kompilierung (JIT), die heiße Codeabschnitte zur Laufzeit in Maschinencode übersetzt.

Fehler beim Kompilieren

Kompilierfehler sind die erste Verteidigungslinie gegen Programmierfehler: Der Compiler meldet Syntaxfehler und Typfehler, bevor das Programm überhaupt startet. Danach beginnt das Debugging zur Laufzeit.

Beispiele

# C kompilieren
gcc -o programm programm.c

# Go bauen
go build .

# TypeScript zu JavaScript übersetzen
tsc datei.ts

Verwandte Grundlagen: Parser, Syntax sowie die Go-Befehle, Rust-Befehle und TypeScript-Befehle.