Helmichs Informatik-Lexikon

Compiler

Für Anfänger:

Ein Compiler ist ein Programm, das einen Text einer Quellsprache (zum Beispiel Java) in einen Text einer Zielsprache (meistens Maschinencode) übersetzt.

Ein Ausschnitt aus einem Maschinencode könnte beispielsweise so aussehen:

00011001000111010011000100111011
10010001001001010010001100110111
11001000111011110011000100111011
01000111010011000100111100011011
10011001001101010101010000111010

Bei den ersten Computern in den 40er und 50er Jahren des 20. Jahrhunderts mussten die Menschen tatsächlich solch einen Textsalat aus Nullen und Einsen in den Computer eingeben, meistens über Lochkarten oder Lochstreifen.

Im Laufe der Jahrzehnte wurden aber immer bessere höhere Programmiersprachen entwickelt, die den Menschen die Arbeit erleichterten. Eine der bekanntesten höheren Programmiersprachen ist Java. Der folgende Quelltext zeigt einen Ausschnitt aus einem solchen Java-Programm:

   if (zahl2 != 0)
   {
      quotient = zahl1 / zahl2;
      System.out.println("Ergebnis der Division = " + quotient);
   }
   else
   {
      System.out.println("Quotient kann nicht berechnet werden");
   }

Wie bereits gesagt, übersetzt ein Compiler nun einen solchen "leicht verständlichen" Quelltext in eine Folge von Nullen und Einsen, den sogenannten Maschinencode. Den Vorgang an sich nennt man "kompilieren" oder "übersetzen".

Ergänzung für Fortgeschrittene:

Bei diesem Übersetzungsvorgang, dem Compilieren oder Kompilieren, arbeitet ein Compiler in mehreren Durchgängen[1][2][3]:

Analysephase (Front-End)
  • lexikalische Analyse
  • syntaktische Analyse
  • semantische Analyse
Synthesephase (Back-End)
  • Zwischencode-Erzeugung
  • Zwischencode-Optimierung
  • Maschinencode-Erzeugung

Einzelheiten zu diesen sechs Phasen finden Sie in der Folge 25 (Was ist ein Compiler?) des Fortgeschrittenen-Kurses.

Quellen:

  1. Rüdeger Baumann, Informatik für die Sekundarstufe II, Band 2, Stuttgart 1993, S. 212f
  2. Aho, Sethi, Ullmann, Compilerbau, Bonn 1988, S. 12ff.
  3. Herold, Lurz, Wohlrab, Hopf: Grundlagen der Informatik, Hallbergmoos 2017, S. 693ff.