Compiler

Compiler sind Übersetzungsprogramme für Computersprachen mit einem Quellcode in Maschinensprachen. Die meisten Computersprachen der dritten und vierten Generation ab den 1990er Jahren sind Programme, die über den Quelltext für Menschen verständlicher Informationen kommunizieren. Diese für den Menschen verständlichere Computersprache muss in spezielle Maschinensprachen umgewandelt werden. Umgekehrt wandeln Assemblersprachen Maschinensprachen in für den Menschen lesbarer Form um. Insofern sind Compiler und Assembler Kommunikationselemente zwischen dem Menschen und der Maschine. Populäre Programmiersprachen wie Java verwenden sogenannte Bytecodes. Bytecodes stellen einen Zwischencode dar, der einen Quellcode komprimiert für die virtuelle Maschine zur Verfügung stellt. Für die Ausführung des Bytecodes bei Java ist zum Beispiel die Java Virtual Machine verantwortlich. Jedes Java-Programm wird über diese spezielle virtuelle Maschine gestartet. Neben den klassischen Compiler gibt es sogenannte Transcompiler, die andere Programmiersprachen auf Grund eines fremden Quellcodes erzeugen können. Transcompiler haben oft mit Leistungsverlusten bei der “Übersetzung” zu kämpfen, da jede Programmiersprache seine individuellen Leistungsmerkmale aufweist. Man muss dann den neuen Quelltext speziell bearbeiten. Mit dem Oberbegriff Compiler verbindet man heute umgangssprachlich hauptsächlich sogenannte Ahead-of-time-Compiler (AOT-Compiler), die vor der Ausführung den Quellcode in einen Maschinencode umwandeln.

Zu den Sonderformen von Compilern gehören die Just-in-time-Compiler, die innerhalb der Laufzeit den Quellcode in einen Maschinencode übersetzen. JIT-Compiler haben den Vorteil gegenüber AOT-Compiler, dass der umgewandelte Code plattformunabhängig ist. Dafür muss man in der Regel eine längere Ausführzeit in Kauf nehmen. Programme wie Java werden mit JIT-Compiler ausgeführt. Für populäre Computersprachen wie Java werden auch im Internet Ahead-of-time-Compiler angeboten. Interpreter sind Programme, die meistens Teil des Compilers sind und Programme analysieren und interpretieren. Interpreter übersetzen zum Beispiel in der Laufzeit die Programme und führen diese beim Programmstart aus. Mit Interpreter sollen vor allem auch die Ausführzeiten der Compiler verkürzt werden. Reine Interpreter müssen Programmteile immer wieder einzeln interpretieren, was die Ausführzeiten verlangsamen kann. Der Quellcode, der durch Interpreter in Maschinencodes umgewandelt wird, kann nicht in Gänze als Maschinencode abgespeichert werden. Eine effektive Synthese aus Interpreter und Compiler sind Compreter. Compiler und ihre Sonderformen findet man vor allem auf den Seiten für Programmierwerkzeuge. Zu dem wichtigen Programmierwerkzeuge (siehe Artikel Programmierwerkzeuge) gehören neben Compiler und Assembler vor allem GUI-Builder und Debugger. Vereinzelt findet man zu den Programmierwerkzeugen wie Compiler spezielle Schulungsangebote im Internet.