Semantik von Programmiersprachen Prof. Dr. Manfred Schmidt-Schauß SS 2013 Stand der Folien: 15. April 2013
Semantik von Programmen verschiedene Semantiken: operationale Semantik (Spezifikation eines Interpreters) Auswertungssemantik (Big-Step Semantik) Reduktionssemantik (Small-Step Semantik) abstrakte Maschine denotationale Semantik kontextuelle Semantik axiomatische Semantik (nicht in dieser Vorlesung) transformationsbasierte Semantik (teilweise) Semantik 15. April 2013 M. Schmidt-Schauß 2/6
Semantik von Programmen Zweck einer Semantik formale eindeutige Beschreibung des Verhalten eines Programms bzw Wirkung als Funktion formal zu beschreiben. Basis für korrekte Optimierungen, Programmtransformationen, Basis für Programm-Verifikationen Semantik 15. April 2013 M. Schmidt-Schauß 3/6
Annahmen für Semantiken Programm: eindeutig als Syntaxbaum dargestellt. die gesamte relevante Umgebung ist die Eingabe die veränderte Umgebung am Ende ist die Ausgabe. bei IMP: Umgebung ist die Belegung von Speicherzellen mit Werten. Abarbeitung soll störungsfrei sein, keine zufälligen Fehlfunktionen Die Abarbeitung soll nur durch die Eingabe bestimmt sein: deterministisch oder nichtdeterministisch. Semantik 15. April 2013 M. Schmidt-Schauß 4/6
Falsche Methodik Schlechte und unsystematische Vorgehensweisen und Sichtweisen: Ein (geschriebenes)programm ist ein abkürzende Schreibweise für den zu erzeugenden Maschinenkode. Jeder weiß doch, was gemeint ist informelle Festlegung der Übersetzung jedes Konstruktes variable Festlegungen, die plattform- bzw. compilerabhängig gemacht werden dürfen. Schlechte Konsequenz: ( der (benutzte) Compiler ist die Semantik ) Semantik 15. April 2013 M. Schmidt-Schauß 5/6
Falsche Methodik Schlechte und unsystematische Vorgehensweisen und Sichtweisen: Ein (geschriebenes)programm ist ein abkürzende Schreibweise für den zu erzeugenden Maschinenkode. Jeder weiß doch, was gemeint ist informelle Festlegung der Übersetzung jedes Konstruktes variable Festlegungen, die plattform- bzw. compilerabhängig gemacht werden dürfen. Schlechte Konsequenz: ( der (benutzte) Compiler ist die Semantik ) Semantik 15. April 2013 M. Schmidt-Schauß 5/6
Falsche Methodik Schlechte und unsystematische Vorgehensweisen und Sichtweisen: Ein (geschriebenes)programm ist ein abkürzende Schreibweise für den zu erzeugenden Maschinenkode. Jeder weiß doch, was gemeint ist informelle Festlegung der Übersetzung jedes Konstruktes variable Festlegungen, die plattform- bzw. compilerabhängig gemacht werden dürfen. Schlechte Konsequenz: ( der (benutzte) Compiler ist die Semantik ) Semantik 15. April 2013 M. Schmidt-Schauß 5/6
Falsche Methodik Schlechte und unsystematische Vorgehensweisen und Sichtweisen: Ein (geschriebenes)programm ist ein abkürzende Schreibweise für den zu erzeugenden Maschinenkode. Jeder weiß doch, was gemeint ist informelle Festlegung der Übersetzung jedes Konstruktes variable Festlegungen, die plattform- bzw. compilerabhängig gemacht werden dürfen. Schlechte Konsequenz: ( der (benutzte) Compiler ist die Semantik ) Semantik 15. April 2013 M. Schmidt-Schauß 5/6
Falsche Methodik Schlechte und unsystematische Vorgehensweisen und Sichtweisen: Ein (geschriebenes)programm ist ein abkürzende Schreibweise für den zu erzeugenden Maschinenkode. Jeder weiß doch, was gemeint ist informelle Festlegung der Übersetzung jedes Konstruktes variable Festlegungen, die plattform- bzw. compilerabhängig gemacht werden dürfen. Schlechte Konsequenz: ( der (benutzte) Compiler ist die Semantik ) Semantik 15. April 2013 M. Schmidt-Schauß 5/6
Gute Sichtweise Ein Programm beschreibt ein eigenständiges, maschinenunabhängiges Berechnungsverfahren. vorteilhafte Eigenschaften: Die Bedeutung der Quell-Programmiersprache ist unabhängig von der Zielprogrammiersprache beschreibbar. Idealerweise: Alle Effekte, die ein Programm haben kann, sind durch die Semantik erfasst Ein Kompiler kann (idealerweise) alleine anhand der Semantiken der Quell- und der Zielsprache konstruiert werden Die Korrektheit von vielen Transformationen und Optimierungen kann alleine aufgrund der Semantik der Quellsprache als korrekt nachgewiesen werden. Korrektheit des Übersetzungsprozesses für alle Plattformen / Betriebssysteme/ Prozessoren kann formal gezeigt werden. Semantik 15. April 2013 M. Schmidt-Schauß 6/6