Learn Prolog The Hard Way

笨办法学Prolog

第0章:为什么要学习Prolog

为什么要学习Prolog

当我在大学的课程表里面发现Prolog这门课的时候,我十分惊讶,我在想:为什么我要学习Prolog呢?我会使用Java, C++和php编程,这些语言已经强大到几乎可以实现任何功能,而且有很多很多写好的函数库来供你使用,为什么我还要学习什么Prolog?

当我开始学Prolog的时候,我发现这个语言的语法真是太奇怪了,有别于一般的编程语言,Prolog的程式是基于谓词逻辑的理论。最基本的写法是定立物件与物件之间的关系,之后可以用询问目标的方式来查询各种物件之间的关系。系统会自动进行匹配及回溯,找出所询问的答案。但是当我真正了解Prolog的时候,才发现,正因为Prolog的这种特性才让他异常的强大,简单的说,它是一个会自己思考的语言,它可以通过搜索自己的知识库来找到问题的答案,这是其他的程序语言所做不到的。在这里,我无法过多的解释Prolog的强大之处,我相信通过一段时间的学习,你可以逐渐发现Prolog是一门值得学习的语言。你可能在将来的软件开发事业中使用不到Prolog,但是你有关Prolog的知识能够帮助你更好的使用其他的语言。

Prolog的用途

目前来说,Prolog主要用在人工智能和计算机语言的研究领域。Prolog和LISP是两个主要的研究人工智能算法的工具,一个有趣的现象是:在美国,研究者们喜欢用LISP,在欧洲,研究者们更倾向与使用Prolog进行开发。这两门语言没有谁好谁坏之分,个人喜好罢了,事实上,在Prolog下面可以非常简单地实现一个LISP解析器,同样的,在LISP下也可以轻易的实现一个Prolog解析器。在后面的章节里面,我和台北小码农会教大家怎么做。

其次,得益于Prolog的模式匹配功能,Prolog非常适合快速的开发一个语言的解析器,这使得很多计算机科学家在开发新的程序语言时,喜欢用Prolog先写一个实现,然后观察大众的反应,如何大众认为这个语言很好,就用更快的语言如C++来重新写解释器,如果大众的反应不好,就再用Prolog进行修改。