Answers:
在学术界之外……我听说它在AI中使用得更多,有时在游戏中使用(我听说它在黑白系列中推动了AI的发展)。我也听说过用于某些业务和经济模拟的规则引擎运行的变体。
我对缺乏广泛采用的猜测是:
我们用它来构建解析器。它比lex / yacc更容易使用。
为什么没有得到可检测的行业使用率?
这是无法回答的。“可检测”是什么意思?谁需要获取检测备忘录?
http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp
如果需要事实,请向Meridian Software询问有关其序言产品的信息。
但是,我遇到了一些进入障碍。
首先,序言可能很慢。当有很多候选规则并且没有简单的剪切操作来限制搜索空间时,可能需要一段时间才能完成工作。
其次,序言既不是过程性的也不是功能性的,因此许多程序员都不愿使用它。(有趣的是,一些程序员也讨厌使用SQL。为此,一些程序员会不情愿地使用SQL并做一些奇怪的事情,例如避免联接操作,或者声称这COUNT(*)
在魔术上效率低下。)
第三,序言要求对各种情况进行一些非常清晰的思考。程序编程可能比较草率,并且仍然可以可靠地工作。不可执行的语句是可以接受的。
以下内容在大多数圈子中都是可以接受的。
b = a + 1
if a > b: # always False
这种模糊的思维使您陷入麻烦。
一个问题是,Prolog并不是真正用一阶谓词逻辑进行编程,这在计算上是棘手的(我不记得在多大程度上,但它不在NP中,并且如果在其上添加算术,则在形式上是不确定的)。因此,这是一个简化。
在逻辑上,一个命题可以被证明是正确的,被证明是错误的,或者不能被任一方法证明。Prolog仅经过验证且未经验证,“未经验证”通常表示错误。而且,Prolog子句的顺序会影响执行,而逻辑子句则不会。在使用它的过程中,我开始将Prolog视为一种模式匹配语言,而不是一种逻辑语言。
因此,Prolog编程不像Prolog语言本身那样很大程度上取决于逻辑正确性。在某些方面它是一种有用的语言,但它远未成为主流,它还没有像C ++这样的语言所具有的工具和社区优势。