Sonntag, Dezember 15, 2019

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?

InformationsquelleAutor Lazer | 2009-10-03

7 Kommentare

  1. 5

    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.

    • im Vergleich zu C/C++ insbesondere… eine Lösung des 8-Königinnen-Problems ist zum Beispiel so einfacher in Prolog (was ich gerade herausgefunden). Warum ist C vs. Prolog wie äpfel und Orangen? Nicht jedes C-Programm umgewandelt werden, um Prolog und Umgekehrt??
    • Es kann (in der Theorie, d.h. ich kann nicht denken, ein Gegenbeispiel offhand), aber nur weil Sie können bedeutet nicht, Sie sollten. Sieh es mal so: wenn es war die richtige Wahl, die meisten der Zeit, dann, da würde es viel mehr prolog-Programmierer als es gibt.
    • ja, ich bin einverstanden. aber ich weiß nicht, warum (es gibt weniger Prolog-Programmierer)
  2. 5

    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.

  3. 2

    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ß.

  4. 2

    Den Sachen, die inhärent sind in Prolog:

    • pattern-matching!
    • irgendetwas, das Tiefe erste-Suche. ( in Java, wenn Sie wollen, eine DFS, möchten Sie vielleicht, um es zu implementieren, indem ein Besucher-Muster oder eine (wirklich riesigen) FALL
    • Vereinigung
    • ??

    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).

  5. 2

    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.

    • Können Sie uns ein Beispiel von einem problem, das nicht lösbar ist in Prolog?
    • Prolog ist turing-vollständig, so dass es ist fähig, zu lösen, die lösbar ist. Allerdings, wenn Sie versuchen zu lösen, zum Beispiel, ein system von Gleichungen mit prolog würde der code sein muss-wie.
  6. 1

    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 😉

    • ja, ich löste das acht-Damen-problem mit ihm, und es war so einfach… ich weiß nicht, warum wir nicht verwenden, Prolog mehr oft.
    • zwei große, Ein). falsche Werkzeug für den job-Syndrom, weil die Mehrheit der business-Probleme entpuppen sich mehr über die Bearbeitung von Objekten und OO ist folglich eine sehr weit verbreitete und erfolgreiche Paradigma B). der prolog ist unglaublich schwer zu verstehen, und eine unheilige Alptraum zu Debuggen
  7. 1

    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.

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...