2010-08-19 183 views
16

我是一名中級程序員,並且決定學習普通的lisp或scheme。我的問題很簡單,你會選擇哪一個?我不太在乎語法的困難,只是語言本身的力量,靈活性和其他方面。另外,我應該選擇哪種通用lisp或方案的實現?謝謝!Scheme或Common Lisp?

+6

您尚未提供任何人提供必要的基本信息以給出正確答案。爲什麼你想學習/使用Lisp?你想達到什麼目的?那是(大部分)什麼將指示選擇哪個。 – 2010-08-19 21:57:29

+1

對不起,不明確。我想學習lisp,主要是創建中小型應用程序,不僅學習一種新語言,而且還學習一種全新的編程形式,它與C-ish語言(如Java,C++和Python)有很大的不同。 – user425778 2010-08-19 22:11:01

+0

Dupe:[common-lisp-or-scheme](http://stackoverflow.com/questions/108201/common-lisp-or-scheme) – nawfal 2014-07-21 07:43:09

回答

16

像這麼多事情,這取決於你想要做什麼

請記住,如果您現在選擇一個,它不會阻止您稍後更改。事實上,我發現很容易從瞭解一點計劃轉向學習很多Clojure。

如果你只是想學習Lisp,或者創建適度複雜的程序,我會說Scheme是一個更好的選擇。它有一個更清潔,更清晰(更小)的標準圖書館,並且有很多資源可以滿足學習者的需求(而不是CL也不適用)。

如果你想要大量的圖書館(許多寫得很好)的原始力量和標準的工具包(作爲CL實現的標準獲得)與CL一起提供的庫,那麼它會是你最好的選擇。我想建議Clojure。這是一種相對較新的語言(< 5年),但它有很大的幫助。它是爲併發而設計的,如果你需要有狀態的話,可以使用它來編寫狀態安全的程序。還有很多其他的額外優惠,標準庫manages to stay small

它也在JVM上,因此如果您使用Java,您可以訪問所有庫,如果您需要其中任何一種庫,再加上JVM所提供的原始速度就在您的指尖。

但是,它是一種新語言,具有新的(但非常友好!)社區。如果你只是想將腳趾浸入Lisp池中,我會說Scheme是你最好的選擇。如果你想完成任務,我的喜好和愛是Clojure。

編輯老實說,你不能出錯三個中的任何一個。根據你想要做什麼,最好的方法是將Clojure推薦給任何人。

+0

感謝您的幫助!我將從Scheme開始,然後進入Clojure或Common Lisp。 – user425778 2010-08-19 22:46:13

+1

聽起來不錯!你會很開心。我會爲您的Scheme方言推薦PLT Racket。 http://racket-lang.org/ – Isaac 2010-08-19 22:52:21

0

common lisp更有用,但方案更清潔。大多歸結爲那。

1

我對更實際的,巴洛克式的和疣狀的編程語言有興趣,所以我選擇了Common Lisp。

我使用GNU clisp,但我正在考慮更改爲SBCL,因爲它專注於效率。

+0

我絕對認爲SBCL是兩者中最好的......不僅僅是因爲的效率。 – 2010-08-19 21:52:57

+1

@kotlinksi:爲什麼? – 2010-08-19 21:58:57

1

我選擇了Scheme,因爲這是在Structure and Interpretation of Computer Programs中教授的語言。到目前爲止,這是一個有趣的閱讀。

+1

這是一本很棒的書。不幸的是,還有一些優秀的書籍使用CL(PAIP,AMOP),所以這不一定會使決策變得更容易。 :-) – Ken 2010-08-30 03:31:42

3

我的印象是:Common Lisp更適合做東西,Scheme更適合教育和娛樂。我更喜歡SBCL的實現。計劃,我不知道。

+1

我曾經相信,然後我開始使用Guile。 – 2010-08-20 13:12:33

+0

...然後發生了什麼?沒有Common Lisp那麼有趣? :-) – Ken 2010-08-30 03:25:58

7

如果您希望使用Common Lisp的強大功能和靈活性。

如果你想幹淨,簡單,你可以使用Scheme。

到目前爲止我對SBCL很滿意。

6

這是舊的;)Emacs或vi? KDE或Gnome?紅色還是白色?

兩者之間最大的區別在於,Scheme傾向於關注函數式編程;一些作者強調Common Lisp中的函數式編程,比如Paul Graham,如果我編寫Common Lisp,我會遵循他們的建議。

我傾向於選擇Scheme,因爲它對我更有意義。我發現Scheme社區,特別是圍繞自由軟件實現的人,更關注於免費軟件。考慮一下,如果這對你很重要。與流行的觀點相反,Common Lisp是一種非常流行的語言,但它最爲落後於企業之門。對於我來說,這是擺脫Common Lisp的一個重要因素:當社區不那麼開放時,你不會在幫助和圖書館方面找到太多東西。

就實現而言,如果您是GNU/Linux用戶,我會推薦Guile。其他的實現在GNU意識的主流之外還遠遠不夠,我喜歡GNU社區,因此Guile是我的最佳選擇。此外,Guile擁有我發現的默認安裝中包含的最好的庫集合(考慮到與我對Clojure一無所知的其他受訪者不同)。

我見過其他一些受訪者重複舊的咒語「如果你想完成一些工作,使用Common Lisp;如果你想學習,使用Scheme。」這在SICP時代可能是真實的,但我認爲這些日子並不是真的。像Guile一樣,Scheme的一個很好的實現有很多庫,並且有很多很好的用例,這些用例表明你可以用它完成大量的工作。

0

Scheme的功能與Common Lisp相同或更大,但它沒有太多的支持或綁定。我會和Common Lisp一起去的。至於實施?我現在一直在使用sbcl/slunk/swank一段時間,而且它非常快速。史萊姆真的很好。

10

如果您想編寫實用的代碼,並且/或者您希望從一個實現到另一個實現具有良好的可移植性,請使用Common Lisp。目前有11個實施正在進行主動維護。 See my survey of implementations.

不同的實現有不同的優勢。如果你想要一個免費的,開放源代碼的,Clozure Common Lisp(CCL)(不要與「Clojure」!)和Steel Bank Common Lisp(SBCL)混淆是很好的通用實現。也有商業實現,最着名的是Allegro Common Lisp和LispWorks。對於Windows友好,Corman Common Lisp具有有用的功能。對於嵌入,嵌入式通用Lisp(ECL)非常棒(您不必以嵌入的方式使用它)。如果你想要一個編譯爲Java虛擬機的Common Lisp,那就是Armed Bear Common Lisp(ABCL)。看別人的論文;你想要哪一個取決於你的個人情況。

+0

哇!你的調查真棒!謝謝。 – clay 2010-08-31 01:59:58

0

我不太在乎語法的困難,只是語言本身的力量,靈活性和其他方面。

語法同樣困難或不在任何口齒不清。由於使用了不同的括號,所以Clojure的語法對於非Lisp的語法來說更容易一些。這使得人們所期望的更多不同。

Clojure和CL都有優秀的入門書籍。我還沒有深入閱讀過計劃書,但他們看起來比較有學術味道。

我會根據個人經驗向新手推薦Clojure或Common Lisp。

Clojure功能更強大,非常實用。如果使用CL,我推薦使用IDE(Allegro &其他版本有免費版本),或者使用文本編輯器和repl。換句話說,不要使用粘液。對於Clojure,我無法想到任何IDE,但Textmate或Eclipse可能會有什麼?

方案也有一些非常好的IDE,比如DrScheme。但是我發現在做一些真正的項目時保持參與更容易,而Clojure和CL似乎更容易。