Axel Richter: statische - dynamische Semantik

Beitrag lesen

Hallo,

Ich hab mal ne Frage:
Und zwar muss ich eine Aufgabe lösen, die mich immer mehr durcheinander bringt. Vielleicht kann mir jemand ein wenig auf die Spünge helfen?

Und zwar geht es um statische bzw. dynamische Semantik...

Oh Gott ;-)) Wer _braucht_ eigentlich dieses theoretische Zeug?
Das hier liest sich nicht _ganz_ so abgehoben:
http://www.ps.uni-sb.de/~smolka/Programmierung/
Hier:http://www.ps.uni-sb.de/~smolka/Programmierung/2.pdf
Bezeichnerbindung
Statische und dynamische Bindungen
Neben lexikalischen Bindungen gibt es statische und dynamische Bindungen. Statische Bindungen werden bei der semantischen Analyse einer Phrase gebildet und binden Bezeichner an Typen (monomorphe Bindung) oder Typschemata (polymorphe Bindung). Dynamische Bindungen werden bei der Ausfžhrung einer Phrase gebildet und binden Bezeichner an Werte.

Ich hab mir jetzt überlegt, dass man die statische Semantik sich bereits ohne Ausführung bzw. vor Ausführung des Programms überprüfen kann.

Mal praxisbezogen (in Java):

int Quotient(int b) {
    return a / b;
  }

ist syntaktisch korrekt. Allerdings fehlt die Deklaration von a. Das Programm ist nicht geschlossen. Das ist ein Fehler in der statischen Semantik. Er wird bei der semantischen Analyse festgestellt. In der Praxis, beim Compilieren.

String a = "3";
  int Quotient(int b) {
    return a / b;
  }

ist syntaktisch korrekt und geschlossen. Es ist aber nicht wohlgetypt. Auch das ist ein Fehler in der statischen Semantik. Compiler-Fehler: Die Operation / kann nicht auf den Typ String angewendet werden.

int a;
  int Quotient(int b) {
    return a / b;
  }

ist ebenfalls syntaktisch korrekt. Es ist auch geschlossen, weil alle Bezeichner an Typen gebunden sind. Es wird also kompiliert. Sein Ergebnis ist aber nicht vorhersagbar, bzw. von Standardwerten der jeweiligen Programmiersprache abhängig, weil a frei auftritt. Der Bezeichner a ist an keinen _Wert_ gebunden. Dieser Fehler in der dynamischen Semantik kann erst während der Laufzeit festgestellt werden.

Hier meine Frage: Kann bei der statischen Semantik einer Variablen nacheinander Werte unterschiedlicher Typen zugewiesen werden? Nein, oder? Es gilt doch immer nur die letzte Zuweisung, gelle? Also eigentlich jein?!?!?

Nein, eben die _Wertbindung_ hat mit der statischen Semantik noch nichts zu tun. Und auch die mehrfache Typbindung _eines_ Bezeichners ist ein Verstoß gegen die statische Semantik, weil dann eine Prüfung auf Wohlgetyptheit unmöglich wäre.

Wie sieht das bei der dynamischen Semantik aus? Haben hier Variablendefinitionen keine Typangaben?

Doch, sie haben eine Typbindung _und_ eine Wertbindung.

viele Grüße

Axel