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程序
x1dog(wang). dog(wuwu).
2cat(miumiu). cat(miao).
3animal(X):-dog(X).
4
5?- animal(wang).
6true.
7
8?- animal(X).
9X = wang ;
10X = wuwu.
纯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车周五限行
模拟有限状态机对正则语言进行解析
解决经典数学难题: 汉诺塔问题。
81?- answer(3).
2Move top disk from left to right
3Move top disk from left to center
4Move top disk from right to center
5Move top disk from left to right
6Move top disk from center to left
7Move top disk from center to right
8Move top disk from left to right