11.09.2013 Aufrufe

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

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.

38 3.3 relational<br />

3.3 Das relationale Paradigma<br />

Manche Autoren bezeichnen dieses als das eigentlich deklarative Paradigma und setzen<br />

dies in Kontrast zum funktionalen Paradigma. Die Charakteristika des relationalen<br />

Programmierparadigmas sind (Justice u. a. 1994):<br />

• Der Programmierer spezifiert, welche Fragen er gelöst sehen möchte, aber nicht,<br />

wie sie gelöst werden sollen 15 .<br />

• Es gibt keine Berechnung im klassischen Sinne: gebundene Parameter in einem<br />

Ausdruck stellen Eingaben dar, ungebundene Parameter Ausgaben.<br />

• Die Programmausführung wird als Ableitungs- bzw. Beweisprozeß gesehen: Der<br />

Programmierer gibt Behauptungen ein; diese werden vom System verifiziert oder<br />

falsifiziert bzw. es werden die Bedingungen angegeben, unter denen die Behauptung<br />

wahr ist.<br />

Prominentester Vertreter dieser Klasse von <strong>Programmiersprachen</strong> ist Prolog (Clocksin<br />

und Mellish 1990).<br />

Beispiel Wenn wir eine dreistellige Relation (ein Prädikat) add(X, Y, Z)<br />

(überflüssigerweise) rekursiv entsprechend der primitiv-rekursiven Definition<br />

der Addition definieren, so daß add(X, Y, Z) wahr ist gdw. X + Y = Z, so<br />

können wir dies sowohl zum Ausrechnen als auch zum Nachrechnen und sogar<br />

zur Subtraktion verwenden, je nachdem wie wir die Parameter besetzen: ( ” ?-“ ist<br />

der Prolog-Prompt)<br />

✞ ☎<br />

?− add ( 3 , 4 ,X ) .<br />

X=7<br />

yes<br />

?− add ( 3 , 4 , 7 ) .<br />

yes<br />

?− add ( 3 , 4 , 9 ) .<br />

no<br />

?− add ( 3 ,X , 7 ) .<br />

X=4<br />

yes<br />

?− add (X , 4 , 7 ) .<br />

X=3<br />

yes<br />

✝ ✆<br />

Die Eingabe add(3,4,X) bedeutet nach der Prolog-Ideologie nicht die Frage: ” Für<br />

welches x gilt 3 + 4 = x?“, sondern vielmehr die Behauptung: ” 3 + 4 = x.“ Das<br />

System beantwortet diese mit: ” Jawohl, die Behauptung stimmt, wenn wir x = 7<br />

setzen.“ Auch eine Anfrage wie<br />

✞ ☎<br />

?− add (X , Y , 7 ) .<br />

✝ ✆<br />

15 Die Lösung ist in einem allgemeinen Inferenzmechanismus enthalten, den der Programmierer aller-<br />

dings vernünftigerweise kennen sollte.<br />

kopara.pdf

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!