11.09.2013 Aufrufe

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!