Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
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