Question

Comme beaucoup de programmeurs j'ai étudié Prolog à l'université, mais seulement très peu. Je comprends que Prolog et Datalog sont étroitement liés, mais Datalog est plus simple? De plus, je crois que je lis que Datalog ne dépend pas de la commande des clauses logiques, mais je ne sais pas pourquoi cela est des avantages. CLIPS est censé être tout à fait différent, mais il est trop subtile pour moi de comprendre. Quelqu'un peut-il fournir un temps forts généraux des langues sur les autres langues?

Était-ce utile?

La solution

datalog est un sous-ensemble de prolog. le sous-ensemble qui datalog porte a deux choses à l'esprit:

  1. adopter une API qui soutiendrait des règles et des requêtes
  2. Assurez-vous que toutes les requêtes prennent fin

Prolog est complète Turing. datalog n'est pas.

se datalog de la route, nous allons voir comment Prolog compare avec des clips.

L'expertise de Prolog est « résolution de problèmes », tandis que des clips est un « système expert ». si je comprends bien, « la résolution de problèmes » implique une expertise en utilisant le code et les données. « Systèmes experts » utilisent principalement des structures de données pour exprimer l'expertise. voir http://en.wikipedia.org/wiki/Expert_system#Comparison_to_problem-solving_systems

une autre façon de regarder est:

systèmes experts fonctionnent sur la prémisse que sont connus les résultats la plupart (sinon tous). tous ces résultats sont compilés en données, puis est introduit dans un système expert. donner le système expert d'un scénario, le système expert calcule les résultats à partir des données compilées, alias base de connaissances. il est toujours un « un nombre pair plus un nombre pair est toujours même » genre de pensée.

systèmes de résolution de problèmes ont une vision incomplète du problème. si on commence avec des données de modélisation et de comportement, qui comprendrait la base de connaissances (ce qui donne la justice à l'expression « cas d'angle ») et se termine par « si l'on ajoute deux à six nous nous retrouvons avec huit. est huit divisible par deux? il est même "

Autres conseils

La différence entre CLIPS et Prolog / Datalog est que CLIPS est un « système de règles de production » qui fonctionne par avant Enchaînement : étant donné un ensemble de faits et de règles, il va essayer de faire toute dérivation possible de faits nouveaux et stocker ces données dans la mémoire. Une requête répond ensuite en vérifiant si elle correspond à quelque chose dans le magasin de fait. Ainsi, CLIPS, si vous avez (pseudo-syntaxe):

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

il child(mary,john) dérivera immédiatement et ne pas oublier ce fait. Cela peut être très rapide, mais impose des restrictions sur la base de règles possible et prend de la mémoire.

Prolog et Datalog fonctionnent par chaînage arrière , ce qui signifie qu'une requête (appel prédicat) est répondu en essayant de prouver la requête, à savoir l'exécution du programme Prolog / Datalog. Prolog est un langage de programmation complet Turing, de sorte que tout algorithme peut être mis en œuvre en elle.

Datalog est un sous-ensemble complet non-Turing de Prolog qui ne permet pas, par exemple, la négation. Son principal avantage est que chaque programme se termine Datalog (pas de boucles infinies). Ceci le rend utile pour soi-disant « BDD » à savoir les bases de données avec des règles, en plus des faits.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top