t2informatik » Wissen kompakt » Compiler

Compiler

Maschinenlesbaren Code erzeugen

Ein Zielprogramm eines Computers besteht nur aus zwei unterschiedlichen Zeichen – der 0 und der 1 – deshalb nennt man es auch Binärprogramm. Ein Compiler ist ein Programm, das den in einer höheren Programmiersprache geschriebenen Quellcode in die maschinenlesbare, binäre Sprache – als ausführbaren Code – übersetzt. Das Ergebnis wird auch als Objektcode oder Zielsprache bezeichnet. In manchen Fällen erfolgt die Übersetzung auch per Zwischenschritt mit einer Assemblersprache, so dass anschließend ein Assembler zur Erzeugung des Maschinencodes benötigt wird.

Ein Compiler ist aber mehr als nur ein „Übersetzer“, denn im Zuge des Kompilierens fallen weitere Aufgaben an:

  • Bei der lexikalischen Analyse wird der Quellcode gescannt und Programmsymbole extrahiert. Überflüssige und fehlende Zeichen werden als Fehler erkannt.
  • Es folgt das Parsing mit einer syntaktischen Analyse, bei der die Grammatik des Quellcodes überprüft wird.
  • Bei der anschließenden semantischen Analyse wird überprüft, ob der Quellcode Sinn ergibt.

Das Finden von Programmfehlern ist also eine wesentliche Aufgabe des Compilers. Findet ein Compiler einen Fehler, wird eine Fehlermeldungen mit Zeilennummern ausgegeben, so dass die Navigation des Entwicklers zum Fehler sehr leicht fällt.

Nicht bei allen Programmiersprachen ist ein Compiler notwendig. Java bspw. als objektorientierte Programmiersprache wird durch den Java-Just-in-Time-Compiler, einem Bestandteil der Java-Entwicklungsumgebung, in Java-Bytecode kompiliert. Java-Bytecode ist eine sogenannte Hybridsprache, also ein Kompromiss zwischen vollständig kompiliertem Binärcode und interpretierbaren Quellcode. Auch C#, VB.NET und Python sind Hybridsprachen. Typische Programmiersprachen mit Compiler sind C, C++. Pascal, Modula, COBOL und  Fortran.

“Das Fachwissen zu Softwarearchitekturen, die Expertise in der Softwareentwicklung und die sehr flexible Arbeitsweise waren ideal für uns.“

„Ich brauche Freiheit und Vertrauen. Und ich möchte Verantwortung übernehmen und dabei Spaß haben!“

Share This