Als ich damals vor einigen Jahrzehnten Informatik studiert habe, wurde uns erzählt, dass die Fahrplanauskunft unseres Nahverkehrsverbundes in Prolog geschrieben sei. Ich kann es nicht mehr beweisen und wahrscheinlich stimmt es inzwischen auch schon nicht mehr, aber das wäre ein sinnvoller Einsatzzweck für logische Programmierung.
In Prolog kannst Du halt einfach so ein Programm schreiben:
fahrzeit(a-straße,bahnhof,5).
fahrzeit(a-straße,clairewerk,7).
fahrzeit(bahnhof,dorfplatz,13).
fahrzeit(clairewerk,dorfplatz,12).
fahrzeit(X,Y, Zeit) :- fahrzeit(X,Umstieg,Zeit1), fahrzeit(Umstieg,Y,Zeit2), Zeit is Zeit1+Zeit2.
Wenn Du dann noch Umsteigezeiten berücksichtigen willst, und nicht nur irgendeine, sondern möglichst die schnellste Strecke bekommen willst, Taktungen, Streckensperrung etc berücksichtigen musst, wird es natürlich nochmal deutlich komplizierter, aber dafür, dass das im Prinzip nur eine Zeile echter Code ist, ist das Ergebnis schon ganz gut.
Ja, ist leider schon speziell, was mit Prolog wirklich gut funktioniert. Wenn du etwas machen willst, wo Schritt A vor Schritt B ausgeführt werden sollte, dann wird es bereits anstrengend.
Ich finde, am besten betrachtet man Prolog als eine Datenbank, wo man Regeln abspeichert und dann Abfragen stellen kann. Und dann nimmt man eine (andere) Programmiersprache, um mit den abgefragten Informationen etwas umzusetzen. Also tatsächlich gibt es auch für viele Programmiersprachen Bibliotheken, mit denen man Prolog für sowas einbetten kann.
Als ich damals vor einigen Jahrzehnten Informatik studiert habe, wurde uns erzählt, dass die Fahrplanauskunft unseres Nahverkehrsverbundes in Prolog geschrieben sei. Ich kann es nicht mehr beweisen und wahrscheinlich stimmt es inzwischen auch schon nicht mehr, aber das wäre ein sinnvoller Einsatzzweck für logische Programmierung. In Prolog kannst Du halt einfach so ein Programm schreiben:
fahrzeit(a-straße,bahnhof,5). fahrzeit(a-straße,clairewerk,7). fahrzeit(bahnhof,dorfplatz,13). fahrzeit(clairewerk,dorfplatz,12). fahrzeit(X,Y, Zeit) :- fahrzeit(X,Umstieg,Zeit1), fahrzeit(Umstieg,Y,Zeit2), Zeit is Zeit1+Zeit2.
Und dann abfragen:
? fahrzeit(a-straße,dorfplatz, X). Yes (X=18) fahrzeit(a-straße,bahnhof,5). fahrzeit(bahnhof,dorfplatz,13).
Wenn Du dann noch Umsteigezeiten berücksichtigen willst, und nicht nur irgendeine, sondern möglichst die schnellste Strecke bekommen willst, Taktungen, Streckensperrung etc berücksichtigen musst, wird es natürlich nochmal deutlich komplizierter, aber dafür, dass das im Prinzip nur eine Zeile echter Code ist, ist das Ergebnis schon ganz gut.
Ja, ist leider schon speziell, was mit Prolog wirklich gut funktioniert. Wenn du etwas machen willst, wo Schritt A vor Schritt B ausgeführt werden sollte, dann wird es bereits anstrengend.
Ich finde, am besten betrachtet man Prolog als eine Datenbank, wo man Regeln abspeichert und dann Abfragen stellen kann. Und dann nimmt man eine (andere) Programmiersprache, um mit den abgefragten Informationen etwas umzusetzen. Also tatsächlich gibt es auch für viele Programmiersprachen Bibliotheken, mit denen man Prolog für sowas einbetten kann.