當前位置:首頁 » 編程軟體 » lisp語言編譯器

lisp語言編譯器

發布時間: 2023-06-15 14:05:30

⑴ Lisp語言怎麼樣為什麼現在不流行與java相比呢

很久以前,這種語言站在計算機科學研究的前沿,特別是人工智慧的研究方面。現在,它很少被用到,這一切並不是因為古老,類似古老的語言卻被廣泛應用。 其他類似的古老的語言有??FORTRAN、 COBOL、 LISP、 BASIC、 和ALGOL 家族,這些語言的唯一不同之處在於,他們為誰設計。FORTRAN是為科學家和工程師設計的,他們在計算機上編程的目的是是為了解決問題。COBOL是為了商業設計的,最好的體現在於讓商人們可以利用電腦時代。LISP是了計算機科學研究設計的,最突出的體現在計算機基本原理研究.。BASIC是為初學者設計的。最後,ALGOL語言是有計算機程序員修改,演變成其他流行的語言,如C,Pascal和Java的一個龐大的家族。上面提到的某些語言已經不像當初那麼流行了。我們在這里可以把它們稱作「失敗」。問題是它們為什麼失敗?第一站出來的是COBOL. 很不幸,它以面向商業人員的很好的可讀性就是它的失敗點。商業人員發現,他們可以僱傭程序員去管理他們的系統。程序員自然會偏向於為他們設計的語言,而不是他們的老闆。所以隨著時間推移,越來越多的商業功能都使用例如VB, C, C++ 和JAVA實現了。現在,只有很少一部分軟體仍通過COBOL語言編寫。BASIC卻有不同的命運。他是為入門人員設計的。那些在微機上學習編程,他們會使用內置的BASIC語言作為起點。隨著時間推移,微機被運行微軟操作系統的個人電腦,或者MacOS的蘋果電腦所代替。這種語言逐漸被VB所取代。雖然他是面向初級程序員,它有一段時間代替了COBOL。為什麼要耗費這么多的資源在昂貴的編譯器上,而便宜的解釋器在我們的電腦上已經存在?最近,微軟以遷移到.NET框架上,讓VB跟在後面。它的替代者, C#就是ALGOL家族中的一員,跟Java相近。這些年FORTRAN的使用起起伏伏。在某一階段,差不多所有科學方面的代碼是用它來寫的。它的優點是這門語言中沒有指針,並且不允許存在遞歸。這意味著所有數據的引用位置都可以在編譯時確定。FORTRAN編譯器利用這些額外的信息使程序運行格外地迅速。不幸的是,隨著時間的推移,固定大小的數組這種數據結構變得過時了。現在,科學要處理任意形狀的風格,甚至表述更為復雜的真實世界。這需要在語言中額外地加入指針。這些情況發生的時間段里,FORTRAN逐漸走向沒落。現在,它被轉移到高性能計算工作,其中新的並行矩陣和矢量運算最近添加到這門語言中,仍然使它擁有性能優勢。ALGOL語言家族取得了成功。其原因是,這些語言是由程序員為程序員寫的。隨著時間的推移,這些與系統和應用相關的語言成為了現在最常用的語言。它的優點是越多地程序員使用,這門語言就能得到更多地改進,並且越來越多地程序是用它們來寫就的。這提供了一個良性循環,更多的程序員們又被聘請在己編寫的程序上工作。這是一個網路效應的例子。一個系統的「價值」是它的用戶數目的平方,在於以此速率增長的用戶之間的交互作用。那麼為什麼Lisp語言家族會站在失敗者一邊呢?有些人認為是語法的錯。Lisp因為它的括弧而臭名昭著。我並不認為是這個理由。許多用戶說良好的格式可以讓他們跟上這些括弧。同時,Lisp語言被發明不久後,有一個叫「super-bracket」的語法可以讓人快速表示出任意數量的回括弧」)」。這個特性在今天已經很少有人使用了。最後,優秀的編輯器解決了大多數的語法問題。另一些人經常抱怨Lisp是一門函數式語言。

⑵ 怎麼能將Lisp代碼編譯成EXE文件

為什麼要編譯成exe文件呢?要讓其在所有的windows上都能運行?
【首先】:lisp是腳本語言,所以它是跨平台的,也就是說它不需要被編譯成exe文件,就能在所以機器上運行。
【方法】這方法有點笨,但是很好,也適用於想把java轉exe苦苦掙扎的人們
方法就是:寫一個bat文件
【bat文件的內容】文件名暫定為run.bat
.\clispfolder\clisp programname
PAUSE
【注】
(1)一定要用反斜杠
(2)clispfolder 為你的lisp的解釋器的文件夾的名字
(3)clisp 為你的解釋器的名字(就是clispfolder中那個exe文件)
(4)programname為你的lisp程序的名字,貌似帶不帶後綴都可以。
(5)用記事本寫完上面兩行東東後,將其存為.bat格式
【然後的操作】
隨便建一個文件夾,這個文件夾中要放進去三個東東
(1)你的lisp的源代碼
(2)你的lisp的完整的解釋器,就是講clispfolder完整的拷貝到這個文件夾即可
(3)剛才寫的那個bat文件
【之後】
你就可以帶著這個文件夾滿世界跑啦,在「所有」的windows中,雙擊那個bat文件,即可運行你寫的lisp啦..................................
【此方法的缺點】
(1)那個clispfolder太大,如果你只是寫一個不到1M的lisp的話,那這種方法很臃腫
(2)這種方法貌似不適用於用lisp寫windows的@病#毒!
----------------------------------------------------------------
不過這個方法可靠,簡單!

⑶ lisp語言的快速入門

Common Lisp語言快速入門: Lisp是軟體領域的分裂力量。一方面,Lisp愛好者誓言Lisp比軟體領域內的其它語言都更加快捷、整潔和強大;而反對者則辯稱,不可靠的執行和庫支持不足使得開發者難以在其中編寫任何真正的軟體。事實上,他們都有各自的道理。
第一版Lisp於大約50年前推出,這使得它和FORTRAN一樣,成為現在仍在使用的最古老的編程語言之一。可以證明,它擁有(它們將會擁有)最龐大的特性列表,它也是第一種包括一整套今天我們全都認為是標准語言特性的語言,如垃圾收集、遞歸、函數作為對象、甚至是普通的if-then-else子句。同時,人們也認為它是一款優秀的教學語言:MIT使用方案、Lisp衍生物,傳授它們的介紹性編程類。
我們將一起學習最強大和項目就緒的Lisp版本:Common Lisp,使其正常運行,並了解一些Lisp應用。 代碼和數據並無差異——在Lisp中,代碼只是一個函數對象列表。源代碼和數據源之間不存在區別,允許Lisp把它的內在呈現給編譯器、注釋器和程序員。這允許你方便地本地讀入和評估代碼,甚至可以允許你使用宏。
宏——定義和重新定義任何語言元素。不喜歡條件、或循環或函數的運行方式嗎?好,你可以定義自己的注釋。如果你在代碼中多次執行某個特定的任務,把那個特性添加到語言中不是更加方便嗎?應用Lisp,你可以實現上述功能。
速度——雖然在許多情況下Common Lisp不如C或OCaml這類速度巨人快捷,但它在一系列測試中表現良好,特別是在執行一小段程序的情況下。了解一些基本的編譯器知識,你就能夠編寫出處理列表和大型數字的代碼,在執行速度和內存使用方面都要優於其它語言。
簡化——Lisp的一切功能都基於一些基本的理念——一旦你了解那些理念,你就幾乎能夠處理任何問題。Lisp程序員常常自誇說,僅僅用幾百行代碼,你就能在幾乎任何語言(如C++或Haskell)中執行一個Lisp注釋器。
靈活——以你喜歡的任何方式編寫代碼。更喜歡功能性的編程方法嗎?沒問題!想要完全反復編程嗎?草草寫下幾個快速的宏就可以完成任務。你可以用最方便最高效的方式編寫程序,而且這些程序都能良好地運行。 好,行!我選擇了Lisp,我如何進行安裝呢?
這是棘手的問題。不像是Python或C#一樣,Common Lisp沒有標准執行——該語言由一個規范,而不是執行來定義。Common Lisp也沒有C語言的特點,及在每一個平台上都是一種支配性的執行或流行的執行。每個版本都應執行上述標准,但有一些細節要由編譯器或注釋器來處理,這使得每個執行都稍有不同。
你可以使用幾種選項——在本文中我使用CLISP,它在Windows、Linux和Mac(僅PPC)上運行良好。如果你使用英特爾Mac,則必須使用其它執行,如Allegro Common Lisp或SBCL。對於這篇快速入門中的簡單例子,你使用哪個執行都不要緊。
使用Lispbox可以快速安裝Common Lisp系統,但遺憾的是,Lispbox在2012年停止了更新。Lispbox為你提供一個Common Lisp執行、Emacs、SBCL和Slime——Emacs高級Lisp整合模式,許多Lisp程序員會告訴你說,這個組合是使用Lisp的唯一方法。如果你並非Emacs用戶(我本人也和你一樣),不要擔心,它並非必要條件,只是使得編寫Common Lisp程序更加簡便。而如果想要使用最新的Emacs、SBCL和Slime,網路上也有許多教程關於如何配置它們。
安裝過程因平台而異,在Windows中你只能運行安裝程序,多數Linux軟體包管理器提供安裝包等。選擇一個執行並遵循安裝指令即可。打開Common Lisp (CLisp)交互環境的方式是M-x slime,如果你不理解這是什麼意思的話可以通過Ctrl+h松開後按t來學習Emacs的基本操作。但由於Emacs的默認字體不支持中文,所以為了避免教程亂碼,點擊程序窗口左上角的Options,選擇Set Default Font,選擇支持中文的字體後保存。打開REPL(互動式提示符)之後再返回這里,我們繼續往後講。 REPL代表「閱讀-評估-列印-循環」(Read-Evaluate-Print-Loop),它簡單表示注釋器的一個互動式提示符。你可以從這里輸出一些簡單的Lisp代碼。如果你使用另一種注釋器提示符,你可以在這里使用提示符作為計算器輸出一些基本的數學表達式——但它不能正常運行。在CLISP中輸入5*2不會返回任何有意義的結果:
> 5 * 2
5
> 5
5
> 2
2
Lisp並非以那種方式運行,運算符,如「+」不是在數字之間,而是在數字前面,就好像它們是函數名稱一樣。因此,如果你想將REPL當作計算器使用,你必須輸入:
> (* 5 2)
10
> (+ 1 2 3 4)
10
> (+ (* 5 2) (* 10 3) (/ 100 4))
65
對你來說,理解這種用法可能更難一些,但它擁有一些優勢:它便於編譯器解析、它對所有函數和運算符都一樣、它讓你給函數添加盡可能多的自變數——例如,在上面的第二個例子中,你可以任意擴充加數,使得加法函數和總計函數完全一樣。
另外你會注意到,函數名在括弧內,而不像許多其它語言一樣函數名在括弧以外。這表示你要寫(函數自變數)而不是函數(自變數)。
每個Lisp表達式會返回一個值,一個函數總是返回最後一個表達式的結果——即使是NIL,NULL在Java或C++中的對等值也是這樣。因此在Lisp中顯示「Hello World」相當簡單:
> Hello World
Hello World
如果你希望在屏幕上列印一些內容,並返回其它內容,你應該使用列印函數:
> (print Hello World)
Hello World
Hello World
這個字元串顯示兩次,一個是列印結果,一個是函數返回的結果。
Lisp表示LIST Processor(列表處理器),Lisp中的幾乎所有內容都以列表的形式存在,因此有時你必須處理列表。定義列表非常容易:
> (list 1 2 3 4 5)
(1 2 3 4 5)
> '(1 2 3 4 5)
(1 2 3 4 5)
第二種定義方法叫做引用,除定義簡單的列表外,它還有更多用途,不過我們必須在後面的另一篇文章中討論那個主題。 Lisp擁有全部標准控制流程方法。定義一個重復一個值的簡單循環相當容易:
> (dotimes (i 10) (print i))0
1
2
3
4
5
6
7
8
9
NIL
同樣,重復一個列表也很簡單:
> (dolist (i '(0 1 2 3 4 5 6 7 8 9)) (print i))
0
1
2
3
4
5
6
7
8
9
NIL
以上兩個函數都是DO函數的特殊版本,它就像在其它語言中組合使用while和for函數一樣。它由三個部分組成:循環變更定義、終止條件和語句主體:
> (do ((i 0 (+ 1 i))) ((> i 10)) (print i))
0
1
2
3
4
5
6
7
8
9
10
NIL
在這個例子中,變更定義部分為((i 0 (+ 1 i))),它定義變數i為0,並在每次循環時調用函數(+ 1 0)。終止條件為((> i 10)),表示在i大於10時函數終止運行。最後主體部分列印i的值。
Lisp中也有條件函數,最基本的條件函數為if函數:
> (if (> 10 20) (print Hello) (print World))
World
World
if函數由三部分組成:條件、then語句和else語句。如果條件為真,則執行then語句,否則就執行else語句。
你可能已經注意到,到現在為止我們僅使用了單個的語句——但如果你需要把幾個語句連接在一起,那該怎麼辦呢?在Lisp中,要將幾個語句連接起來,你需要使用progn這個特殊的控制流程函數:
> (progn (print Hello) (print World))
Hello
World
World
例如,上例允許你在條件函數和循環中使用幾個語句。
如果你想要更進一步的了解和學習Common Lisp,可以搭配學習ANSI Common Lisp 和Practical Common Lisp (實用Common Lisp編程),如果你想再更進一步,可以看一看On Lisp 等參考書。

熱點內容
小魚易連雲存儲 發布:2025-02-09 03:59:47 瀏覽:87
正在限制訪問 發布:2025-02-09 03:47:17 瀏覽:901
架設資料庫 發布:2025-02-09 03:41:29 瀏覽:964
imacpro哪個配置最好 發布:2025-02-09 03:32:29 瀏覽:251
用編程對話 發布:2025-02-09 03:23:43 瀏覽:86
自助解壓球 發布:2025-02-09 03:17:37 瀏覽:319
linux進程的退出 發布:2025-02-09 03:00:22 瀏覽:814
淘寶上傳時間 發布:2025-02-09 02:42:13 瀏覽:638
ios緩存數據 發布:2025-02-09 02:32:06 瀏覽:254
蘋果手機如何存儲word 發布:2025-02-09 02:23:02 瀏覽:781