對 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 /SICPDrRacket / 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 |