## 為什么要學習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進行修改。