Akademik

Compiler
Com|pi|ler 〈[-p-] m. 3; EDVProgramm, das eine Programmiersprache in eine andere, meist niedrigere, maschinenorientierte Sprache übersetzt; Sy Übersetzer (3) [zu engl. compile „zusammenstellen“]

* * *

Com|pi|ler [kɔm'pa̮ilɐ ], der; -s, - [engl. compiler, zu: to compile = zusammenstellen < frz. compiler < lat. compilare, kompilieren] (EDV):
Programm (4), das dazu dient, eine andere Programmiersprache in die Programmiersprache eines bestimmten Computers zu übersetzen.

* * *

Compiler
 
[dt. »Bearbeiter«, »Verfasser«], ein Übersetzungsprogramm, das Programmtext (Quellcode) in Maschinensprache umwandelt (»kompiliert«). Bei der Übersetzung erzeugt der Compiler den sog. Objektcode. Wenn dieser noch mithilfe eines Binders (Linkers) mit den vom Programm angeforderten Bibliotheken verbunden ist, liegt ein ablauffähiges Programm vor. Zu dessen Ausführung ist der Compiler dann nicht mehr nötig. Im Gegensatz zu einem Interpreter übersetzt ein Compiler den gesamten Quellcode einmal und dauerhaft, bevor das Programm ausgeführt werden kann. Ein Nachteil eines Compilers gegenüber einem Interpreter besteht darin, dass vergleichsweise viel Zeit verstreicht, bis ein Programm anläuft - was vor allem dann ärgerlich sein kann, wenn der Programmierer nur eine kleine Änderung in einem korrekten Programm vornimmt. Mit den schnellen heutigen PCs dauert eine Kompilation gewöhnlich aber nicht länger als einige Sekunden. Der große Vorteil eines Compilers im Vergleich zu einem Interpreter liegt darin, dass ein kompiliertes Programm sehr viel schneller ausgeführt wird als ein interpretiertes. Daher ist heute für die meisten Programmiersprachen ein Compiler vorgesehen (Compiler-Sprache).
 
Die Tätigkeit eines Compilers gliedert sich im Wesentlichen in vier Phasen:
 
- Bei der lexikalischen Analyse wird das Quellprogramm in eine Folge von Symbolen der Quellsprache aufgelöst, die als Token bezeichnet werden.
 
- Bei der syntaktischen Analyse erzeugt ein sog. Parser einen der Syntax der Quellsprache entsprechenden Ableitungs- oder Strukturbaum, wobei das Quellprogramm auf syntaktische Korrektheit überprüft wird. Eventuelle Fehler werden angezeigt und führen bei bestimmter Schwere zum Abbruch des Übersetzungsvorgangs.
 
- Die semantische Analyse prüft, ob die verwendeten Programmelemente logisch einwandfrei in den Kontext passen (z. B. ob Variablen entsprechend der Typvereinbarung verwendet werden). Außerdem bereitet sie die Codeerzeugung vor, wozu meist die Erstellung und Abspeicherung einer Symboltabelle gehört. Dies ist in der Regel eine sortierte Liste, in der u. a. alle Variablen mit ihrem Datentyp und ihrer Adresse, die sie im späteren, übersetzten Programm erhalten, verzeichnet sind.
 
- Bei der Codegenerierung werden schließlich die Symbole der Quellsprache in die entsprechenden Symbole der Maschinensprache übersetzt. Dabei kann eine Anweisung des Quellcodes zu einigen Hundert Maschinenbefehlen führen.
 
Oft schließen sich an diese Phasen eine oder mehrere Optimierungsphasen an (bei sog. optimierenden Compilern), welche die Verkürzung des Objektcodes zum Ziel haben.
 
Die Kompilation kann für manche Programmiersprachen in einem einzigen Arbeitsgang erfolgen (Einschritt-Compiler), oft sind aber mehrere Durchläufe nötig oder sinnvoll, bei denen das jeweilige Zwischenergebnis in einem eigenständigen Zwischensprachentext repräsentiert ist, z. B. wenn globale Optimierungen vorgenommen werden sollen, oder wenn die Programmiersprache die Verwendung von Variablen vor ihrer Definition erlaubt.
 
Spezielle Compiler-Formen sind z. B. der inkrementelle Compiler und der Cross Compiler. Auch gibt es Mischformen (Hybride) zwischen Compilern und Interpretern, sog. Compreter. Die Umkehrung einer Kompilation bewerkstelligt ein Recompiler. Ein Compiler ist wesentlich umfangreicher als ein Assembler.

* * *

Com|pi|ler [kɔm'pailɐ], der; -s, - [engl. compiler, zu: to compile = zusammenstellen < frz. compiler < lat. compilare, ↑kompilieren] (EDV): Programm (4), das dazu dient, eine andere Programmiersprache in die Programmiersprache eines bestimmten Computers zu übersetzen.

Universal-Lexikon. 2012.