Perché i motori di regole non sono scritti in Prolog? [chiuso]

15

Da quello che ho visto di Prolog, sembra che sarebbe l'ideale per creare un motore di regole per un'app. Eppure, non credo di aver mai visto un motore di regole scritto in Prolog. Esiste qualche limitazione intrinseca in Prolog (ad esempio un algoritmo di garbage collection scadente) che impedirebbe che venga utilizzato per creare un motore di regole?

    
posta Onorio Catenacci 16.07.2013 - 19:36
fonte

3 risposte

13

I motori di regole nella loro infanzia erano scritti quasi esclusivamente in Prolog - era la lingua logica. Per un piccolo insieme di regole hanno funzionato alla grande. Tuttavia, si è scoperto che non erano in scala molto bene. Non ho un riferimento definitivo, ma la mia comprensione è che il modo in cui Prolog gestisce il concatenamento delle regole è inefficiente - il modello ricorsivo creato per creare stack molto grandi che lo hanno portato a una scansione.

Lo sviluppo dell'algoritmo RETE e dei suoi successori consentiva un modo più efficiente di elaborare grandi quantità di regole, e così subentrò.

Forse il prologo moderno sarebbe più efficiente rispetto agli anni '80, quando la maggior parte dei primi lavori è stata fatta.

    
risposta data 17.07.2013 - 17:50
fonte
13

Risposta ironica: perché se i creatori di Rules Engine fossero a conoscenza di Prolog (o Mercury o PLANNER o ...) non avrebbero scritto Rules Engine, avrebbero usato Prolog.

    
risposta data 17.07.2013 - 00:17
fonte
5

Generalmente, il punto di un motore di regole è che fa parte di un'altra applicazione. È piuttosto raro vedere le applicazioni scritte in Prolog e non esiste un'interfaccia comunemente disponibile per connettere Prolog alle applicazioni scritte in altre lingue.

Uno strumento basato su regole per i motori di regole, che viene scritto per essere aggiunto ad altre applicazioni, è CLIPS . CLIPS era basato su OPS5 e utilizza Algoritmo di rete per le regole di eliminazione.

    
risposta data 17.07.2013 - 00:10
fonte

Leggi altre domande sui tag