Prolog语言

Prolog(Pro-gramming in Log-ic)是主流逻辑编程语言之一。

在20世纪70年代初, Alain Colmerauer和 Philippe Roussel基于Horn语句, 开展一门新编程语言的初创工作。

最终在1972年, 正式宣布创立Prolog编程语言。

当时的欧洲, Prolog是最流行的语言。

而在北美大陆, 则有另一种函数式语言几乎垄断了整个人工智能领域的编程Lisp, 创立人是约翰·麦卡锡。

自1972年Prolog发布以后, 分支出多种Prolog的方言。 最主要的两种方言是Edinburgh和Aix-Marseille两种版本。

最早的Prolog解释器由Roussel建造, 而第一个Prolog编译器则是由David Warren编写的。

80年代Borland开发的Turbo Prolog, 进一步促进了Prolog的推广。

1995年确定了ISO Prolog标准。 该标准的诞生对其它语言也有显著的影响, 如Erlang语言。

Prolog是一种结合人工智能和计算语言学(Computational Linguistics)的通用逻辑编程语言, 广泛应用于定理证明,专家系统和自然语言理解等领域。

Prolog是一种声明式(Declarative)编程语言。

在Prolog中主要术语是关系(Relation),事实(Facts),规则(Rules)等, 程序的运行则由一个询问(Query)发起。

一个简单的Prolog程序

纯Prolog在计算机编程方面也有不少局限性。

例如: Prolog要求变量必须是首字母大写。

Prolog支持数的类型也比较少, 仅支持floats和 integers两类。因此, Prolog语言并不适合复杂的科学计算。

Prolog不擅长开发程序界面。

不过, 很多扩展版的Prolog也实现了很多类似于其它编程语言的功能, 如打印。

Prolog也可以与其它语言(如C++)结合实现友好的用户界面。

尽管Prolog有一些不足, 但这并不影响Prolog是专注逻辑编程最优秀的语言之一。

Prolog可以从逻辑编程的角度解决很多实际问题,下面举几个例子。

涂色问题

逻辑题 (GK.2011.116)

北京市为了缓解交通压力实行机动车辆限行政策, 每辆机动车周一到周五都要限行一天, 周末不限行。某公司有A、B、C、D、E五辆车, 保证每天至少有四辆车可以上路行驶。

已知: E车周四限行, B车昨天限行, 从今天算起, A、C两车连续四天都能上路行驶, E车明天可以上路。由此可知, 下列推测一定正确的是:

A. 今天是周六 B. 今天是周四 C. A车周三限行 D. C车周五限行

模拟有限状态机对正则语言进行解析

这个有限状态机可以接受哪些字符串?aaaaaac, abac, aaaacd, abacdaac.

解决经典数学难题: 汉诺塔问题。

汉诺塔问题