Eingebettete Prolog-Interpreter/Compiler für Java

Arbeite ich an einer Anwendung in Java, die Bedürfnisse zu tun, die eine komplexe Logik Regel Abzüge als Teil seiner Funktionalität. Ich möchte code meiner Logik Abzüge in Prolog oder eine andere Logik/constraint programming language, anstelle von Java, wie ich glaube, dass der entstehende code wird deutlich einfacher und wartbarer.

Googelte ich für eingebettete Java-Implementierungen auf den Prolog, und gefunden viele von Ihnen, jeder mit sehr wenig Dokumentation. Meine (bescheidene) Auswahl-Kriterien sind:

  • sollte bündig in Java (z.B. gebündelt mit meinem java-Paket statt der Anforderung, dass jede native Installationen auf externe Programme)
  • einfache Schnittstelle zu verwenden, die von Java (für die Initiierung der Abzüge, Prüfung der Ergebnisse und das hinzufügen von Regeln)
  • kommen mit mindestens ein paar Beispiele, wie man es
  • nicht unbedingt Prolog, sondern einer anderen Logik/constraint-Programmierung Sprachen mit den oben genannten Kriterien wären für meine Bedürfnisse auch.

Welche Möglichkeiten habe ich und was sind Ihre Vorteile und Nachteile?

  • Ich habe noch nie verwendet ein Prolog-in-Java, aber eine andere Möglichkeit ist, ein eigenes zu schreiben. Ich weiß von mindestens 2 Lisp-Bücher, die dies in nicht allzu vielen Seiten (Auf Lisp und PAIP), also kann es nicht so schwer sein, auch in Java.
  • Sicher, Sie können machen, eine Spielzeug-Logik-Programmiersprache in ein paar Seiten code, aber ich bin auf der Suche nach etwas ein bisschen mehr robust. Nun, Sie können tun ein Spielzeug lisp in ein paar Seiten code, also denke ich, werde ich brauchen nur vier Seiten und ich werde gut zu gehen 🙂
  • Das sind einige geladene Wörter, die man wirft um! Ich bin mir nicht sicher, was macht eine kleine Prolog-Implementierung ein "Spielzeug", oder, in welcher Weise Sie sind nicht "robust" genug. Eine Norvig der Unterricht war "der Prolog ist ähnlich zu Lisp auf die wichtigsten Punkte"; eine kleine Prolog-auf-Lisp, ist das nicht ein "Spielzeug", sondern eine andere Benutzeroberfläche für den compiler. Es wird nicht so viel Spaß in Java, aber ich glaube nicht, dass er dabei war, die viel mit Makros.
  • 1. Keine Bibliotheken. 2. Keine syntax. Während mit Lisp, können Sie die Wiederverwendung der Lisp-syntax und Lisp-Bibliotheken ("der Prolog ist ähnlich zu Lisp auf die wichtigsten Punkte"), das ist nicht so mit Java. Stattdessen, Sie würde am Ende mit zu auch der Umsetzung der parser und die Bibliotheken. Darüber hinaus auch mit der Lisp-Implementierung, die fehlende Benutzung von Prolog-syntax und Bibliotheken verhindert, dass Sie mit jedem extern verfügbar Prolog-Bibliotheken.
  • Sicher, man kann behaupten, dass man die Wiederverwendung der Java-syntax und Bibliotheken in ähnlicher Weise, wie würden Sie nutzen anonyme Objekte anstelle von Schließungen. Aber wie jeder, der mit funktionaler Programmierung-Erfahrung, der dies versucht hat, kennt die Komplexität und die Ausführlichkeit der syntax nur macht das meistens nur eine schmerzhafte übung.
  • Haben Sie versucht, Drools? Es ist ein full-production-system (rete) in Java und einfache Bereitstellung. jboss.org/drools

InformationsquelleAutor Sami | 2009-11-29
Schreibe einen Kommentar