如何紮實地學習Lisp?

Lisp這麼歷史悠久的編程語言,很有底蘊,很想學習,但是在學習之前,想多獲得一些建議,不想走彎路。我的問題有三個部分。

首先,學習Lisp應該抱什麼樣的目的?是否應當作為一種編程語言和工具?還是只是為了學習函數式的內涵?

其次,Lisp的方言和實現很多,希望大家推薦一種,common lisp? scheme? clojure? other? 不知道這些方言彼此的優缺點,也不知道應該選擇哪一種來學習。

最後,希望推薦一本教材,使我能比較系統的學習。


Scheme 大法好

天滅過程式 退C保平安

人在做 天在看 賦值語句留禍患

指針亂用天地滅 趕緊重寫保平安

誠心誠念SICP好 Scheme大法平安保

眾生都為函數來 現世險惡忘前緣

Scheme弟子說真相 教你編程莫拒絕

早日擺脫面向過程 早日獲得新生

上網搜「九評丹尼斯·里奇」 有真相

聽我的,scm 比 clisp 簡單多了。

可以從 racket 入手。

Lisp 需要不斷的練習——Belleve。


說實話,我自己寫lisp也不紮實。最多算是會一點語法。就和其它亂七八糟的java c一樣的程度。

學習lisp其實需要很紮實的基礎知識-&>《SICP》肯定要讀完前面的章節

第一個問題:

目的-&>

(官方版)讓你了解計算機程序的構造與解釋。

(民間版)當年我學Lisp是因為一篇科幻文?《屠龍之技》,當時我看完之後的感覺,卧槽太牛逼了。拿出去炫,肯定亮瞎小夥伴的眼。

工具-&>無論你是否把他當作工具或者程序語言,他依然就是一種工具以及程序語言。

函數式-&>Lisp準確說來並不止面向函數式,還可以面向對象。多範式。

第二個問題:

如果說對於方言的偏好的話,我推薦Clojure,不僅僅因為名字長,而是因為確實非常棒!平台優勢,能夠無痛操作java平台上面的包,以及活躍的社區優勢。用Lisp的腦殘粉都知道Lisp除了括弧是個缺點,其它都是優點,所以我推薦了一個括弧少的,不然括弧數起來會很崩潰。當然會有人說彩虹括弧啊什麼,很多編輯器都有這樣子的支持。但是我還是推薦括弧少的。

Common Lisp其實算是半死不活的狀態了,維護的人很少。而且貌似除了傘哥的一本PCL就沒什麼中文教材了。當然英語好一切都不是問題。Scheme現在貌似叫Racket,又是IDE,又是語言。看上面那本書可以跟著一起寫,但是其實Lisp方言都是大同小異的,除了括弧還是括弧。沒啥差別,但是你用Clojure可以做到各種各樣的事情,很酷,比如說quil,overtone,luminus,caribou等等的clojars,當然其它語言肯定也能,但是clojure對於剛入門的更加友好。無論IDE還是語法都完爆其它的方言。

第三個問題:

參考書其實很多英語好,google搜索。當然也有徐明明大神翻譯的一本《Clojure編程》各大網站均有銷售。或者你可以直接看他的博客,Clojure QQ群:130107204。


看我的話題經驗……

動態作用域萬歲!沒嘗試過 Dynamic Scoping 不能算學過 Lisp。

去你的純函數式編程。滾去用你的 Haskell。多範式才是 Lisp 的精髓。


學習的目的不是看自己么?學著玩,學著賺錢不都是看自己么,自己都不知道學著是為了什麼還不如不學。

就學函數式編程而言,Coursera有相關的課程,用SML講的。再或者Haskell和F#都是不錯的選擇,多接觸了解都不是壞事。

就LIsp來說,目前勢頭最好的方言顯然是Clojure,如果你有Java的相關經驗,學這個肯定沒錯。

只是為了加強自己的編程能力的話,不如好好看SICP,順帶的學Scheme。

想快速的做小東西玩,寫一些腳本,newLisp如此輕量級,最適合不過了。

如果想要踏入Lisp的世界的話,毫無疑問學Common Lisp。


用scheme 實現常用演算法和數據結構,最後實現一種新語言的解釋器或編譯器。


不知道題主現在還在學嗎,我隨便說點。

如果你能理解--

CS是創造生命的科學,CL是創造生命的數學語言

那你就繼續學吧,唉

反正是先學數學

路漫漫其修遠兮

覺得有共同話題的可以聯繫我2333


推薦閱讀:

具體的講,C#相比JAVA有哪些先進的地方?
計算機專業不學c語言是怎樣的存在?
程序員怎麼學習英語?
編程是靠記憶嗎?
0基礎學編程應該學哪種語言更迅速,看哪些書?

TAG:編程語言 | 編程 | Lisp | CommonLisp |