和很多程序员一样,我在大学里学过 Prolog,但只学了很少的部分。我理解Prolog和Datalog密切相关,但是Datalog更简单?另外,我相信我读到 Datalog 不依赖于逻辑子句的顺序,但我不确定为什么这是优点。 CLIPS 据说完全不同,但它对我来说太微妙了,无法理解。有人可以提供这些语言相对于其他语言的一般亮点吗?
CLIPS 和 Prolog/Datalog 之间的区别在于 CLIPS 是一个“生产规则系统”,通过以下方式运行前向链接:给定一组事实和规则,它将尝试尽一切可能推导出新事实并将其存储在内存中。然后通过检查查询是否与事实存储中的某些内容匹配来回答查询。因此,在 CLIPS 中,如果您有(伪语法):
parent(X,Y) => child(Y,X)
parent(john,mary)
它将立即导出child(mary,john)
并记住这个事实。这可能非常快,但会限制可能的规则集并占用内存。
Prolog 和 Datalog 的操作方式为向后链接,这意味着通过尝试证明查询来回答查询(谓词调用),即运行 Prolog/Datalog 程序。 Prolog是图灵完备的编程语言,因此任何算法都可以用它实现。
Datalog 是 Prolog 的非图灵完备子集,不允许否定等操作。它的主要优点是每个 Datalog 程序都会终止(没有无限循环)。这使得它对于所谓的“演绎数据库”非常有用,即除了事实之外还具有规则的数据库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)