Compiler ›› Definition & Bedeutung ›› ADVIDERA › ADVIDERA

Compiler

Um ein Programm einer höheren Programmiersprache (wie zum Beispiel C, Fortran, Pascal und Prolog) auf einem Computer ausführen zu können, ist eine „Übersetzung“ notwendig. Stellen Sie sich dies wie die Übersetzung einer Fremdsprache ins Deutsche vor: Die „Sprache“ des Ursprungsprogramms wird in die des Computer „übersetzt“. Eine Programmiersprache wird in eine für den Computer versteh- und ausführbare Sprache umgewandelt: Diese Aufgabe übernehmen Compiler.

Definition

Das Wort „Compiler“ (to compile, „zusammentragen“) ist aus dem Lateinischen (compilare, „aufhäufen“) abgeleitet. Ein Compiler nimmt die Daten der Quellsprache („trägt diese zusammen“) und wandelt sie in Daten der Zielsprache um. Das so entstandene kompilierte Programm generiert die gleichen Ergebnisse wie das Ursprungsprogramm: Die Semantik (die Bedeutung) der beiden Programme ist also identisch. Der Begriff des Dekompilierens meint die Übersetzung der Maschinensprache eines Computers in eine bestimmte Programmiersprache. Als Decompiler bezeichnet man die dazu notwendigen Programme.
Der Begriff Compiler ist anfänglich auch verwendet worden, um damit ein aus Unterprogrammen bestehendes Programm zu bezeichnen. Dieses („zusammentragende“) Programm stellte ein Hilfsprogramm dar, welches bestimmte Aufgaben erfüllte. Heute werden solche Programme als Linker bezeichnet. Seit 1954 wird der Begriff Compiler im heutigen Sinne verstanden. Anfänglich wurde er noch ergänzt durch das vorangestellte Attribut „algebraic“. Dieses ergänzende Wort entfiel später.
Durchsetzen musste sich der Begriff Compiler noch gegenüber dem Wort Translator („Übersetzer“). Die Entwickler der höheren Programmiersprache Fortran favorisierten für ihre Compiler diesen Begriff. Seit 1964 wird der Begriff Compiler auch bei der Quellsprache Fortran verwandt. Somit hatte sich der Begriff Compiler etabliert.

Geschichte

Schon Konrad Zuse, der große Pionier des Computers, beschäftigte sich mit dem „Übersetzen“ einer Programmiersprache in eine für Computer geeignete Sprache. Die erste höhere Programmiersprache („Plankalkül“) wurde von Zuse entwickelt. Ein Softwareprogramm (von Zuse „Rechenplan“ genannt) wurde durch sein „Planfertigungsgerät“ in die Sprache seines „Zuse-Z4“-Rechners übersetzt. Heute würde man davon sprechen, dass eine Kompilierung vorgenommen wurde: Compiler übernehmen derartige Aufgaben. Zur damaligen Zeit gab es Lochkarten, die entsprechend gestanzt wurden. Sie führten die Übersetzung von der Programmiersprache zur „Maschinensprache“ durch.
Eine weitere Pionierin der Computerentwicklung, die Mathematikerin Grace Hopper, trug entscheidend dazu bei, dass Computerprogramme sich immer mehr an der menschlichen Sprache orientierten. Die Entwicklung derartiger Programmiersprachen setzt sich bis in die Gegenwart fort.
Die Geschichte des Compilers ist sehr interessant und vielfältig. Sie wird von der Entwicklung höherer Programmiersprachen begleitet. Der Deutsche Konrad Zuse und die US-Amerikanerin Grace Hopper forschten auf dem Gebiet der Informatik in den 40er Jahren des vergangenen Jahrhunderts. Stellvertretend für viele andere Wissenschaftler ihres Faches seien diese beiden genannt. Den großen Fortschritten der Informatik verdanken wir, dass heutige Computer uns Menschen immer mehr und besser verstehen. Die binäre Computersprache – basierend auf „Null“ und „Eins“ – müssen Sie als Computeranwender nicht benutzen.

Prinzipielle Funktionsweise

Das prinzipielle Vorgehen bei der Übersetzung des Quellcodes einer höheren Programmiersprache in einen Maschinencode geschieht in zwei Phasen: 1. der Analyse-Phase (Prüfung, Analyse und Optimierung des Codes) und 2. der Synthese-Phase (Code-Generierung).

Prinzipielle Funktionsweise – Analyse-Phase

Es wird geprüft, ob die Syntax des Codes der Quellsprache korrekt ist. Ebenso erfolgt eine lexikalische und semantische Analyse. Weiterhin geschieht eine Fehlerprotokollierung. Schließlich wird der nun entstandene Quellcode zur Zwischendarstellung gebracht, wiederum analysiert und strukturiert. Daran knüpft sich die Optimierung des Codes an. Ziel ist es, dass ein Code entsteht, welcher einen effizienten Programmablauf in der Zielsprache ermöglicht. Nacheinander ablaufende Prozesse gibt es bei komplex arbeitenden Compilern nicht. Hier findet vielmehr ein nichtsequentieller Prozessablauf statt.

Prinzipielle Funktionsweise – Synthese-Phase

Die weitere Umwandlung des in der Analyse-Phase entstandenen Codes kann zweischrittig sein: Es wird erst ein maschinennaher Zwischencode erzeugt. Dies ist einerseits von Vorteil, wenn in mehrere Zielsprachen kompiliert werden soll. Andererseits kann der Code so besser analysiert und optimiert werden. Abschließend wird aus dem in der Analyse-Phase erzeugten Code beziehungsweise dem Zwischencode der Code der Zielsprachen erzeugt. In aller Regel ist dies ein ausführbares Programm. Verantwortlich für die Code-Generierung ist ein Code-Generator. Als Ergebnis bringt dieser einen Code hervor, der sich durch eine wesentliche geringere Datenkomplexität gegenüber denen der Quellsprache auszeichnet.

Code-Optimierung

Am Ende dieses Prozesses sollte ein Zielprogramm entstehen, das sich durch eine geringe Laufzeit sowie einen möglichst geringen Speicherplatzbedarf auszeichnet. Die meisten Möglichkeiten der Optimierung des Zielprogramms haben Entwickler beim Quellprogramm selbst: Wenn dort ein effizienterer Algorithmus verwendet wird, wird sich dies ebenso in einer viel höheren Leistungsfähigkeit des Zielprogramms zeigen. Um das Zielprogramm zu optimieren, ist die Streichung nicht notwendigen Codes eine weitere Variante. Der entstandene Maschinencode sollte so gestaltet sein, dass er die Anforderungen an die Befehlsbereiche der CPU gleichmäßig verteilt. Weiterhin sollte er notwendige Daten rechtzeitig aus dem Speicher abholen. Und er sollte möglichst kurze kritische Pfade sowie wenig Überraschungen infolge falsch prognostizierter Sprünge aufweisen.

Ablauf des Übersetzungvorgangs durch den Compiler
Ablauf des Übersetzungvorgangs durch den Compiler

Bedeutung für die SEO

Compiler sind in der Lage, im Quelltext einer Website Keywords zu finden und zu markieren: Deshalb ist die Suchmaschinenoptimierung (SEO) ein wichtiger Anwendungsbereich für sie. Compiler können Fehler im Quellcode einer Website aufdecken. Insgesamt lässt sich sagen, dass Compiler bei der Analyse des Quelltextes einer Website sehr nützlich sind: Deshalb werden sie zur Optimierung von Websites eingesetzt. Compiler sind fähig, den Quellcode von Websites zu verkleinern, indem dieser auf die notwendigen Inhalte beschränkt wird. Ein Compiler kann deren CSS- und JavaScript-Dateien komprimieren: Durch die Optimierung des Programmcodes wird die Ladezeit der entsprechenden Website beschleunigt. Als Fazit kann ferstgestellt werden, dass SEO ganz wesentlich durch Compiler ermöglicht und bestimmt wird. Online-Marketing ist ohne Compiler undenkbar.

Quellen

Ihr Weg zu mehr Besuchern und Umsatz