對Prolog的感想和我寫的一些教程

我第一次見到Prolog這門獨特的編程語言是在《七週七語言(Seven Languages in Seven Weeks)》中看到的。《七週七語言》名字看起來與市面上什麼《三十天……從入門到精通》之類的垃圾書相似,但徹底不是那回事。《七週七語言》的目標在於讓讀者瞭解到這些語言獨有的編程思想和設計模式。並且它也不是什麼入門書。Prolog是門聲明式編程語言,它與咱們平時最常遇到的命令式編程語言有很大的不一樣。命令式語言須要你精確地告訴計算機如何完成一項工做,而聲明式語言則是須要你提供信息和推論而無需知道如何作。html

Prolog程序沒有特定的運行順序,其運行順序是由電腦決定的,而不是編程序的人。並且它的程序和數據高度統一。好比通常的編程語言,提示你輸入的內容是做爲字符串或是爲相應的變量賦值,而它是能夠直接參與到程序中。若是說彙編語言和C語言是最接近硬件底層,最能反映計算機工做原理的;那麼Lisp和Prolog則是最能反映計算和邏輯自己的,高度抽象。git

《七週七語言》中,將它比喻爲「雨人」。Prolog這門語言有時特別聰明,有時又特別使人失望。只有當你知道如何提問時,你纔會獲得使人驚奇的答案。它的編程的時的思考模式的確使人吃驚。Prolog的窮舉特性不由讓人想起螞蟻尋找最短路線的過程。好比蟻巢派出許多螞蟻,去尋找到食物之間的最短路線。選擇機制很簡單:在探路的螞蟻中,走最短路線的螞蟻確定比其餘同伴能更快地回到蟻巢。並且,最短路線比其餘路線的氣味更大,後來的螞蟻會沿着氣味最大的路線走,於是又增強了這條路上的氣味。也許可能將來Prolog的設計趨勢可能會加入更高層次的分佈式處理吧。程序員

Prolog確實不是通用的編程語言,但它這種聲明邏輯式編程語言在計算機科學中的地位是很高的,就比如中文系教授不可能上電視當名嘴同樣。上個世紀80年代,在全球頒發了無數個邏輯程序設計領域的計算機科學博士。咱們的宿敵日本還投入了數以億計的研發資金,計劃製造第五代計算機,雖然整體而言,小日本的野心失敗了(野心勃勃的日本第五代計算機,如何一步步走向失敗)。至少Prolog在功能上是完備的。SWI-Prolog內部有調用C語言、Java等編程語言的庫(這段程序徹底不須要什麼中間語言,就自動生成R語言的函數,連R語言的語法都被嵌套了進去:r_demo.pl)。Prolog在天然語言處理、自動調整系統、專家系統中發揮着重大做用。github

這裏面有一篇趣文是關於Prolog的:程序員的語言「豔遇史」(三)——法國外教prolog編程

我在百度經驗上寫過一系列很是基礎的Prolog教程,但願可以幫到你。爲了寫這些教程,除了參考了網絡資料,還參考了《用Prolog和Turbo Prolog語言開發專家系統》(不過個人教程裏用的是SWI-Prolog)、《七週七語言》等書籍。關於Prolog的現存書籍真的太少了,網絡資料也不多。去年在學校的圖書館搜索引擎中找到了,但第一次去時發現它已被移庫了,可能書太老了。後來又找了一次才找到。惋惜百度經驗將雜誌功能取消了,不得不將連接分別發出來。建議按順序閱讀:
配置SWI-Prolog編程環境
Prolog的基本概念和語法規則
Prolog規則結構與實例
SWI-Prolog的調試
SWI-Prolog的算術運算
SWI-Prolog的遞歸
SWI-Prolog的截斷機制
用Prolog實現過程
Prolog的數據結構
Prolog的輸入和輸出和文件操做
之後會在博客上寫一些關於Prolog更爲複雜的內容(也許)。 設計模式

相關文章
相關標籤/搜索