08.10.2013 Aufrufe

Download (1405Kb)

Download (1405Kb)

Download (1405Kb)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!