Domanda

Come molti programmatori ho studiato Prolog in università, ma solo molto poco. Capisco che Prolog e Datalog sono strettamente correlati, ma Datalog è più semplice? Inoltre, credo che ho letto che Datalog non dipende ordinamento delle clausole di logica, ma non sono sicuro perché questo è vantaggi. CLIP è presumibilmente del tutto diverso, ma è troppo sottile per me capire. Qualcuno può fornire un salienti generali dei linguaggi sopra le altre lingue?

È stato utile?

Soluzione

Datalog è un sottoinsieme di Prolog. il sottoinsieme che Datalog porta ha due cose in mente:

  1. adottare un'API che consentirà di sostenere le regole e le query
  2. Assicurarsi che tutte le query terminano

prologo è Turing completo. Datalog non è.

Come Datalog fuori strada, vediamo come prologo confronta con i clip.

L'esperienza di Prolog è "problem solving", mentre clip è un "sistema esperto". Se ho capito bene, "problem solving" coinvolge competenze utilizzando codice e dati. "Sistemi esperti" per lo più utilizzano strutture dati per esprimere competenza. vedi http://en.wikipedia.org/wiki/Expert_system#Comparison_to_problem-solving_systems

Un altro modo di vedere le cose è:

sistemi esperti operano sul presupposto che la maggior parte (se non tutti) i risultati sono noti. tutti questi risultati sono compilati in dati e quindi viene alimentato in un sistema esperto. dare al sistema esperto uno scenario, il sistema esperto calcola il risultato dei dati raccolti, alias base di conoscenze. è sempre un "un numero pari più un numero pari è sempre anche" tipo di pensiero.

sistemi di problem solving hanno una visione incompleta del problema. così uno inizia con modellazione dati e comportamenti, che comprendono la base di conoscenza (questo dà giustizia al termine "caso angolo") e finisce con "se si aggiungono due a sei, si finisce con otto. è otto divisibile per due? allora è anche "

Altri suggerimenti

La differenza tra clip e Prolog / Datalog è che i clip è un "sistema di regole di produzione" che opera da avanti concatenazione : dato un insieme di fatti e regole, si cercherà di fare ogni possibile derivazione di nuovi fatti e conservare quelli in memoria. Una query viene poi risposto verificando se corrisponde qualcosa nel negozio realtà. Così, nei clip, se si dispone di (pseudo-sintassi):

parent(X,Y) => child(Y,X)
parent(john,mary)

lo farà immediatamente derive child(mary,john) e ricordare questo fatto. Questo può essere molto veloce, ma mette restrizioni alla possibile set di regole e prende la memoria.

Prolog e Datalog operano concatenamento all'indietro , il che significa che una query (chiamata predicato) viene risposto tentando di dimostrare l'interrogazione, ossia l'esecuzione del programma Prolog / Datalog. Prolog è un linguaggio di programmazione Turing completa, in modo che qualsiasi algoritmo può essere implementato in esso.

Datalog è un sottoinsieme non Turing completa di Prolog che non consente, ad esempio, negazione. Il suo principale vantaggio è che ogni Datalog termina di programma (nessun loop infinito). Questo lo rende utile per i cosiddetti "database deduttivi," vale a dire database con le regole in aggiunta ai fatti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top