Si l'on regarde les manuels (peut-être plus anciens) de Drools ou d'autres moteurs de règles, l'une des illustrations de leur valeur ajoutée est de résoudre des énigmes telles que le casse-tête de Miss Manners (manuel de Drools). Maintenant, de tels puzzles sont naturellement formulés et résolus à l'aide de Prolog ou des langages de programmation par contraintes les plus récents, et on se demande pourquoi quelqu'un utiliserait Drools à cette fin. La valeur ajoutée que Prolog et CPL apportent dans ce cas est leur capacité à formuler naturellement le puzzle comme un ensemble de prédicats logiques et à rechercher automatiquement l'espace des solutions (CPL étant plus efficace à cet égard). Mais quelle est la valeur ajoutée d'un produit tel que Drools (je veux dire en plus des cloches et des sifflets de prendre, par exemple, un fichier Excel et de le traduire en un ensemble de règles)?
Plus précisément, Prolog implémente la recherche de backtrack, CLP implémente la recherche de backtrack avec propagation de contraintes, et donc au lieu de rechercher, pour ainsi dire, l'ensemble du produit cartésien des espaces pour les variables individuelles, ils élaguent de grandes parties de cet espace de produit. C'est ce qui les rend efficaces et utiles. Prolog et CLP sont tous deux largement discutés dans la littérature.
D'un autre côté, bien qu'il soit clair que l'algorithme Rete met en cache l'ensemble de règles sous la forme d'une ou plusieurs structures de données, ce qui (à ma connaissance) le rend plus efficace pour évaluer la sortie si certaines des entrées ont changé, et donnant des moyens de mettre à jour efficacement cette structure de données pour des changements incrémentiels, il est difficile (pour moi) de comprendre l'idée de base, et plus encore, son efficacité (par rapport à quoi? à Prolog? à CLP)? Malheureusement, il est difficile de trouver de bonnes références qui voient l'algorithme Rete dans ce contexte plus large.
La documentation de Drools n'est malheureusement pas très informative à cet égard. Le plus que j'ai pu trouver était "L'algorithme Rete, l'algorithme Leaps et ses descendants tels que Reteoo (et Leaps) de Drools, fournissent des moyens très efficaces de faire correspondre les modèles de règles à vos données d'objet de domaine. Ceux-ci sont particulièrement efficaces lorsque vous avez des ensembles de données qui ne changent pas complètement (car le moteur de règles peut se souvenir des matchs passés). Ces algorithmes ont fait leurs preuves ". Très efficace - par rapport à quoi? Éprouvé au combat - pourrait-on pointer vers des applications réelles?
J'apprécierais que l'on puisse éclairer davantage ce sujet ou donner une référence valable.