Por lo que he visto de Prolog, parece que sería ideal para crear un motor de reglas para una aplicación. Sin embargo, no creo haber visto nunca un motor de reglas escrito en Prolog. ¿Existe alguna limitación inherente en Prolog (por ejemplo, un algoritmo de recolección de basura deficiente) que impida que se use para construir un motor de reglas?
prolog
rules-engine
Onorio Catenacci
fuente
fuente
Respuestas:
Los motores de reglas en su infancia se escribieron casi exclusivamente en Prolog: era el lenguaje lógico. Para un pequeño conjunto de reglas, funcionaron muy bien. Sin embargo, resultó que no escalaban muy bien. No tengo una referencia definitiva, pero entiendo que la forma en que Prolog maneja el encadenamiento de reglas es ineficiente: el modelo recursivo creado para crear pilas muy grandes que lo llevaron a un rastreo.
El desarrollo del algoritmo RETE y sus sucesores permitió una forma más eficiente de procesar grandes cantidades de reglas, y así se hizo cargo.
Quizás el prólogo moderno sería más eficiente que en los años 80, cuando se realizó la mayor parte del trabajo inicial.
fuente
Respuesta con la lengua en la mejilla: porque si los creadores de Rules Engines supieran de Prolog (o Mercury o PLANNER o ...) no estarían escribiendo Rules Engines, estarían usando Prolog.
fuente
En general, el objetivo de un motor de reglas es que forma parte de otra aplicación. Es bastante raro ver aplicaciones escritas en Prolog, y no hay una interfaz comúnmente disponible para conectar Prolog a aplicaciones escritas en otros idiomas.
Una herramienta basada en reglas para motores de reglas, que está escrita para agregarse a otras aplicaciones, es CLIPS . CLIPS se basó en OPS5 y utiliza el algoritmo Rete para las reglas de poda.
fuente