Wenn man sich (vielleicht ältere) Handbücher von Drools oder andere Regelmaschinen ansieht, ist eines der Beispiele für ihren Mehrwert das Lösen von Rätseln wie das Miss Manners-Puzzle (Handbuch von Drools). Jetzt werden solche Rätsel auf natürliche Weise mit Prolog oder den neueren Constraint-Programmiersprachen formuliert und gelöst, und man fragt sich, warum irgendjemand Drools für diesen Zweck verwenden würde. Der Mehrwert, den Prolog und CPL in diesem Fall bieten, ist ihre Fähigkeit, das Rätsel auf natürliche Weise als Satz logischer Prädikate zu formulieren und den Lösungsraum automatisch zu durchsuchen (wobei CPL in dieser Hinsicht effizienter ist). Aber was ist der Mehrwert von Produkten wie Drools (ich meine neben dem Schnickschnack, zum Beispiel eine Excel-Datei zu nehmen und sie in ein Regelwerk zu übersetzen)?
Insbesondere implementiert Prolog die Rückverfolgungssuche, CLP implementiert die Rückverfolgungssuche mit Einschränkungsausbreitung, und daher beschneiden sie, anstatt sozusagen das gesamte kartesische Produkt von Räumen nach einzelnen Variablen zu durchsuchen, große Teile dieses Produktraums. Das macht sie effektiv und nützlich. Sowohl Prolog als auch CLP werden in der Literatur ausführlich diskutiert.
Auf der anderen Seite ist zwar klar, dass der Rete-Algorithmus den Regelsatz in Form einiger Datenstrukturen zwischenspeichert, was es (meines Wissens nach) effektiver macht, die Ausgabe zu bewerten, wenn sich einige der Eingaben geändert haben. Wenn ich die Möglichkeit gebe, diese Datenstruktur für inkrementelle Änderungen effektiv zu aktualisieren, ist es (für mich) schwierig, die Grundidee und vor allem ihre Wirksamkeit zu verstehen (im Vergleich zu was? zu Prolog? zu CLP). Leider ist es schwierig, gute Referenzen zu finden, die den Rete-Algorithmus in diesem weiteren Kontext anzeigen.
Die Dokumentation von Drools ist in dieser Hinsicht leider nicht sehr aussagekräftig. Das meiste, was ich finden konnte, war "Der Rete-Algorithmus, der Leaps-Algorithmus und seine Nachkommen wie Drools 'Reteoo (und Leaps) bieten sehr effiziente Möglichkeiten zum Anpassen von Regelmustern an Ihre Domain-Objektdaten. Diese sind besonders effizient, wenn Sie über Datasets verfügen, die nicht vollständig ändern (da sich die Regelmaschine an vergangene Übereinstimmungen erinnern kann). Diese Algorithmen sind kampferprobt ". Sehr effizient - im Vergleich zu was? Kampferprobt - könnte man auf reale Anwendungen verweisen?
Ich würde mich freuen, wenn man mehr Licht auf dieses Thema werfen oder einen gültigen Verweis geben könnte.