2007年7月24日 星期二

Alisp 簡介

 
Alisp 簡介
ALISP與主流編程語言的比較
    LISP是 LISt Processing(表處理)的縮寫。LISP是最早和最重要的符號處理編程語言之一,它於1958年由美國的J. McCarthy提出,並於1960年發表了他的第一篇關於LISP的論文。之後,LISP很快受到人工智能工作者的歡迎,獲得廣泛應用,尤其是專家系統領域。
        20世紀80年代,LISP語言及其應用迅速發展,如今大約有十多種LISP語言。1984年,推出的Common LISP包括了各種重要的LISP語言的優點,具有豐富的功能,成為LISP語言的事實上的標準語言。在PC機上使用的GCLISP是Common LISP的子集;在PC機上使用的XLISP也是Common LISP的子集,並擴展了面向對象的成分。

        在AutoCAD 中的AutoLISP是Common LISP的一個子集。
Lisp語言具有以下幾個基本特點:
(1)、函數性
        函數性語言的基本特點是用函數定義和函數調用構成程序。程序員用函數定義和函數調用組成的表達式來描述求解問題的方法,表達式的值就是問題的解。
        用FORRAN、PASCAL或者C等傳統程序設計語言編寫的程序是按一定順序執行的命令序列,執行結果就是問題的解。用這些語言編程時,程序員要規定求解的順序,既要描述控制流。Lisp語言的編程不考慮程序執行順序的細節,是更加面向用戶的語言。它只確定函數之間的調用,把函數執行的細節交給lisp系統來解決,從而減輕了用戶編程的負擔。
(2)、遞歸性
        遞歸函數是指:在函數的定義中調用了這個函數本身。所有的可計算函數已被證明都可以用遞歸函數的形式來定義。
        由於lisp的主要數據結構是表,而且表是遞歸方法定義的,既表中的一個元素也可以定義為一個表。因此,程序員用lisp提供的自定義函數來定義用戶自己的函數時,可以採用遞歸函數的形式。自定義的遞歸函數能夠很方便地對遞歸定義的表進行操作。遞歸定義的方法使程序簡明、優美。
(3)、數據與程序的一致性
        Lisp的一段程序是用戶的一個自定義函數,這個函數可以被其它函數調用,或者說,一段程序被其它程序調用。函數執行後的輸出數據成為這個函數的返回值。一個函數被其它函數調用,就是調用了這個函數的返回值。在lisp中,函數與這個函數的返回值是一致的。這一特點使得lisp的編程就是定義一個宏函數;也使得lisp語言的擴充 比較容易。可以根據應用領域的需要,使用lisp提供的基本函數擴充若乾麵向專門應用領域的宏函數。
(4)、自動進行存儲分配
        用lisp語言編程時,程序員完全不必考慮存儲分配的問題。程序中定義的函數、數據和表等都能在程序運行時,由lisp自動提供。對不再需要的數據,lisp自動釋放其佔用的存儲區。
(5)、語法簡單
        Lisp的語法極其簡單,對變量和數據不需要事先定義和說明類型。Lisp語言的基本語法是函數定義和函數調用。因此,lisp語言的程序 便於修改、調試和糾錯,可以邊試驗邊設計,通過不斷修改和增加用戶自定義函數來構成複雜的系統。
1、ALISP與其他大多數語言之間最重要的差別是它用表(list)存放數據。ALISP沒有數組、聯合、結構及記錄,所有複雜的數據集均由表來表示和處理。
2、ALISP的變量沒有明確的類型。LISP變量的類型是在賦值時動態確定的,因而不需要像C或Pascal那樣要預先聲明變量,也不需要像BASIC那樣需要特殊的標識命名習慣和DIM語句。
3、ALISP不需要預先聲明變量或函數(大多數語言需要這樣做,其主要目的是檢查參數的類型以及確定結果的類型)。由於ALISP變量是動態確定類型,因而沒有必要對參數和結果作類型檢查。ALISP程序可以用LISP函數隨時確定變量的類型。
4、 與C/C++、BASIC、Pascal等語言不一樣,LISP沒有語句、關鍵詞以及運算符。它是函數定位語言,其所有運算都由函數調用完成。