Download (1405Kb)
Download (1405Kb)
Download (1405Kb)
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
178 KAPITEL 9. ZUSAMMENFASSUNG UND AUSBLICK<br />
unter Ausnutzung von Striktheitsinformationen einen Teil der Funktionsargumente mit dem callby-value<br />
Mechanismus auswerten.<br />
In weiteren Untersuchungen haben wir noch festgestellt, daß für alle ς-Semantiken — mit Ausnahme<br />
der cbv-Semantik — unsere Programme mit Pattern echt ausdrucksstärker sind als unsere<br />
Programme mit Hilfsfunktionen.<br />
Schließlich sind wir auf die Grenzen unserer Programmiersprachen gestoßen: Sie erlauben nur die<br />
Spezifikation freier Datentypen. In der Praxis mag allerdings der Programmierstil der Konstruktorfunktionen<br />
für die Beschreibung nicht-freier Datentypen ausreichen.<br />
Aus diesen Resultaten ergeben sich jedoch auch wiederum viele neue Fragen.<br />
Sind unsere ς-Semantiken die einzigen sinnvollen Semantiken für unsere Programme? Oder existieren<br />
noch weitere?<br />
Bezüglich der Beziehungen zwischen denotationellen und operationellen Semantiken wäre es lohnenswert<br />
zu untersuchen, ob zu jeder invarianten Reduktionssemantik eine Transformation existiert,<br />
so daß die Reduktionssemantik mit dem kleinsten Fixpunkt der Transformation übereinstimmt.<br />
Ebenso interessant wäre die umgekehrte Richtung, und eventuell könnten auch nicht nur kleinste<br />
Fixpunkte betrachtet werden.<br />
Generell wäre der Beweis einer Aussage der Art, daß unsere ς-Semantiken die einzigen konstruktorbasierten,<br />
invarianten (d. h. überhaupt einen Datentyp spezifizierenden), kompositionellen (einen<br />
Basisdatentyp erweiternden) Semantiken für unsere Programm sind, sehr schön. Die einzelnen geforderten<br />
Eigenschaften wären allerdings noch zu präzisieren, um insbesondere auch triviale Semantiken<br />
auszuschließen, wie diejenige, die alle Werte gleich ⊥ setzt.<br />
Bei einer Einbeziehung deklarativer Semantiken erhebt sich die Frage, ob unsere cbn-Semantik dann<br />
als einzige mögliche Semantik übrig bleibt, und was wir mit der cbv-Semantik machen.<br />
Gerade die deklarative Definition des partiellen cbv-Datentyps hat uns vor Augen geführt, wie<br />
stark die Beantwortung vieler Fragen von den allen Definitionen zugrunde gelegten mathematischen<br />
Strukturen abhängt. Dies ruft nach neuen, allgemeineren und abstrakteren mathematischen<br />
Strukturen als Grundlagen semantischer Untersuchungen, um die durch sie gegebenen Grenzen<br />
soweit wie möglich hinauszuschieben.<br />
In den letzten Kapiteln haben wir einige konkrete Ideen vorgestellt, deren Weiterverfolgung lohnend<br />
wäre.<br />
So wäre vor allem zu beweisen, daß die Sequentialität tatsächlich das Scheidekriterium zwischen<br />
der Ausdrucksstärke der Programme mit Pattern und der mit Hilfsfunktionen ist. Hierfür wäre<br />
eine eingehendere Beschäftigung mit Methoden zum Beweisen der semantischen Äquivalenz von<br />
Programmen nötig.<br />
Die angedeutete Methode zur Gewinnung effizienter ς-Reduktionsstrategien auf der Basis semantischer<br />
Sequentialitätsinformationen ließe sich präzise definieren. Bei alleiniger Betrachtung der linken<br />
Regelseiten und der erzwungenen Striktheit ς ist zu erwarten, daß die so definierte eventually<br />
gaining cbv-Reduktionsstrategie gleich der li-Reduktionsstrategie ist. Durch die Untersuchung der<br />
Beziehungen zwischen Sequentialitäts- und Striktheitsanalyse ließen sich Methoden für die Gewinnung<br />
präziserer Sequentialitätsinformationen für noch weitergehendere Optimierungen gewinnen.<br />
Wir könnten die Grenzen unserer Programmiersprachen übertreten und die angedeuteten Erweiterungen<br />
um Views und gekapselte Module mit Beobachtungssemantik vornehmen, um auch die<br />
Spezifizierung echter nicht-freier Datentypen zu ermöglichen.<br />
Schließlich könnten wir in einem weiteren Schritt (in Richtung einer realen funktionalen Programmiersprache)<br />
noch Funktionen höherer Ordnung betrachten. Dies nicht nur, weil diese ein äußerst