Ich arbeite an einer Anwendung in Java, die einige komplexe logische Regelabzüge als Teil ihrer Funktionalität tun muss. Ich möchte meine Logikableitungen in Prolog oder einer anderen Logik-/Constraint-Programmiersprache anstelle von Java codieren, da ich glaube, dass der resultierende Code wesentlich einfacher und wartungsfreundlicher sein wird.Embedded Prolog Interpreter/Compiler für Java
Ich googelte für eingebettete Java-Implementierungen auf Prolog und fand eine Anzahl von ihnen, jede mit sehr wenig Dokumentation. Meine (bescheiden) Auswahlkriterien sind:
- in Java embeddable sein sollte (zB mit meinem Java-Paket werden kann, anstatt dass irgendwelche nativen Installationen auf externe Programme gebündelt)
- einfache Schnittstelle von Java verwenden (für Initiieren Abzüge, die Kontrolle Ergebnisse und das Hinzufügen von Regeln)
- kommen mit mindestens einige Beispiele, wie man es verwenden
- nicht unbedingt Prolog sein müssen, aber auch andere Logik/Einschränkungs Programmiersprachen mit den oben genannten Kriterien passen würde meine Bedürfnisse auch.
Welche Möglichkeiten habe ich und welche Vor- und Nachteile haben sie?
Ich habe noch nie einen Prolog-in-Java verwendet, aber eine andere Möglichkeit ist, Ihre eigenen zu schreiben. Ich kenne mindestens 2 Lisp-Bücher, die das auf nicht zu vielen Seiten machen (On Lisp und PAIP), also kann es auch in Java nicht so hart sein. – Ken
Sicher, Sie können eine Spielzeug Logik Programmiersprache in ein paar Seiten Code, aber ich bin auf der Suche nach etwas robuster. Jetzt können Sie ein Spielzeug lispeln in ein paar Seiten Code auch, so denke ich, ich brauche nur vier Seiten und ich werde gut gehen :-) – Sami
Das sind einige geladene Worte, die Sie herumwerfen! Ich bin mir nicht sicher, was eine kleine Prolog-Implementierung zu einem "Spielzeug" macht oder auf welche Weise sie nicht "robust" genug ist. Eine von Norvigs Lektionen war "Prolog ist Lisp in den Hauptpunkten ähnlich"; Ein kleines Prolog-on-Lisp ist also kein "Spielzeug", sondern eine andere Benutzeroberfläche für Ihren Compiler. In Java wird es nicht so viel Spaß machen, aber ich glaube nicht, dass er das mit Makros gemacht hat. – Ken