Compiler und Interpreter |
||
---|---|---|
Computer verstehen menschliche Sprache (noch) nicht. Ihre eigenen Maschinensprachen sind aber für uns schwer verständlich. Wir kennen zwei verschiedene Verfahren, um sogenannte
Programmiersprachen
in Maschinensprachen zu überführen: Compiler ("Übersetzer") und Interpreter ("Dolmetscher").
Ein Interpreter arbeitet so ähnlich wie ein Dolmetscher, wenn er oder sie politische Vorträge von einer (menschlichen) Sprache in eine andere überträgt. Nach jedem gesprochenen Satz in Sprache A wird dieser durch den Dolmetscher in Sprache B wiedergegeben. Und wenn, wie oft nicht nur bei politischen Reden, immer wieder das gleiche gesagt wird, wird auch jedes Mal der Satz aufs Neue übertragen. Der Interpreter liest also einen Satz - meistens eine Zeile - des Quellprogramms, der in einer Programmiersprache vorliegt, übersetzt ihn in Befehlen der dazu passenden Maschinensprache und führt diese Befehle sofort aus. Wenn also 1000 mal das gleiche, z.B. in einer Schleife, gemacht wird, wird dieses eben 1000 Mal übersetzt. Dagegen übersetzt der Compiler jeden Satz nur einmal. Er erstellt zu einem Quellprogramm ein entsprechendes Zielprogramm, oft auch "Objektcode" genannt. Dieses ausführbare Programm (in DOS mit .COM oder .EXE gekennzeichnet) kann aufgerufen werden, und läuft dann genauso ab, als wenn das Quellprogramm interpretiert wäre.
Warum gibt es denn überhaupt Compiler, wenn das Ergebnis dasselbe ist? In einem Aspekt wird ein compiliertes Programm anders sein - es wird wesentlich schneller laufen. Es gibt nicht nur Einsparungen bei dem nicht wiederholten Übersetzen eines gleichen Programmstückes, Compiler können es sich auch leisten, Optimierungen vorzunehmen. Statt zwei Additionen und zwei Zuweisungen in
Einige Compiler, besonders die Turbo-Varianten, treiben nicht viel Optimierungsaufwand. Kommerzielle Compiler arbeiten oft in zwei Modi: ohne Optimierungen für die Entwicklungsphase, mit Optimierungen für die ausgelieferten Produkte. Für den Schuleinsatz sind Interpreter oft ausreichend, wenn nicht sogar explizit erwünscht. Das geschriebene Quellprogramm beginnt sofort "etwas zu tun", statt daß man erst einmal auf das Übersetzen, ggf. Binden (mit anderen ablauffähigen Modulen zusammenstecken) und Laden des Programms warten muß, bevor es losgeht. |