分類
事實上,現在已經有多種對應於各種不同知識表示方式的人工智慧程式語言。按所對應的知識表示方式不同。大體上可以區分為以下幾類:
1.對應於產生式規則知識表示的語言。例如,由美國卡耐基·梅農大學的C·L·福基(C.L.Forgy)等人於1 977年開發的OPS(official production system),當時’就用它來為DEC公司開發了一個解決VAX計算機系統配置問題的專家系統X1/XCON。
2.對應於邏輯公式知識表示的語言。一種已廣為套用的邏輯語言就是PROLOG。它是1 970年由法國馬塞大學的 A.柯邁豪埃(Alain Colmerauer)所開發的。
3.對應於框架或語義網知識表示的語言。這是一類所謂“面向對象”的(object-oriented)語言。其中一個有代表性的語種就是Smalltalk。它是在1980年首創,後來發展了好幾個版本,通常以發布的年份來標記,例如,第1個版本叫Smalltalk-80等等。
4.對應於函式知識表示或函式式程式設計風格的語言。首先是由計算機科學家J.巴科斯(J. Backus)在1978年發表的一篇獲圖靈獎的著名論文中提出。這篇論文的題目就叫做:“程式設計能夠擺脫諾依曼風格嗎?程式的函式風格及其代數”。它提出的函式式程式語言,雖然在理論上很完美,而且建立在堅實的數學基礎之上,但是在常規計算機上很難實現。倒是早在20世紀50年代末、60年代初美國麻省理工學院的約翰·麥卡錫等人首先開發的列表處理語言LISP(LISt Processing)迄今仍然廣泛用於編寫人工智慧應用程式,特別是用於開發專家系統。函式語言在解釋執行機制上的特點是遞歸地由最內層向外層歸約(reduction),而每次歸約都是把一個函式“作用”,於它的變元而得出函式值的過程。所以又稱這類語言為“作用式”(applicative)語言。
特性
人工智慧程式語言有一個共同的特點,那就是這些語言都是面向所要解決的問題、結合知識表示、完全脫離當代計算機的諾依曼結構特性而獨立設計的;它們又處於比面向過程的高級程式語言更高的抽象層次。因此,用這些語言編寫的程式,在現代計算機環境中,無論是解釋或編譯執行,往往效率很低。尤其當程式規模很大、很複雜時,將浪費大量系統資源(主要指處理機占用時間和存儲空間占用量),使系統性能下降到難以容忍的地步。
類型
LISP語言
早在20世紀50年代後期,麻省理工學院的John McCarthy就開始了人工智慧的研究,他當時致力於設計一個用表處理的遞歸系統,並在20世紀60年代初研製出了LISP語言。LISP語言是一個用於處理符號表達式的、相當簡單的函式式程式設計語言,其以數學中的函式與函式作用的概念作為設計原理,它奠定了函式式語言的基礎。純LISP語言是完全非vonNeumann風格的,它沒有使用ALGOL60等語言中所採用的可修改變數、賦值語句、轉向語句等yon Neumann結構語言中的有關概念。LISP程式與其數據結構採用了完全相同的結構形式與處理方式。因此可以相當方便地用LISP來編寫它的解釋程式。LISP語言除了用s一表達式來統一處理數據與程式外,還引入了前綴運算符表示法、遞歸數據結構、遞歸控制結構以及新的條件表達式形式。
Prolog語言
Prolog(Programming in Logic)是一種邏輯程式語言。它建立在邏輯學的理論基礎之上,最初被運用於自然語言等研究領域。現已廣泛套用在人工智慧的研究中,可以用來建造專家系統、自然語言理解、智慧型知識庫等。同時,對一些通常的應用程式的編寫也很有幫助,能夠比其他的語言更快速地開發程式,因為Prolog的編程方法更像是使用邏輯的語言來描述程式。
Prolog程式具有鮮明的邏輯程式語言特色,包括:沒有特定的運行順序,其運行順序是由計算機決定的,而不是編程式的人;Prolog程式中沒有if、when、case、for這樣的控制流程語句;Prolog程式和數據高度統一,其程式實際上是一個智慧型資料庫;Prolog語言具有強大的遞歸功能。自1981年日本政府宣布第5代計算機系統(FGCS)項目以Prolog為基礎以來,Prolog已成為人工智慧研究領域的主導語言。
發展方向
一是研製與某種語言完全適應的所謂新一代計算機。例如LlSP機、數據流機、PROLOG機、面向對象的體系結構等等。但是實踐早已表明,此路前景渺茫。因為以諾依曼機為核心的現代通用計算機已經廣泛普及而且性能還在不斷提高,同時已經積累了巨大的軟體資源。任何與現代計算機不兼容的專用機,最多因能滿足個別特殊需求而在某些場合發揮作用,難以與現代通用計算機相抗衡。
第二條途徑是,把幾種不同風格的程式語言結合起來,發展複合語言或嵌入式語言,以便取長補短,使系統性能得以進一步提高。當前最為流行的是把面向對象語言的設計思路融匯到常用的面向過程的高級語言中。C++語言就是一個突出的例子。
第三條途徑是,充分利用面向問題的人工智慧程式語言的特點,先選擇某種語言編寫出一個簡潔明了而易於調試的程式原型。通過驗證、調試後,再仿照這個原型,改編為某種面向過程的高級語言程式,例如C或C++,甚至BASIC,以此來達到提高最終套用系統開發質量和執行效率的目的。用PROLOG、 LISP、OPS等來開發專家系統原型,已有不少先例。