¿Por qué los motores de reglas no están escritos en Prolog? [cerrado]

16

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?

Onorio Catenacci
fuente
77
La escalera. (casi) nadie conoce el prólogo, e incluso más desarrolladores no quieren saber nada que no haga su trabajo diario para poder irse a casa. Desafortunadamente, Prolog es genial.
Jimmy Hoffa
3
Sin embargo, Prolog hace un gran edsl. Incrustar el prólogo en un idioma como Haskell o Scheme es el enfoque que suelo adoptar
Daniel Gratzer,
3
@JimmyHoffa Eso está disminuyendo. Algunas personas aprenden el prólogo y luego intentan olvidarlo proactivamente por el resto de su vida laboral.
ZJR
55
Veo 3 votos cerrados: ¿a alguien le importa decirme qué hay de malo en la pregunta para que pueda solucionarla o retirarla?
Onorio Catenacci
2
He votado para cerrar como "principalmente basado en la opinión". Si puede convencerme de lo contrario, retiraré mi voto cercano. Personalmente encontré que Prolog era opaco; Esperaría que un motor de reglas tenga una sintaxis más intuitiva para definir reglas. Y es un lenguaje de programación, no un prototipo de sintaxis para un motor de reglas per se.
Robert Harvey

Respuestas:

14

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.

Matthew Flynn
fuente
Ver también: stackoverflow.com/questions/3364191/…
Matthew Flynn
1
Otro artículo que trata sobre esto: haleyai.com/wordpress/2013/06/22/…
Matthew Flynn
Pregunta loca ¿La gente no implementó RETE en prolog, obteniendo así lo mejor de ambas palabras? (hay muchas cosas que RETE no hace que el prólogo hace).
user48956
14

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.

Jörg W Mittag
fuente
5

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.

Tangurena
fuente
no del todo cierto, hay algunas interfaces de programas externos para el código Prolog. SWI-Prolog tiene una interfaz C ++ y una forma de conectarse a R.
Rudolf Olah
3
En realidad, todos los motores de prolog que he visto funcionan con C o C ++ ya que "nadie" usa Proolog para aplicaciones completas, pero "todos" tienen formas de llamar a las funciones de C para llamar a bibliotecas especializadas. es decir, GNU Prolog gprolog.univ-paris1.fr/manual/html_node/gprolog065.html
johannes
Gracias por ese puntero @johannes. No tenía conocimiento de GNU Prolog en absoluto; mucho menos el hecho de que se puede llamar desde C.
Onorio Catenacci
Ver también: swi-prolog.org
user48956