IronLisp

IronLispLispMicrosoft.NET Framework上的一個實現。它由Xacc.ide在2007年7月23日發表。IronLisp已被IronScheme替代,將不會有更進一步的開發。

基本介紹

  • 中文名:IronLisp
  • 外文名:IronLisp
  • 領域:計算機
簡介,LISP,LISP歷史,20世紀,公元2000年迄今,LISP基本介紹,參見,

簡介

IronLispLispMicrosoft.NET Framework上的一個實現。它由Xacc.ide在2007年7月23日發表。IronLisp已被IronScheme替代,將不會有更進一步的開發。
IronLisp的Beta版本已經在Microsoft Public License授權協定下發布。

LISP

LISP是具有悠久歷史的計算機程式語言家族,有獨特和完全括弧的前綴符號表示法。起源於公元1958年,是現今第二悠久而仍廣泛使用的高階程式語言。只有FORTRAN程式語言比它更早一年。LISP編程語族已經演變出許多種方言。現代最著名的通用編程語種是Common LispScheme
LISP最初創建時受到阿隆佐·邱奇的lambda演算的影響,用來作為電腦程式實用的數學表達。因為是早期的高階程式語言之一,它很快成為人工智慧研究中最受歡迎的程式語言。在計算機科學領域,LISP開創了許多先驅概念,包括:
  • 自動存儲器管理
  • 動態類型,條件分支
  • 自主(self-hosting)編譯器
  • 讀取﹣求值﹣輸出循環(Read-Eval-Print-Loop,REPL)
LISP名稱源自列表處理器(英語:List Processor)的縮寫。列表是LISP的主要數據結構之一,LISP編程代碼也同樣由列表組成。因此,LISP程式可以把原始碼當作數據結構進行操作,而使用其中的宏系統,開發人員可將自己定義的新語法或領域專用的語言,嵌入在LISP編程中。
代碼和數據的可互換性為LISP提供了立即可辨識的語法。所有的LISP程式代碼都寫為S-表達式或以括弧表示的列表。函式調用或語義形式也同樣寫成列表,首先是函式或操作符的名稱,然後接著是一或多個參數:例如,取三個參數的函式f即為f(arg1,arg2,arg3)。
LISP語言的主要現代版本包括Common Lisp,SchemeRacket以及Clojure。1980年代蓋伊·史提爾二世編寫了Common Lisp試圖進行標準化,這個標準被大多數解釋器和編譯器所接受。還有一種是編輯器Emacs所派生出來的Emacs Lisp(而Emacs正是用Lisp作為擴展語言進行功能擴展)非常流行,並創建了自己的標準。

LISP歷史

20世紀

1955年至1956年間,信息處理語言被創造出來,用於人工智慧處理(早期的基於符號處理的人工智慧領域,以圖靈測試為目標)。此領域中有研究者持有觀點:“符號演算系統可以派生出智慧型。”。它首先使用了列表(抽象數據類型)與遞歸。
1958年,約翰·麥卡錫(John McCarthy,1927年9月4日-2011年10月24日)在麻省理工學院發明了LISP程式語言,採用了信息處理語言的特徵。1960年,他在《ACM通訊》發表論文,名為《遞歸函式的符號表達式以及由機器運算的方式,第一部》(Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I)。在這篇論文中闡述了只要通過一些簡單的運算符,以及用於函式的記號,就可以創建一個具圖靈完備性語言,可用於算法中。
麥卡錫最初使用M-表達式寫代碼,之後再轉成S-表達式,舉例來說M-表達式的語法,car[cons[A,B]],等同於S-表達式的(car (cons A B))。然而由於S-表達式具備同像性的特性(homoiconic,即程式與數據由同樣的結構存儲),實際套用中一般只使用S-表達式。此外他也借用了信息處理語言中的許多概念。
約翰·麥卡錫的學生史帝芬·羅素在閱讀完此論文後,認為LISP程式語言當中的eval函式可以用機器碼來實做。他在IBM 704機器上,寫出了第一個LISP解釋器。1962年,蒂姆·哈特(Tim Hart)與麥克·萊文(Mike Levin)在麻省理工學院以LISP程式語言,實做出第一個完整的LISP編譯器。這兩人在筆記中使用的語法比麥卡錫早期的代碼更接近現代LISP風格。
然而使用20世紀70年代當時的編譯器技術和硬體,要實現LISP還是困難的挑戰。由研究生丹尼爾·愛德華茲所開發的垃圾收集程式,使得在通用計算機上運行LISP變得實用,但效率仍然是一個問題。這導致了LISP專用機器的創建:用於運行LISP環境和程式的專用硬體。之後計算機硬體和編譯器技術的發展迅速,使得昂貴的LISP專用機器過時。

公元2000年迄今

在20世紀90年代衰退之後,Lisp最近十年來因一些關注而逐漸復甦。大多數新活動都集中在Common Lisp,Clojure,Racket,Scheme和Emacs Lisp的實現上,包括開發新的跨平台庫和套用。當其他人認為Lisp已經是過時陳舊的,如保羅·格雷厄姆和埃里克·雷蒙等人繼續出版有關於LISP編程的著作,一些新的開發人員受到這些作者啟發,經常將LISP這種語言描述為令人大開眼界的經驗,並聲稱在本質上比較其它程式語言更有生產效率。這種意識的提高可對比於,如同Lisp在90年代中期“人工智慧冬季”的短暫增長。
Dan Weinreb在他的調查中,列出了11個積極維護中的Common Lisp實現。Scieneer Common Lisp是一個新的實現商業化產品,由CMUCL於2002年首次發布。
開源社區創建了新的支持基礎:CLiki是個收集Common Lisp相關信息的維基,Common Lisp目錄列出了資源,#lisp是一個受歡迎的IRC頻道,可以共享和注釋代碼片段(在lisppaste的支持下,一個用Lisp編寫的IRC機器人),Planet Lisp收集了各種 Lisp相關部落格的內容,LispForum用戶討論Lisp主題,Lispjobs是個公布職缺機會的服務,還有一個Weekly Lisp News提供每周新聞。Common-lisp.net是開源項目的託管站點。Quicklisp則是含括了許多庫的裝載管理器。
LISP50@OOPSLA慶祝了Lisp的50周年(1958-2008)。在波士頓,溫哥華和漢堡有定期的當地用戶會議。其他活動包括歐洲共同Lisp會議,歐洲Lisp專題討論會和國際Lisp研討會。Scheme社區積極維護了二十多個實現。在過去幾年中已開發了數個有意義的新實現(Chicken,Gambit,Gauche,Ikarus,Larceny,Ypsilon),Scheme社區廣泛接納了R5RS語言標準。Scheme需求實現過程創建了很多預備標準庫和Scheme擴展功能。各種 Scheme實現的用戶社區持續地增長。
一個新的語言標準化過程於2003年開始,並在2007年產生了R6RS標準,而使用Scheme介紹計算機科學課程的學校似乎有所減少。麻省理工學院的計算機科學入門課程,已經不再使用Scheme。
有幾種新的Lisp方言:Arc,Hy,Nu,Clojure,Liskell,LFE(Lisp Flavored Erlang)和Racket。

LISP基本介紹

LISP是第一個函式式程式語言,區別於C語言Fortran等命令型程式語言和JavaC#Objective-C等面向對象程式語言。由於歷史的原因,Lisp長期以來被認為主要用於人工智慧領域,但Lisp並不是只為人工智慧而設計,而是一種通用的程式語言。
Lisp的表達式是一個原子(atom)或列表(list),原子又包含符號(symbol)與數值(number);列表是由零個或多個表達式組成的序列,表達式之間用空格分隔開,放入一對括弧中,如:
abc()(abc xyz)(a b (c) d)
最後一個列表是由四個元素構成的,其中第三個元素本身也是一個列表,這種又稱為嵌套列表(nested list)。
正如算數表達式1+1有值2一樣,Lisp中的表達式也有值,如果表達式e得出值v,我們說e返回v。如果一個表達式是一個表,那么我們把表中的第一個元素叫做操作符,其餘的元素叫做自變數。

參見

相關詞條

熱門詞條

聯絡我們