Datalog vs CLIPS vs Prolog
comme beaucoup de programmeurs J'ai étudié Prolog à l'université, mais très peu. Je comprends que Prolog et Datalog sont étroitement liés, mais Datalog est plus simple? En outre, je crois que J'ai lu que Datalog ne dépend pas de l'ordre des clauses logiques, mais je ne suis pas sûr de savoir pourquoi il s'agit d'avantages. CLIPS est censé être tout à fait différent, mais il est trop subtil pour moi de comprendre. Quelqu'un peut s'il vous plaît fournir un général faits saillants des langues autres langues?
2 réponses
datalog est un sous-ensemble de prolog. le sous-ensemble que transporte datalog a deux choses en tête:
- adopter une API qui supporte les règles et les requêtes
- assurez-vous que toutes les requêtes de résilier
prologue de Turing. datalog ne l'est pas.
en écartant datalog, voyons comment prolog se compare avec les clips.
l'expertise de prolog est la" résolution de problèmes "tandis que clips est un"système expert". si je comprends bien, la" résolution de problèmes " fait appel à une expertise fondée sur le code et les données. les" 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 c'est:
les systèmes experts fonctionnent en partant du principe que la plupart (sinon la totalité) des résultats sont connus. tous ces résultats sont compilés dans les données, puis est introduit dans un système expert. donner au système expert un scénario, le expert system calcule le résultat à partir des données compilées, alias base de connaissances. c'est toujours le genre de réflexion "un nombre pair plus un nombre pair".
problème de résolution de systèmes ont une vision incomplète du problème. ainsi, on commence par modéliser les données et le comportement, ce qui constituerait la base de connaissances (ce qui rend justice au terme "corner case") et se termine par "si nous ajoutons deux à six, nous nous retrouvons avec huit. est de huit divisible par deux? ensuite, il est même"
parent(X,Y) => child(Y,X)
parent(john,mary)
il dérivera immédiatement child(mary,john)
et n'oubliez pas que fait. Cela peut être très rapide, mais impose des restrictions possibles sur la base de règles et prend de la mémoire.
Prolog et Datalog opèrent par chaînage arrière, ce qui signifie qu'on répond à une requête (appel prédicat) en essayant de prouver la requête, c.-à-d. en exécutant le programme Prolog/Datalog. Prolog est un langage de programmation complet, donc n'importe quel algorithme peut y être implémenté.
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 Datalog se termine (pas de boucles infinies). Cela le rend utile pour les bases de données dites "déductives", c'est-à-dire des bases de données avec des règles en plus des faits.