Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
22 2.2 Compilation versus Interpretation<br />
Laufzeit Ausführung des übersetzten Programms.<br />
Für viele Sprachen (vor allem sogenannte ” Produktionssprachen“, production languages),<br />
ist die Compilierung die normale Behandlung, auch wenn eine Interpretation<br />
grundsätzlich hier ebenfalls möglich wäre. Manche nennen diese Sprachen<br />
deshalb auch ” Compilersprachen“. Compilation ist eine absolute Notwendigkeit,<br />
wenn die Maschine, auf der das fertige Programm laufen soll, nicht gross genug ist<br />
oder nicht die geeigneten Ein-/Ausgabemöglichkeiten hat, um ein Sprachverarbeitungssystem<br />
zu beherbergen. Ein typischer Fall hierfür sind eingebettete Systeme<br />
(engl. embedded systems), bei denen ein Mikroprozessor nur ein kleines Teil einer<br />
komplexeren Anlage ist (z. B. Auto, Waschmaschine, . . . ). Hier kann ein ” Cross-<br />
Compiler“ auf einem grösseren Prozessor Maschinencode für das eingebettete System<br />
erzeugen.<br />
Ein Compiler analysiert und übersetzt ein ganzes Programm, syntaxorientiert auf<br />
der Basis der konkreten Syntax, meist optimiert 12 . Wenn einzelne Auswertungen,<br />
die nicht von der Eingabe abhängen (können) wie z.B. Rechnungen, die nur Konstanten<br />
verwenden, bereits zur Übersetzungszeit ausgeführt werden, bedeutet das<br />
keine wesentliche Abkehr vom Compilerprinzip.<br />
Entsprechend diesem Schema können Fehler jetzt zu beiden Zeiten auftreten<br />
(Übersetzungszeitfehler, Laufzeitfehler).<br />
Die Vorzüge und Nachteile einer Compilation im Vergleich zur Interpretation sind<br />
wie folgt:<br />
pro Das schlagende Argument für die Compilation ist die Effizienz: Das Quellprogramm<br />
muss nicht bei jedem Programmlauf analysiert werden, was<br />
Zeit spart. Im übrigen besteht hier im Gegensatz zur Interpretation die<br />
Möglichkeit der Verschiedenheit von Entwicklungs- und Produktionsumgebung,<br />
d.h. die Maschine, auf der der Compiler läuft, kann wesentlich leistungsfähiger<br />
sein als die, auf der das erzeugte Programm laufen muss.<br />
” Compilersprachen“ können deshalb grösser und komplexer sein als ” Interpretersprachen“.<br />
contra Übersetzungsläufe dauern wegen der Optimierungsmassnahmen länger<br />
als die Syntaxanalyse von Interpretern, deshalb gibt es bei häufigen Programmänderungen<br />
einen Zeitverlust gegenüber interpretierten Lösungen.<br />
Ausserdem haben ” Compilersprachen“ ein relativ starreres Typsystem und<br />
erschweren die Zuordnung von Laufzeitfehlern zum Programmtext. Möchte<br />
man zu Testzwecken an bestimmten Stellen im Programm den Wert von Variablen<br />
(oder Ausdrücken) wissen, so ist ein separater Debugger dazu nötig.<br />
Der Debugger weist seinen Benutzer meist empfindlich auf die semantische<br />
Lücke hin: Er kennt häufig nur Maschinensprache und Maschinendarstellung<br />
von Daten; sog. source level debugger sind selten, weil sie für jede Programmiersprache<br />
separat geschrieben und ausserdem auf einen bestimmten Com-<br />
12 In der Informatik wird in der Regel mit dem Wort ” optimiert“ bzw. ” optimal“ Schindluder getrieben.<br />
Es gibt ” optimal“, ” optimaler“, ” am optimalsten“ und ” echt optimal“.<br />
kogrund.pdf