Nach dem, was ich von Prolog gesehen habe, scheint es ideal zu sein, um eine Regel-Engine für eine App zu erstellen. Ich glaube jedoch nicht, dass ich jemals eine in Prolog geschriebene Regelengine gesehen habe. Gibt es eine inhärente Einschränkung in Prolog (z. B. ein schlechter Garbage Collection-Algorithmus), die verhindern würde, dass er zum Erstellen einer Regel-Engine verwendet wird?
prolog
rules-engine
Onorio Catenacci
quelle
quelle
Antworten:
Regel-Engines in den Kinderschuhen wurden fast ausschließlich in Prolog geschrieben - es war die logische Sprache. Für ein kleines Regelwerk haben sie großartig funktioniert. Es stellte sich jedoch heraus, dass sie nicht sehr gut skalierten. Ich habe keine definitive Referenz, aber ich verstehe, dass die Art und Weise, wie Prolog die Verkettung von Regeln handhabt, ineffizient ist - das rekursive Modell, das zum Erstellen sehr großer Stapel erstellt wurde, die es zum Crawlen brachten.
Die Entwicklung des RETE-Algorithmus und seiner Nachfolger ermöglichte eine effizientere Verarbeitung großer Mengen von Regeln und übernahm somit.
Vielleicht wäre ein moderner Prolog effizienter als in den 80er Jahren, als der Großteil der frühen Arbeiten erledigt war.
quelle
Zungenbrecherische Antwort: Wenn die Entwickler von Rules Engines von Prolog (oder Mercury oder PLANNER oder ...) wüssten, würden sie keine Rules Engines schreiben, würden sie Prolog verwenden.
quelle
Im Allgemeinen besteht der Sinn einer Regelengine darin, dass sie Teil einer anderen Anwendung ist. In Prolog geschriebene Anwendungen sind eher selten zu sehen, und es gibt keine allgemein verfügbare Schnittstelle, um Prolog mit in anderen Sprachen geschriebenen Anwendungen zu verbinden.
Ein regelbasiertes Tool für Regel-Engines, das geschrieben wurde, um anderen Anwendungen hinzugefügt zu werden, ist CLIPS . CLIPS basierte auf OPS5 und verwendet den Rete-Algorithmus zum Bereinigen von Regeln.
quelle