PROLOG


[ Zum Seminar "Programmierkonzepte und Programmiersprachen" ][ Zum Inhalt ][ Horn - Klauseln ]

Übersicht:



Geschichte der Programmiersprache PROLOG


Als "Geburtsstätte" von PROLOG wird in der Überlieferung die GIA(Group d'Intelligence Artificielle) in Marseilles und als deren "Entwicklungsväter" Alain Colmerauer und seinen Mitarbeiter beschuldigt. Fast gleichzeitig (also Anfang 1970) wurde in Edinburgh eine ähnliche Sprache entwickelt (eine sehr detailierte Beschreibung der PROLOG-Entstehungsgeschichte ist
hier zu finden).
Deswegen steht PROLOG eigentlich für PROgrammation en LOGique lässt sich aber auch prima für PROgrammieren in LOGik oder PROgramming in LOGic missbrauchen.
Wie bei den meisten Sprachen entwickelten sich viele Dialekte so dass es schliesslich zu einem ISO-Standart kommen musste, der aus dem sog. Edinburgh Prolog hervorgegangen ist.
Trotz der Missachtung seitens der USA ist es die am weitesten verbreitete Sprache für logisches Programmieren.
PROLOG wird bevorzugt zur Lösung von Problemen, bei denen es um Objekte und ihre Relationen geht, herangezogen.
Aufgrund ihrer Funktionsweise, bzw. Stellung in der logischen Programmierung wird PROLOG auch gerne "Assemblersprache der 5.Generation" genannt.



Wichtigste Elemente


Variablen
sind ungetypt und Werden grossgeschrieben (z.B.: X, ERGEBNIS,...)
Eine Besonderheit stellt die anonyme Variable (die nur aus einem Unterstrich besteht) dar.
Sie wird bei Existenz-Anfragen verwendet, also wenn gefragt wird ob ein Objekt, welches entsprechende Bedingungen erfüllt, existiert jedoch nicht von Interesse ist, welches genau es ist.

Objekte
werden kleingeschrieben (z.B.: isaak) oder sind Zahlen

Relationen
werden ebenfalls kleingeschrieben (z.B.: crewmitglied)

Implikation
In den Beispielen für logische Programme als ← dargestellt wird die Implikation in PROLOG mit ":-" abgebildet.
Auf der linken Seite davon steht die Regel bzw. Folgerung, auf der rechten ihre Bedingungen.

Anfrage
Die Anfrage in PROLOG beginnt mit dem "?-" gefolgt von Zielanweisung.

Logisches UND
Entspricht einem einfachen Komma "," .

Logisches ODER
Entspricht einem einfachen Semikolon ";" .

Listen
Listen können beliebige Elemente enthalten.
[x, y, z] ist eine Liste mit 3 Elementen/Objekten (x,y und z).
Alternativ kann man Listen in dieser Schreibweise abbilden: [H|T] wobei H der Kopf der Liste (also das erste Element) ist und T (für Tail) die Restliste enthällt.

Vergleichsoperatoren
Wie die meisten Programmiersprachen enthält auch PROLOG die handelsüblichen Vergleichsoperatoren <, =, >,>=,<=.
Eine Ausnahme bildet die Ungleichheit weil es einmal die arithmethische Variante (=\=) und die symbolische (==) davon gibt.

Arithm. Operatoren
Des weiteren sind die Standartoperatoren wie +, -, *, /, mod bereits definiert und können problemlos eingesetzt werden.

Wertzuweisung
Sehr vorsichtig muss man in PROLOG mit der Wertzuweisung von Variablen sein.
Geschieht sie in folgender Form X=3+4. so beinhaltet die Variable X den Term 3+4, jedoch nicht das Ergebnis der Rechnung. Hierzu muss man den "is"-Operator verwenden, also X is 3+4.

Weitere Elemente
Die meisten PROLOG-Umgebungen stellen erweiterte (nicht logische) Elemente wie das "not", den Cut ("!") zu denen später noch mehr steht, ein read zum Einlesen, ein write für Ausgaben und "/**/" für Kommentare zur Verfügung.



Beispieldateien


Das Traumschiffbeispiel für PROLOG formuliert : traumschiff

Eine (nicht perfekte) Umsetzung für die Modulafunktion (nur um zu zeigen das PROLOG auch rechnen kann) : mod

Mehrere Listenfunktionen : list

Eine Wissensbasis an der man die Relation und Unifikation gut mitverfolgen kann : ehepaar

Ein kleines Beispiel zum Fail : fail

Ein kleineres Beispiel zum Cut : cut

Ein winziges Beispiel an dem man testen kann dass die doppelte Verneinung mit Variablen nicht sinn macht : not


[ Zum Seminar "Programmierkonzepte und Programmiersprachen" ][ Zum Inhalt ][ Seitenanfang ][ Horn - Klauseln ]