複製鏈接
請複製以下鏈接發送給好友

LISP

(計算機程序設計語言)

鎖定
LISP是一種通用高級計算機程序語言,長期以來壟斷人工智能領域的應用。LISP作為應用人工智能而設計的語言,是第一個聲明式系內函數式程序設計語言,有別於命令式系內過程式的CFortran和麪向對象的JavaC#結構化程序設計語言。
LISP名稱源自列表處理(LISt Processing)的英語縮寫,由來自麻省理工學院的人工智能研究先驅約翰·麥卡錫(John McCarthy)在1958年基於λ演算所創造,採用抽象數據列表與遞歸作符號演算來衍生人工智能 [1] 
中文名
LISP
外文名
LISP Programming Language
類 別
計算機程序設計語言
創始人
約翰·麥卡錫
創始時間
1958年
發    源
IPL
啓發語言
JavaScript,Perl,Ruby,Python

LISP歷史背景

約翰·麥卡錫在2006年5月攝於加洲PaloAlto 約翰·麥卡錫在2006年5月攝於加洲PaloAlto
20世紀50年代中期,在大多數計算機處理的都是數值數據等,包括語言學、心理學和數學領域上一些人們開始對人工智能產生了興趣。覺得必須實現共同需要的一個方法,使計算機能夠處理鏈表中的符號數據,允許語言的處理、信息存入和檢索、定理證明的過程機器化。IBM是首先對人工智能開發有興趣的商業機構之一。
1958年夏天,來自麻省理工學院的人工智能研究先驅約翰·麥卡錫John McCarthy)參與IBM資訊研究部的工作,研究符號運算及應用需求。可是,IBM旗下的Fortran表處理語言卻未能支援符號運算的遞歸、條件表達式、動態存儲分配及隱式回收等功能。約翰·麥卡錫於1958年秋季回到麻省理工學院後,和Marvin Minsky組成了人工智能項目。開展一個表處理軟件系統來實現McCarthy提出建議採納者程序的工作,爾後推動了表處理語言LISP的誕生 [1-2] 

LISP發展歷程

1960年4月,麥卡錫以《遞迴函數的符號表達式以及由機器運算的方式,第一部》為題,於ACM通訊上發表LISP設置。麥卡錫的學生Steve Russell根據該論文,以IBM 704於麻省理工學院的計算機運算中心成功執行了第一版的LISP。
Lisp發展不同版本時序 Lisp發展不同版本時序
1962年,麥卡錫及人工智能小組按LISP 1的編譯基礎上改良出LISP 1.5版本。
1969年9月,史丹福大學人工智能實驗室的Lynn Quam與Whitfield Diffie推出的Stanford LISP 1.6廣泛地被應用於使用TOPS-10系統的PDP-10計算機系中。可是,Stanford LISP 1.6版本自麻省理工智能項目更新LISP 1.5成MACLISP及BBN科技公司推出的InterLisp成功後,漸被棄置。
自1960代末年至1980年初年,各種更新LISP版本湧現,有源自加利福尼亞大學伯克利分校的Franz Lisp、在AutoCAD運行的AutoLISP前身XLISP、猶他大學開展的Standard Lisp及Portable Standard Lisp、專屬於Lisp機器上運行的ZetaLisp、源自法國國家信息與自動化研究所的LeLisp、以及MIT人工智能實驗室的Gerald Sussman與Guy Steele所開發的Scheme等。
1984年,改良自MacLisp、集各版本大成、跨平台、且被目為事實標準Common Lisp誕生。至1994年,美國國家標準學會(ANSI)對Common Lisp語言進行了標準化。
自穩定運行的Common Lisp出現起,再有各機構按各自所需而開展後續Lisp,包括1990年來自歐洲用户的EuLisp、運行於Java虛擬機Clojure、受到Maclisp影響而創的Emacs Lisp、以及自由開源來自卡內基·梅隆大學的CMUCL、還有IsLisp,Racket,ACL2等蓬勃湧現。
自2000年起,LISP共享者合力支援的自由開源社區逐漸形成,致力於LISP後續發展。
2002年10月,第一屆國際LISP會議於美國舊金山開展,其後LISP大會不定期於全球各地舉行,包括2014年在加拿大蒙特利爾大學以移動概念作主題的會議 [1]  [2-4]  [5] 

LISP語言特點

LISP機器原型收藏於MIT人工智能實驗室 LISP機器原型收藏於MIT人工智能實驗室
LISP為函數式程序設計語言,所有運算都能以函數作用於參數的方式來實現。
LISP沒有命令式語言程序中常見賦值語句和變量,重複的過程可以使用遞歸的函數調用來表示,並不需要使用循環模式。
LISP是古老的函數語言、弱類型、動態推斷,其代碼本身就是各種列表。每一個表項均可以儲存任何類型的數據如數字、函數、符號或一個子表等,在編碼時,可以隨時操作以更新列表。
LISP核心的操作符只有7個操作符:quote、atom、eq、car、cdr、cons、cond。前三者quote、atom、eq用於符號的推斷;car、cdr、cons操縱表格;cond負責分支判斷。這種簡潔定義,非常接近圖靈機原型的純函數式語言,是現代語言完全無法比擬的。
LISP作為弱類型這優點相對缺點則是運行效率的低下。原始定義簡潔的缺點使到大型開發工程變得困難,自底層到高層,自二維表查詢到面向對象,使用者需要嵌入更多的函數來實現,致使LISP眾多方言的衍生 [6-7]  [1] 

LISP語言組成

LISP數據類型

LISP只有兩種數據結構,原子(atom)和(list)。原子為標識符形式的符號或數字的字面值,表則是由零個或多個表達式組成的序列。基本上,LISP程序,並不需要使用一般表處理所必需的任意插入及刪除操作。

LISP語句結構

LISP的語法是簡潔的典型,程序代碼與數據的形式完全相同,以圓括號為邊界的表。例如,表:
(A B C D)
按數據來解釋時,它是一個有4個元素的表,按代碼來解釋時,它是將名為A的函數作用於3個參數B、C和D。
指定表結構時將表的元素放在圓括號中,簡單表的元素僅限原子而成的方式是:
(A B C D)
嵌套表結構亦是以圓括號來表示,例如,表:
(A (B C) D (E (F G)))
由4個元素組成。
第1個元素是原子A,第2個是子表(B C),第3個是原子D,第4個是子表(E(F G)),它的第2個元素是子表(F G)。

LISP關鍵字

LISP是一個函數式程序語言,並無關鍵字或保留字設,置使用者可自行再定義。

LISP語言執行

LISP語法,可透過執行Hello World程序來體現。此程序透過XLISP-STAT 2.1,3.45Beta版編譯器執行。
(DEFUN HELLO ()

  "HELLO WORLD"

)
語言組成信息來源 [7-8] 

LISP語言標準

衍生LISP語言曾認證於以下標準:
ANSI X3.226-1994 - 1994年,程式語言Common Lisp(Common Lisp Programming language [9] 
IEEE standard 1178–1990 (R1995) 1995年, 程式語言Scheme(Scheme Programming language [10] 
ISO/IEC 13816:1997- 1997年,程式語言ISLISP(ISLISP Programming language [11]  )已撤回
ISO/IEC 13816:2007 - 2007年,程式語言ISLISP(ISLISP Programming language [12] 

LISP語言應用

LISP是函數式程序設計的先鋒,其諸多革命性的創新思維影響了後續編程語言的發展,亦完全壟斷人工智能領域的應用長達三分之一個世紀。曾在開展初年出現的低效率因素亦在集體改良中被移去,成就了廣被應用於軟件開發、電子商務及金融系統的Common LispSchemeEmacs Lisp和Clojure [4]  [13] 
參考資料
展開全部 收起