資源描述:
《lisp發(fā)展現(xiàn)狀及未來展望》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、Lisp發(fā)展現(xiàn)狀及未來展望 摘要:自從世界上第一個高級編程語言Fortran誕生以來,高級編程語言已經(jīng)發(fā)展了近六十年,無數(shù)的優(yōu)秀語言先后問世,至今全世界已有幾百種語言。Lisp,作為與Fortran同時代誕生的元老級高級編程語言之一,與Fortran一同引領(lǐng)著編程語言設(shè)計的兩大方向,一直被一些優(yōu)秀的計算機專家所喜愛,在編程語言世界里舉足輕重。該文探究了Lisp的歷史與發(fā)展,并對其未來做出了展望?! £P(guān)鍵詞:Lisp編程;Lisp方言;計算機編程;小眾語言 中圖分類號:TP312文獻標(biāo)識碼:A文章編號:1009-3044(2012)36-
2、8669-03 計算機,由硬件系統(tǒng)和軟件系統(tǒng)兩部分構(gòu)成。硬件系統(tǒng),是完成計算的一系列物理設(shè)備;軟件系統(tǒng),則是計算機程序或使機器硬件工作的指令集。編程語言便是程序員控制這個指令集的工具?! ≡谟嬎銠C剛被發(fā)明的時候,程序員通過直接編寫0和1組成的機器指令對計算機進行控制,這是真正的計算機能直接識別的編程語言。然而對于人類來說,直接使用這兩個數(shù)字來進行編程,真是無比痛苦,尤其開發(fā)大型程序,面對成千上萬的0和1,程序員往往會精神崩潰。由此匯編語言應(yīng)運而生。但是匯編語言也只是將一些機器指令換成了人類能看懂的名字,對編程來說并無實質(zhì)性的進展。如計算機
3、的加法命令,機器指令為11001101,匯編語言則只是將其改成了add。8 使用匯編語言編程,與使用機器指令一樣,程序員費了九牛二虎之力,卻只能讓大多數(shù)計算機做一些很簡單的事。最終,為了能輕松的編程,也為了能高效的編程,高級編程語言終于千呼萬喚始出來?! ”硖幚碚Z言ListProcessor,也就是Lisp語言,便是作為最早的高級編程語言之一出現(xiàn)于世?! ?Lisp的發(fā)明 1959年,當(dāng)時人工智能這個學(xué)科剛被提出不久,作為人工智能專家的約翰?麥卡錫(JohnMcCarthy),為了能輕松描述人工智能的各種算法,發(fā)表了具有重大歷史意義的一
4、篇論文:“RecursiveFunctionsofSystemExpressionsandtheirComputationbyMachine,Part1”。在這篇論文里,麥卡錫介紹了一種運行于當(dāng)時IBM704計算機上的列表處理語言,全稱為ListProcessing,這便是最初的Lisp語言設(shè)想?! ∑鋵嶜溈ㄥa并沒有打算把Lisp設(shè)計成一種編程語言,他“設(shè)計這種書寫法完全是為了滿足論文寫作的需要”。然而,麥卡錫一個叫史蒂夫?拉塞爾(第一個電腦游戲的作者)的學(xué)生,看到了論文中有關(guān)定義,意識到可以將Lisp做成一種實際的編程語言,于是Lisp語
5、言最終誕生于世?! isp是世界上第二個出現(xiàn)的高級編程語言,第一個是著名的Fortran。作為高級編程語言的兩大始祖,這兩門語言也代表了語言設(shè)計的兩個不同方向。Fortran一開始就是作為編程語言而被設(shè)計,以計算機硬件構(gòu)架為基礎(chǔ);而Lisp則是從純理論中誕生,以數(shù)學(xué)為其設(shè)計基礎(chǔ)。自從這兩門語言出現(xiàn)后,高級編程語言的設(shè)計就不斷在Fortran和Lisp所代表的兩個方向中進行折中。8 2Lisp的九大思想 Lisp語言被設(shè)計時,包含了時任編程領(lǐng)域的九種新思想,其中一些思想已成為現(xiàn)今編程語言的基礎(chǔ),另一些則成為設(shè)計語言的目標(biāo)?! ∵@九種思想
6、大致如下: 2.1條件結(jié)構(gòu) 條件結(jié)構(gòu)是時下各種高級語言的基礎(chǔ)結(jié)構(gòu)之一,而Fortran最開始沒有條件構(gòu)?! ?.2函數(shù)作為一種數(shù)據(jù)類型而存在 函數(shù)與整數(shù)、字符串一樣,在Lisp中作為數(shù)據(jù)類型,可儲存在變量中,也可作為參數(shù)傳遞,擁有一切數(shù)據(jù)類型該有的功能?! ?.3遞歸 Lisp本身很多函數(shù)以遞歸形式出現(xiàn),是第一個支持遞歸的高級編程語言?! ?.4動態(tài)類型變量 在Lisp中,所有的變量都為指針,都為實際儲存的數(shù)據(jù)的地址。指針有類型之分,而變量本身沒有?! ?.5垃圾回收 垃圾回收,是當(dāng)一個變量再也用不到時,程序會自動對這個變量進行
7、回收,釋放它所占的儲存空間?! ?.6程序由表達式構(gòu)成 用Lisp所寫的程序是由一些表達式樹所構(gòu)成的集合,每個表達式都有返回值。Fortran和以后眾多的編程語言的程序則由表達式和語句構(gòu)成。8 2.7符號類型 在Lisp中,符號是一種指針,指向字符串?! ?.8整個代碼用符號和常量組成的樹形表示法 2.9整個語言無論何時都是可用的 Lisp不區(qū)分像其他高級語言中存在的讀取期、編譯期和運行期,整個代碼可以在任何時候運行?! ≡诟呒壘幊陶Z言發(fā)展的早期,語言的各種設(shè)計原則主要由計算機硬件條件決定,因此這九種思想未完全被大眾所接受。 隨
8、著時代的發(fā)展,計算機硬件性能越來越強大,各種語言的設(shè)計思想,開始向這九大思想靠近。至今,這九種思想仍是設(shè)計高級編程語言所努力達到與接近的目標(biāo)。我們可以看到,在一些語言的上手文檔里