我一直以为,学习一门编程语言,最重要的不是学习它的语法,而是它能带给你的编程理念上的更新。以这个标准而言,纵观我所接触过的、甚至写过几行代码的编程语言,只有c、java、shell、python、lisp符合这个标准。
c语言自不必说,奠定了所有计算机的基础;shell让我领略到了Unix的编程哲学(组合小的工具完成复杂的任务),多说一句,我认为Shell的精华在于管道;Java让我知道了VM这个概念,虽然我至今依然不太喜欢java;python让我初步领略到了动态脚本语言的美丽,以及其交互式的编程环境(ipython),独树一帜的缩进语法等等;而Lisp则让我在很多方面重新认识了计算的本质和编程语言的设计,诸如数据类型、递归、链表等等(《松本行弘的程序世界》也不错,只是这本书是从ruby的角度写的关于ruby设计时的各种思考和取舍)。
在读这本书之前,我粗略读的是Paul Graham的《ANSI Common Lisp》,Paul是个传奇,创业、编程、文笔、绘画样样精通,都有自己的一套,《ANSI Common Lisp》写得也非常棒,简约不简单,每章都有一些令人称赞的算法和实例,诸如最短路、Ray-Tracing算法等等,书的最后部分甚至实现了一个关于HTML的DSL。
不过,对于很多初学者而言,《ANSI Common Lisp》的学习曲线还是太陡了。偶然间,我发现了这本《Common Lisp : A Gentle Introduction to Symbolic Computation》, 本书的出版年份是1989年,那年我才一周岁,成书大概在80年代初。
本书最初吸引我的是前面几章生动形象的图表,这些图表非常形象地展示了Lisp的很多内在的数据结构的实现,以及Lisp 函数计算的过程,解决了我在读完《ANSI Common Lisp》后依然比较困惑的问题。
随着阅读的深入,收获也越来越多,特别推荐每章最后的Lisp ToolSet小节,让交互式的Lisp编程乐趣多多,比如你可以用sbcl的trace来生动地看到tail recursion和一般recursion的区别。
章节后的某些习题和Keyboard Exercise也不错的,而且本书附录就附带了习题的答案,很赞。
至于学了Lisp之后到底有何用途,以我现在的理解,我只能说,在学了一点Lisp之后,C/C++语言中的很多高级概念,诸如函数指针(lisp里面的高阶函数,(funcall xxx))、Object function(类+运算符重载)、树和链表的内在统一性、递归,迭代,循环的内在联系等等很多我在C/C++时代很难理解的概念,都在Lisp的学习过程中得到了更深入的理解。
而Python、Ruby等动态脚本语言中的很多诸如lambda之类的迷幻特性,还有C++ 0x标准里面最新的lambda函数,其始祖都是lisp。
套用binghe的一句话,大意是,“C和Lisp是编程语言的两个极端,理解了这两个,其余任何编程语言中的问题都不会再成为问题”。
Lisp入门最佳书籍
对“Lisp入门最佳书籍”的回应
《Common Lisp》热门书评
-
Lisp入门最佳书籍
38有用 1无用 xiaohanyu 2011-10-30
我一直以为,学习一门编程语言,最重要的不是学习它的语法,而是它能带给你的编程理念上的更新。以这个标准而言,纵观我所接触过的、甚至写过几行代码的编程语言,只有c、java、shell、python、lisp符合这个标准。c语言自不必说,奠定了所有计算机的基础;shell让我领略到了Unix的编程哲学(...
-
本书简单的导读
5有用 0无用 Juanito 2012-02-05
http://blog.lisp.tw/blog/2012/02/05/gentle-guide/Lisp Gentle Introduction to Symbolic Computation 第二版这本书出版于1990年,线上可免费阅读 (http://www.cs.cmu.edu/~dst/L...
-
书中的工具函数dtrace,sdraw和ppmx的地址
2有用 0无用 邻家のR君 2011-06-25
http://www.cs.cmu.edu/~dst/Lisp/dtrace/dtrace.generichttp://www.cs.cmu.edu/~dst/Lisp/sdraw/sdraw.generichttp://www.cs.cmu.edu/~dst/Lisp/ppmx.lisp...
-
写得十分中肯的语言书。
0有用 0无用 Tachikoma 2013-02-28
写得十分中肯的语言书。冗长,事无巨细,配图和代码样例精准。就算不看冗长的英文只看代码样例,也能了解个大概。对lisp辅助工具的介绍非常详尽,就算是programming ruby也没达到这个程度。习题丰富。...
-
lisp :code as data
0有用 0无用 麦克斯韦妖精 2015-04-09
lisp语言的入门级读物印象最深的两点1 : code as data的理念2: 对list处理,相当自由。自由= 强大还有就是书中大量的插图,对数据结构的detail展示非常生动...
书名: Common Lisp
作者: David S·Touretzky
出版社: Benjamin-Cummings Pub Co
副标题: A Gentle Introduction to Symbolic Computation
出版年: 1989
页数: 600
ISBN: 9780805304923