08.10.2013 Aufrufe

Download (1405Kb)

Download (1405Kb)

Download (1405Kb)

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.

Kapitel 7<br />

Sequentialität<br />

In diesem Kapitel beschäftigen wir uns mit der Ausdrucks- bzw. Berechnungsstärke unserer Programmiersprachen,<br />

d. h. der Programme mit Pattern und der Programme mit Hilfsfunktionen zusammen<br />

mit den ς-Semantiken.<br />

Zuerst werfen wir in 7.1 einen Blick auf die verschiedenen Vergleichsmöglichkeiten.<br />

Eine von diesen untersuchen wir dann in 7.2 genauer: In Anbetracht der Tatsache, daß wir einerseits<br />

Programme mit Pattern und andererseits Programme mit Hilfsfunktionen definiert haben, stellt sich<br />

die Frage, ob beide Programmarten in Verbindung mit den ς-Semantiken gleich ausdrucksstark sind,<br />

und ob sich Programme der einen Art in Programme der anderen Art effektiv semantikerhaltend<br />

übersetzen lassen. Dabei stellen wir fest, daß Programme mit Pattern echt ausdrucksstärker als<br />

Programme mit Hilfsfunktionen sind.<br />

In 7.3 beweisen wir diese Aussage formal mit Hilfe der semantischen Eigenschaft der Sequentialität.<br />

Da die Sequentialität eine fundamentale Eigenschaft im Bereich funktionaler Programmiersprachen<br />

und dem Kalkül der Termersetzungssysteme ist, betrachten wir sie in 7.4 noch näher. Sie stellt<br />

exakt das Scheidekriterium zwischen den Ausdrucksstärken der Programme mit Pattern und der<br />

mit Hilfsfunktionen dar. Auch liefert sie Anregungen für effiziente ς-Reduktionsstrategien.<br />

7.1 Berechnungsstärke unserer Programmiersprachen<br />

Da, wie wir schon in der Einleitung anmerkten, alle in einer funktionalen Programmiersprache<br />

spezifizierbaren Abbildungen auch berechenbar sind (mit gewissen Einschränkungen bezüglich der<br />

partiellen und der unendlichen Konstruktorterme), sind die Begriffe Ausdruckstärke und Berechnungsstärke<br />

in diesem Rahmen austauschbar.<br />

Wollen wir die absolute Berechungsstärke unserer Programmiersprachen bestimmen, so müssen wir<br />

feststellen, daß diesbezüglich durchaus unterschiedliche Definitionen existieren.<br />

In der klassischen Berechenbarkeitstheorie werden nur berechenbare (rekursive) Abbildungen<br />

über den natürlichen Zahlen und über der Halbgruppe der Wörter (Zeichenketten) betrachtet<br />

([Hermes78]). Wenn wir die natürlichen Zahlen durch die Konstruktorsymbole Zero und Succ<br />

aufbauen, so können wir alle berechenbaren Abbildungen über den natürlichen Zahlen spezifizieren,<br />

denn in unseren Programmiersprachen sind Nachfolgerbildung(SuccDP,ς), Projektion (Pattern<br />

oder Selektion sel DP,ς<br />

G,i ), Konstantenbildung, primitive Rekursion und Minimalisierung spezifizierbar.<br />

Ebenso lassen sich offensichtlich alle berechenbaren Abbildungen über Wörtern spezifizieren (vgl.<br />

[Dau89]).

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!