想成為更好的程序員嗎?學習Prolog語言吧
在計算機教學的課程中,有個傳統的現象,是否學過某一兩種的課程能夠成為判斷一個人能否深入理解一些計算機科學概念的分水嶺。盡管每個人都似乎能夠使用像Java這樣的語言進行編程,但一些有趣的證據現象表明,計算機科學中最復雜的概念還是class,其中蘊含了很多真正的智慧,能對你在C或Lisp語言的使用中提供很有用處的幫助。
在我的母校,一門關于Prolog的課程成了區分那些似是而非的和真正的計算科學學生之間的分界線。原因就在于,如果你的大腦能理解一個用Prolog寫成的Prolog解釋器,那么,你差不多就掌握了任何的編程概念。
然而,如今,學校里更感興趣的是那些市場化的語言,諸如Java、Python。就好像是他們在追求以最快的速度教會人們如何編程(也許他們沒有意識到,但他們確實是在這樣做)。
關于Prolog的小事
Prolog如今不像以前那樣流行,想當年它曾經是Lisp語言的強有力競爭者(至少對于歐洲的研究人工智能的人是這樣的)。然而,人們通常會認為學習Lisp更具優勢,即使是從學習體驗上講。
可是我認為說Prolog也具有同樣的優勢也不為過,有一些理由能說明為什么Prolog對大多數程序員來說仍然有很大的去學習的價值。
Prolog是純函數式語言。事實上,它是如此純粹,連它唯一能返回的值僅是字面上的true或false。在Prolog里,任何操作都和參數的綁定有關,所以,沒有變量的修改更新——只有方法的調用。
這種語言提供了一種很簡單的訪問數據庫的機制。在Prolog里,數據庫被看作是一個可以根據某種規則來查看的信息的集合。通過這種方式,對外部數據的訪問只是被當做一種邏輯形式,不需要你做必須的操作來取回和讀數據。Prolog的這種模式減少了代碼和數據之間的阻抗,是一種很好的方式。
提供了一種簡單的方式來表達解釋性的程序。Prolog是一種基于規則匹配的語言,這種方式對于程序員是透明 的。它力圖通過其內部的規則匹配引擎來滿足各個布爾型函數的需求。你可以簡單的把它想象成一個不確定的狀態機,在你需要它的時候能做出正確的事情,不需要 編程活動的介入。當然,這種機制在沒有其它條件幫助的情況在并不能解決所有的問題,但它是很必要的,它能把開發人員從思考事情如何做成中解脫出來,轉而集 中關注有哪些已經被完成。
總之,我認為好的程序員應該積極去發現不同方式的開發軟件的途徑。用一種不同的思維模式學習編程語言,比如邏輯性編程,這將會是對于傳統的思維過程 是一種精彩的挑戰。通過學習Prolog里程序是如何實現的,你能獲得一種更好的解決現實問題的思路,即使你需要實現的軟件是用C寫成的。
學習資料
關于Prolog的文獻并沒有多少,但有一本經典的書叫做《The Craft of Prolog》。這本書放在那里我已經好幾年沒動過了,但我最初開始研究這種語言時,它給我帶來了很多的快樂。在你使用這種語言來工作時,這本書仍然會成為你最好的Prolog知識的源泉。
原文鏈接:http://www.oschina.net/news/17379/why-learning-prolog-can-make-you-a-better-programmer
【編輯推薦】