Was sind die Vorteile der Verwendung von Prolog gegenüber anderen Sprachen?
Jeder Sprache, die verwendet wird, verwendet wird für seine Vorteile, in der Regel.
Was sind die Vorteile von Prolog?
Was die Allgemeine Situation/Problematik wo kann man verwenden, Prolog effizienter als jede andere Sprache?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Vergleich zu was genau? Der Prolog ist wirklich nur die herausragende Umsetzung der Logik-Programmierung also wenn deine Frage ist wirklich über einen Vergleich der Programmierparadigmen gut, dass ist wirklich sehr breit in der Tat-und Sie sollten sich hier.
Wenn Ihre Frage ist mehr, speziell über prolog vs am häufigsten gesehen OO-Sprachen, würde ich sagen, dass Sie wirklich äpfel mit Birnen vergleichen - der "Vorteil" (wie es ist) ist einfach eine andere Art des Denkens über die Welt, und manchmal ändern die Weise, die Sie Fragen, eine Frage, die ein besseres Werkzeug für die Lösung eines Problems.
Grundsätzlich, wenn Ihr Programm kann angegeben werden, einfach als declaritive formalen Logik Aussagen, Prolog (oder eine andere Sprache in der Familie) geben die Schnellste Entwicklung Zeit. Wenn Sie einen guten Prolog-compiler, es wird auch die geben die beste Leistung und Zuverlässigkeit, denn der Motor hatte eine Menge von design und Entwicklung.
Zu versuchen, diese Art der Sache in einer anderen Sprache neigt dazu, ein totales Chaos. Die sauberste und am meisten generelle Lösung vermutlich beinhaltet die Umsetzung Ihrer eigenen Vereinigung-Motor. Sogar die naiven Implementierungen sind nicht gerade trivial, die Warren Abstract Machine hat ein oder zwei Bücher über ihn geschrieben, und besser wird zumindest beinhalten eine fair bit of research, reading einige Kopfschmerzen-induzierende Papiere.
Natürlich in der realen Welt, die wichtigsten Teile von Ihrem Programm profitieren kann Prolog, aber eine Menge anderer Sachen besser ist, behandelt in einer anderen Sprache. Das ist, warum eine Menge von Prolog-Compiler die Schnittstelle mit, z.B., C.
Einer der besten Zeiten, um zu verwenden, Prolog wenn Sie ein problem haben, geeignet, zu der Lösung mit backtracking. Und das ist, wenn man viele mögliche Lösungen zu einem problem, und möchten Sie vielleicht, um Sie zu "einschließen/ausschließen", je nach Zusammenhang. Dies deutet auf eine sehr viel Unklarheit... wie in der Verarbeitung natürlicher Sprache.
Es wäre sicher viel aufgeräumter zu schreiben, alle möglichen Antworten als Prolog-Klauseln. Mit einer imperativen Sprache, denke ich, dass Sie wirklich tun können, ist schreiben ein Riesen (wirklich Riesen) CASE-Anweisung, die nicht zu Spaß.
Den Sachen, die inhärent sind in Prolog:
Paul Graham, ist ein Lisp person dennoch argumentiert er, dass der Prolog ist wirklich gut für 2% der Probleme, ich bin selbst gerne brechen diese 2% nach unten und Abbildung, wie er gekommen war mit einer solchen Nummer.
Sein argument für "bessere" Sprachen "weniger code, mehr power". Der Prolog ist auf jeden Fall "weniger code" und wenn Sie sich für die letztere Aromen von es (geschrieben sind), Sie bekommen mehr Leistung zu. Das einzige was mich gestört hat bei der Verwendung von Prolog ist die Tatsache, dass ich nicht random-access-Listen (keine arrays).
Prolog ist ein sehr high-level-Programmiersprache. Eine Analogie könnte sein (Prolog : C) wie (C : Assembler)
Warum ist nicht, dass viel dann? Ich denke, dass es hat zu tun mit den Maschinen, die wir verwenden; Sie basieren auf turing-Maschinen. C werden in byte-code kompiliert automatisch, aber der Prolog ist kompiliert auf einer emulation der Warren Abstract Machine, es ist also nicht sehr effektiv.
Auch, prolog basiert auf first order logic, die nicht in der Lage die Lösung jedes lösbare problem in einer deklarativen Art und Weise, so an einem gewissen Punkt, müssen Sie verlassen sich auf Imperativ-wie code.
Ich würde sagen, der prolog eignet sich gut für Probleme, bei denen eine knowledge-base bildet einen wichtigen Teil der Lösung. Vor allem, wenn die Kenntnis der Struktur ist geeignet kodiert werden als logische Regeln.
Zum Beispiel das schreiben einer natürlichen Sprache-interpreter für eine bestimmte problemdomäne erfordern würde eine Menge wissen in dieser Domäne. Expert-Systeme fallen auch innerhalb dieser wissensbasierten Kategorie.
Es ist auch eine schöne Sprache zu erforschen, Lösungen für logische Rätsel 😉
Habe ich programmiert (zum Spaß) über ein Jahr mit Swi-Prolog. Ich denke, einer der Vorteile von Prolog ist, dass Prolog hat keine Nebenwirkungen: Prolog ist eine Sprache, die Art der hat keine Verwendung für (lokale oder in der Klasse) Variablen, es zwingt den Programmierer nicht verwenden Variablen. Prolog-Objekte verfügen über keinen Zustand, Art. Ich denke. Ich Schreibe Kommandozeilen-Prolog (kein GUI, bis auf wenige XPCE-tests): es ist wie ein Zug auf einer Spur.