Warum (nicht) Logikprogrammierung?

13

Ich habe noch nichts über die Verwendung einer logischen Programmiersprache (wie Prolog) in der Softwareindustrie gehört und weiß auch nichts über deren Verwendung in Hobby-Programmen oder Open-Source-Projekten. Es (Prolog) wird jedoch in gewissem Umfang als akademische Sprache verwendet (warum wird es im akademischen Bereich verwendet?).

Deshalb frage ich mich, warum Sie Logikprogrammierung verwenden sollten und warum nicht? Warum wird es in der Branche nicht nachweisbar genutzt?

Anto
quelle

Antworten:

8

Außerhalb der akademischen Welt ... Ich habe gehört, dass es in der KI häufiger verwendet wird, manchmal in Spielen (ich habe gehört, dass es die KI in der Black & White-Serie antreibt). Ich habe auch von Variationen gehört, mit denen Regel-Engines für bestimmte Unternehmen und Wirtschaftssimulationen ausgeführt werden.

Meine Vermutungen wegen mangelnder Akzeptanz sind:

  • Es ist komisch - die meisten Leute sind es nicht gewohnt, darin zu programmieren, und sie können in anderen Sprachen das tun, was sie brauchen.
  • Mangelnde Anbieterunterstützung - Wenn Microsoft plötzlich anfing, Prolog # (mit dem vollen Gewicht der .NET-Bibliothek und des Toolsets und der formalen Unterstützung dahinter) als The Next Big Thing zu veröffentlichen - und dann haben IBM und Oracle sich etwas einfallen lassen, um miteinander zu konkurrieren, wette ich würde es abholen sehen!
  • Mangelnde Integration - Ich weiß nicht, welche Bibliotheken für Prolog verfügbar sind - Zuletzt habe ich überprüft, dass es nicht viele Grafik - oder Netzwerkbibliotheken gibt Welt.
FrustratedWithFormsDesigner
quelle
"Eine Prolog" -Anwendung muss in eine andere Anwendung eingebunden werden, die mit dem Rest der Welt interagiert. " Das war eigentlich ein Feature für uns. Wir konnten die Prologbits einfacher isolieren, weil die Schnittstelle dazu so einfach war.
S.Lott
@ S.Lott: Ok, ich kann das auch als möglicherweise positiv ansehen. Als ich in der Schule war und tatsächlich eine Bewerbung mit Prolog machen wollte, empfand ich die Installation und Verkabelung zwischen den Teilen als große Herausforderung und Hindernis.
FrustratedWithFormsDesigner
5

Wir haben damit Parser erstellt. Es war einfacher, damit zu arbeiten als mit Lex / Yacc.

Warum wird es in der Branche nicht nachweisbar genutzt?

Das ist nicht zu beantworten. Was bedeutet "nachweisbar"? Wer muss das Erkennungsprotokoll erhalten?

http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp

Fragen Sie Meridian Software nach ihrem Prologangebot, wenn Sie Fakten wünschen.

Es gibt jedoch einige Eintrittsbarrieren, die ich erlebt habe.

Erstens kann der Prolog langsam sein. Wenn es viele Kandidatenregeln und keine einfachen Ausschneidevorgänge gibt, um den Suchraum einzuschränken, kann es eine Weile dauern, bis etwas erledigt ist.

Zweitens ist Prolog nicht prozedural oder funktional, so dass viele Programmierer es ablehnen, es zu verwenden. (Interessanterweise verzichten einige Programmierer auch auf die Verwendung von SQL. Außerdem werden einige Programmierer widerstrebend SQL verwenden und seltsame Dinge wie das Vermeiden von Verknüpfungsoperationen ausführen oder behaupten, dies COUNT(*)sei magisch ineffizient.)

Drittens erfordert der Prolog ein ziemlich klares Nachdenken über die verschiedenen Fälle. Prozedurale Programmierung kann schlampig sein und trotzdem zuverlässig funktionieren. Nicht ausführbare Anweisungen sind zulässig.

Das Folgende ist in den meisten Kreisen akzeptabel.

b = a + 1
if a > b: # always False

Diese Art des düsteren Denkens bringt Sie im Prolog in Schwierigkeiten.

S.Lott
quelle
2

Ein Problem ist, dass Prolog nicht wirklich in Prädikatenlogik erster Ordnung programmiert, was rechnerisch nicht umsetzbar ist. Daher ist es eine Vereinfachung.

In der Logik kann ein Satz als wahr, falsch oder in keiner Weise bewiesen werden. Prolog hat nur bewiesen und nicht bewiesen, "nicht bewiesen" bedeutet typischerweise falsch. Darüber hinaus kann die Reihenfolge der Prolog-Klauseln die Ausführung beeinflussen, was bei logischen Klauseln nicht der Fall ist. In dem Kurs, in dem ich es verwendet habe, habe ich angefangen, Prolog mehr als eine logische Sprache als eine Sprache für die Mustererkennung zu verstehen.

Daher hängt die Prolog-Programmierung weniger von der logischen Korrektheit als von der Prolog-Sprache selbst ab. In mancher Hinsicht ist es eine nützliche Sprache, aber sie ist weit entfernt vom Mainstream und hat nicht die Tool- und Community-Vorteile einer Sprache wie C ++.

David Thornley
quelle