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 ]