WIKI使用導(dǎo)航
站長(zhǎng)百科導(dǎo)航
站長(zhǎng)專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營銷
- 虛擬主機(jī)管理系統(tǒng)
- 開放平臺(tái)
- WIKI程序與應(yīng)用
- 美國十大主機(jī)
Prolog
Prolog(Programming in Logic的縮寫)是一種邏輯編程語言。它建立在邏輯學(xué)的理論基礎(chǔ)之上, 最初被運(yùn)用于自然語言等研究領(lǐng)域。現(xiàn)在它已廣泛的應(yīng)用在人工智能的研究中,它可以用來建造專家系統(tǒng)、自然語言理解、智能知識(shí)庫等。同時(shí)它對(duì)一些通常的應(yīng)用程序的編寫也很有幫助。使用它能夠比其他的語言更快速地開發(fā)程序,因?yàn)樗木幊谭椒ǜ笫鞘褂眠壿嫷恼Z言來描述程序。
歷史[ ]
Prolog語言最早由Aix-Marseille大學(xué)的Alain Colmerauer與Phillipe Roussel等人于60年代末研究開發(fā)。1972年被公認(rèn)為是Prolog語言正式誕生的年份,自1972年以后,分支出多種Prolog的方言。最主要的兩種方言為Edinburgh和Aix-Marseille。最早的Prolog解釋器由Roussel建造,而第一個(gè)Prolog編譯器則是 David Warren編寫的。
Prolog一直在北美和歐洲被廣泛使用。日本政府曾經(jīng)為了建造智能計(jì)算機(jī)而用Prolog來開發(fā)ICOT第五代計(jì)算機(jī)系統(tǒng)。在早期的機(jī)器智能研究領(lǐng)域,Prolog曾經(jīng)是主要的開發(fā)工具。
80年代Borland開發(fā)的Turbo Prolog,進(jìn)一步普及了Prolog的使用。1995年確定了ISO Prolog標(biāo)準(zhǔn)。
目前比較流行的實(shí)現(xiàn)工具包括 SWI-Prolog, Yap 等
特點(diǎn)[ ]
1. prolog程序沒有特定的運(yùn)行順序,其運(yùn)行順序是由電腦決定的,而不是編程序的人。
從這個(gè)意義上來說,prolog程序不是真正意義上的程序。所謂程序就是按照一定的步驟運(yùn)行的計(jì)算機(jī)指令,而prolog程序的運(yùn)行步驟不由人來決定。它更像一種描述型的語言,用特定的方法描述一個(gè)問題,然后由電腦自動(dòng)找到這個(gè)問題的答案。舉個(gè)極端的例子,你只需要把某個(gè)數(shù)學(xué)題目告訴它,它就會(huì)自動(dòng)的找到答案,而不像使用其他的語言一樣,必須人工的編制出某種算法。
2. prolog程序中沒有if、when、case、for這樣的控制流程語句
前面已經(jīng)說了,程序的運(yùn)行方式有電腦自己決定,當(dāng)然就用不到這些控制流程的語句了。通常情況下,程序員不需要了解程序的運(yùn)行過程,只需要注重程序的描述是否全面,不過prolog也提供了一些控制流程的方法,這些方法和其他語言中的方法有很大的區(qū)別,希望你在以后的學(xué)習(xí)當(dāng)中能夠融會(huì)貫通。
3. prolog程序和數(shù)據(jù)高度統(tǒng)一
在prolog程序中,是很難分清楚哪些是程序,哪些是數(shù)據(jù)的。事實(shí)上,prolog中的所有東西都有相同的形式,也就是說數(shù)據(jù)就是程序,程序就是數(shù)據(jù)。舉一個(gè)其他語言的例子:如果想用c語言編寫一個(gè)計(jì)算某個(gè)數(shù)學(xué)表達(dá)式的程序很簡(jiǎn)單(比如:a=2+5*4),因?yàn)檫@是一段程序。但是如果想編寫一個(gè)計(jì)算用戶輸入的表達(dá)式的值的程序就很困難了。因?yàn)橛脩糨斎氲氖且欢螖?shù)據(jù)(字符串),如果想讓c語言處理這個(gè)字符串,就需要很多方面的技術(shù)。則正是因?yàn)樵?a href="/wiki/C" title="C">c語言中,程序和數(shù)據(jù)是分開的。而在prolog就不存在這個(gè)問題,你甚至可以很輕松的編寫處理其它prolog程序的程序。
4. prolog程序?qū)嶋H上是一個(gè)智能數(shù)據(jù)庫
prolog的原理就是關(guān)系數(shù)據(jù)庫,它是建立在關(guān)系數(shù)據(jù)庫的基礎(chǔ)上的。在以后的學(xué)習(xí)中你會(huì)發(fā)現(xiàn)它和SQL數(shù)據(jù)庫查詢語言有很多相似之處。使用prolog可以很方便的處理數(shù)據(jù)。
5. 強(qiáng)大的遞歸功能
在其它的語言中,你也許已經(jīng)接觸過遞歸程序了。遞歸是一種非常簡(jiǎn)潔的方式,它能夠有效的解決許多難題。而在prolog中,遞歸的功能得到了充分的體現(xiàn),你甚至都會(huì)感到驚奇,遞歸居然有如此巨大的能力。