對 Lisp 新手來說,學習哪種方言、使用哪些參考書和開發軟體更適合?

作為一名正要入手 lisp 的新手,你有什麼好的建議嗎?比如學習哪種 lisp 方言,用哪本參考書,開發軟體用哪款等等。


如果想學習common lisp的話,

首先推薦的書籍就是ANSI common lisp,原因有二:中英文兩個版本都很容易讀懂(lisp書籍不多,網上有不錯的中文翻譯,並且英文原文也不難,這算是極大的優點了)、PG寫的真的是非常到位,稍有任何一種語言經歷的都能輕易讀通。

然後是Practical common lisp

這本書稍微新一些,他在幾個方面是對ANSI的補充,有很不錯的應用例子(我跳過了),詳細介紹了format、IO以及macro、class。

如果不想啃on lisp的話,就好好讀讀這本書的macro那部分;這本書對class的介紹似乎受到過批評(我看了半天雲里霧裡的),有一本objected-oriented programming in commonlisp,對clos有興趣可以看看這本書。

解決完這兩本,就可以掏出on lisp了,這本書真是燒腦子(gensym貌似能保平安)。。。

很慚愧,我還沒讀完,但我可以做一個小小的判斷,讀完這本書,至少sicp的前3章,你翻一翻就可以了(sicp中的很多概念在common lisp中都有具體的體現,所以如果感覺sicp很吃力,不如先把common lisp學起來)

最近,有一本新出的common lisp recipes,binghe推薦過,這本書不是入門用的,裡面有很多開發中用的上的技巧,比如,生成可執行文件(別笑我,之前的書壓根沒提這事。。。),還有很多實用的庫的介紹。

學習common lisp快一年了,很慚愧,就做了這些微小的工作,還有一個也是很重要的

就是:

(global-set-key "[" "(")

(global-set-key "]" ")")

這和shift鍵的命運有很大關係。

謝謝大家。


不好意思,經常改動影響大家的timeline,我只是想讓這個答案更完美一些……下面是正文

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Common Lisp和Scheme是Lisp家族的兩大主要方言,通用性比較好,ELisp和AutoLisp只能在特定的環境下使用,所以不推薦。

如果你只是想學習FP的思想,可以直接學習Scheme,FP的思想都有了,還比較簡單,只不過庫不太完備。如果追求CL的強大可以看看Racket,是PTL Scheme的進化版。

IDE推薦:

  • DrRacket

書籍推薦:

  • Teach Yourself Scheme Mit Press
  • Simply Scheme MIT Press
  • LISP in small pieces
  • r5rs

基本都有電子版,第三個Lisp in small pieces不能作為入門教程,它默認你已經學會了Scheme,並且著重講如何實現一個Scheme的解釋器或者編譯器以及一些比較深層次的概念,不太好懂但是很開闊思路,而且經常將Scheme和CL進行對比,使你能夠觸類旁通。最後一個是Scheme的規範,也不適合作為入門教程,更適合作為reference,雖然它比較薄只有幾十頁。如果英文不太好,可以看看網上有沒有中文版。

不過相對來說我還是推薦Common Lisp,原因三言兩語也說不清,比較正統的Lisp,工業化程度高,如果你看過《黑客與畫家》應該有所了解,但是缺點是學習難度大,雖然大家都說CL久經歷練,但是糟粕也不少,這些別人說了沒用,只有你學完了之後做兩個項目才有體會。不過總起來說還是一門非常偉大的語言。首先由Lisp引進的編程思想包括if/then/else控制結構、遞歸函數調用、動態內存分配、垃圾收集、高階函數、詞法閉包、互動式編程、增量編譯以及動態類型……

IDE推薦:

  • Lisp in a box
  • LispWorks(適合高薪階層)

書籍推薦:

  • Practical Common Lisp
  • ANSI Common Lisp

我當初就是利用這兩本書學習的,不過在學習過程中主要還參考了

  • Lisp Quick Reference
  • Common Lisp The Language

第一本參考用公式的方式把基本用法列出,基本上覆蓋了整個ANSI Common Lisp標準,但是可能比較晦澀,不過習慣了就好了。第二本就不說了,類似牛津詞典,一千多頁,不懂的查查就行了,一般人看不下來,看下來也沒啥意思。

當你讀過這些書之後,基本上已經對Lisp有一個較深的了解,這時你可以自己寫個項目練練手,或者直接到github上clone一個。另外還有些書不錯,但是因為你已經有了比較紮實的基礎,你可以隨便看看,沒必要像看課本那麼仔細:

  • On Lisp(與Common Lisp The Language同一作者,相當於CLTL的進階版)
  • Common Lisp A Gentle Introduction to Symbolic Computation
  • Land of Lisp(好多漫畫!)
  • Successful Lisp
  • Tutorial on Good Lisp Programming Style
  • The Art of the Metaobject Protocol

這些書除了最後兩本我都看得不是很仔細,因為很多和Practical Common Lisp、On Lisp有重複,所以我只是看一些有特點的部分。倒數第二本講的是如何養成良好的Lisp編程風格,你可以當成散文來讀。最後一本比較深,我也沒有看完,主要講的是CLOS相關的東西,可以用來開闊思路。

其實如果你想學習CL這門語言,這些足足足足足足夠了,但是你還是覺得很無聊,好吧,再推薦兩篇文章:

  • The Roots of Lisp
  • Recursive Functions of Symbolic Expressions and Their Computation by Machine Part I

建議把這兩篇文章列印出來,一行行的看!一是因為都比較短,花不了你多少錢,二是因為都值得反覆推敲,不是看一遍就扔了。第一篇文章是Paul Graham寫的,就是那個ANSI Common Lisp、On Lisp以及Hackers Painters的作者,主要內容是對第二篇論文的總結概括,探討了Lisp的根基理論,難度較小,一共就十幾頁,看完了會有一些新的收穫,這些是你看其它語言教程看不來的。第二篇我就不說了,Lisp的作者寫的,好好看下,想想作者是如何設計出這樣一門偉大的語言的,別說你數學不好,你不會學呀,再說這裡用的數學也不難。

另外我不太清楚你學習Lisp的目的,上面說的可能比較適合一般的程序員,如果你是AI研究者你可以直接看下面的兩本:

  • Paradigms of Artificial Intelligence Programming,Case Studies in Common Lisp
  • The Elements Of Artificial Intelligence(An Introduction Using Lisp)

另外經常有初學者希望我推薦一些適合Lisp學習的網站,我就把我經常用的網站貼一下:

如果大家想看到持續更新的資源,可以在我的github上找「Lisp學習之路.md」

jiangxincode/cnblogs: 一些我平時會發表到cnblogs的文章

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

好了,我把我知道的都交代了,希望你們別到處問這個問那個,不踏實學習!老老實實看書才是王道呀!!!!

另外只看不點贊是什麼心態呀!!!!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


純學語言的話,Scheme 系的挺好,書也多

如果想要實用的話,個人認為沒有比 Clojure 更接地氣的了。依託於強大的 JVM 和 Java 社區,所有的 Java 庫都能用。


可以看下r5rs的標準吧...中文版也有人翻譯了...

才50頁...雖然我也沒讀完.


可以借鑒binghe學長的經驗..

個人感覺SICP是很好的入門書..看過前三章之後就可以了..後兩章太難..看書的時候一定要做習題..如果再配合上視頻就更好了(優酷上有在線版的)..

之後我建議是選擇Common Lisp來入手..重點研究Land of Lisp和Practical Common Lisp這兩本書..如果你認真的看完..並且認真的實踐過了..那麼大部分CL的知識你應該就掌握了..

然後就應該投身於項目之中了..比如網上的那麼多CL開源項目可以參與..即使不提供代碼也可以下來閱讀學習..

其實CL有很多大項目的..並不只局限於傳統的AI研究..

像binghe學長就是很成功的例子..(博客地址http://tianchunbinghe.blog.163.com/)

最重要的一點就是..不要急於求成..太著急往往是學不到重要的知識的..

另..這是我在Ubuntu下配置CL的過程..你可以借鑒一下..大家相互交流..

http://blog.csdn.net/zheda3072211120/article/details/6953303


建議從 scheme 語言入手

計算機程序構造與解釋(SICP )

使用什麼樣的開發軟體要看自己的需求


想用Lisp開發軟體的話,用Common Lisp,別用Scheme。看Practical Common Lisp和ANSI Common Lisp入門,然後看Common Lisp Recipes,這裡面有實際做項目常用到的功能。


Schme

The little schemer /SICP

DrRacket / Emacs


drracket


我推薦common lisp,做數據處理挺強大的,各個平台都有完整的開發工具鏈,主要是因為我用emacs,習慣這套東西了。其實論易上手又功能強大,我更推薦python,出點啥問題一搜一大把。固執地用lisp需要忍得住寂寞啊,哈哈


推薦一個網站

http://www.afralisp.net/


開發軟體推薦Emacs,書的話,不敢亂推薦,計算機書推薦起來真困難


還是先玩Common Lisp吧


DrRacket + The little Schemer,

No bullshit


先從右括弧學起- -


推薦閱讀:

SICP換零錢迭代方法實現,是如何寫的?
根據遞推關係,如何編程計算這個數列的前10項?
入門 Lisp 有哪些在線資料?
Emacs 的配置文件為什麼會用 Lisp 語言來寫?
Chez scheme是怎樣一個編譯器啊,聽說編譯後的scheme代碼速度能媲美C?有人用過么?

TAG:開發工具 | Lisp | Scheme | CommonLisp |