实用Common Lisp编程

出版时间:2011-10  出版社:人民邮电  作者:Peter Seibel  译者:田春  
Tag标签:无  

前言

  译者序  很荣幸,我被授权翻译Practical Common Lisp一书。本书是自1994年Common Lisp语言标准化以来,国内出版的第一本Common Lisp的中文教材。  Lisp语言家族最早诞生于1959年,它是人类历史上第二个高级程序设计语言(第一个是Fortran)。那一年,人工智能(AI)专家John McCarthy发表了具有重大历史意义的第一篇LISP论文“Recursive Functions of Symbolic Expressions and their Computation by Machine, Part I”,其中介绍了一种运行在古老的IBM 704计算机上的列表处理语言LISP(LISt Processing,列表处理),借助它可以轻松描述当时人工智能领域用到的各种算法。从此,Lisp语言在包括AI领域在内的所有主流计算机分支上,都获得了长足的发展。Lisp平台不但在IBM PC出现之前的几乎所有计算机硬件体系上均有移植,甚至在20世纪80年代还出现过专门用来运行Lisp程序的硬件——Lisp机。1994年,ANSI标准化的Common Lisp语言将之前历史上的所有现存Lisp厂商的各种语言和平台特性做了一次伟大的总结,从此语言核心不再变化,不但标准化以前的历史遗留代码只通过少量修改就可以兼容现代Lisp平台,而且标准化以后写出的所有新代码也都几乎不经任何调整就可能运行在任何一种Common Lisp平台上,无论是带有原生或是字节码编译器的,还是间接转译成C语言的,或是运行在JVM上的。目前至少有13种不同的Common Lisp语言平台可以运行在现代计算机上,其中10种还在广泛使用中,远超过它们所在的操作系统上C和其他语言编译器的数量。可以说,Lisp语言家族长达50年的发展史就是整个计算机发展史的缩影。  我从2003年大学三年级时开始学习Common Lisp语言,至今已有八个年头。当时学习它的动机基本上是出于对人工智能(传统的逻辑和推理、知识表示等方向)的个人兴趣。不过随后很快就发现,Common Lisp是一门通用的编程语言,如果不考虑其历史渊源而只从语言本身的特性来观察的话,可以说它跟人工智能毫无关系。在Practical Common Lisp一书中,作者Peter Seibel也谈到这个问题。当今有太多的人对Lisp语言存在类似的误解,包括相当多学过早期Lisp语言的人还停留在列表(List)是Lisp语言的唯一复合数据类型的认识上。如果读者从头到尾学完了这本书,就会发现Common Lisp是一门特性丰富的大型编程语言,不但提供了现代编程语言普遍支持的各种数据类型(包括各种数值类型、字符串、数组、结构体和哈希表在内),还支持几乎所有的编程范式(面向过程的、函数式的以及面向对象的),尤其带有一套特性丰富且思想独到的面向对象编程接口CLOS(Common Lisp Object System)和OO扩展接口MOP(Meta-Object Protocol)。如果要用一句话来描述Common Lisp中的OO与C++/Java/SmallTalk等语言的OO有何不同,那就是Common Lisp对象系统完全不是基于消息传递的,而是基于广义函数的。有兴趣的读者应当仔细阅读本书的第16章和第17章,其中介绍了CLOS的一些入门内容。  不过Lisp语言最吸引人的地方还在于其与众不同的程序运行方式。从C语言一路学过来的人往往把一门语言的语法及其标准函数库视为语言的全部,因为一旦程序写好,编译器就会将整个代码编译成一个可执行程序或者被其他可执行程序使用的库。接下来语言本身是什么就不重要了,重要的是程序员写出了什么功能,甚至连编译器本身是什么都不重要,因为它只是一个黑箱,除了简单的优化开关之外几乎无法调整其行为。各种Lisp语言则采用完全不同的方式来运行Lisp程序:Lisp平台本身是一个交互式的环境,它在很大程度上就是用其本身写成的。用户的Lisp代码以编译或解释的形式加载到Lisp环境中,然后跟Lisp语言或平台本身的代码直接融合在一起。换句话说,每一个Lisp程序都是对Lisp语言本身的某种形式的扩展。然后通过一个启动函数,整个程序得以运行。听到这里,读者似乎看到了Python或者Ruby的影子,但Lisp环境还有更绝的地方:几乎所有Lisp平台都允许用户将加载了用户代码的整个环境从内存中导出(dump)为一个磁盘文件。通过直接加载这个文件而不是默认的那个只含有Lisp本身的文件,可以迅速地重建导出前的Lisp环境,从而达到增量开发或者哪怕是快速加载已有Lisp程序的目的。最后,和其他语言很不同的一点是,Lisp语言规范(至少Common Lisp是这样的)不但包括了如何定义某个程序组成部分(指的是变量、函数和类这些东西)的能力,还定义了从Lisp环境中清除任何程序组成部分以及就地修改它们的能力,并在语义和功能上确保了这些操作不会破坏运行中的Lisp代码。这导致了Lisp语言的另一个重要应用:通过加载补丁,Lisp系统可以在运行中被任意修改,这对24×7的服务器端程序的平滑升级尤为有利。顺便说一句,Lisp也是最早引入垃圾收集(GC)机制的编程语言,Lisp环境中的任何对象,一旦失去了来自其他对象的引用,就会在某个时刻被GC系统从内存中清除掉。  读者可能已经注意到了我在不停地混用Lisp和Common Lisp两个概念。这有两层含义:首先,存在Common Lisp之外的Lisp语言,更准确地说是Lisp方言(dialect),至少包括了Emacs Lisp、AutoLISP、Scheme、Racket(前身是PLT Scheme)和Clojure,其中最后一个是高速发展中的新兴Lisp方言;其次,所有Lisp家族的语言都有很多共性,除了上面描述中带有Lisp而非Common Lisp字样的部分以外,还有最大的也是初学者最容易看到的一点,那就是所有Lisp方言都使用前缀表达式和用小括号表示的列表,例如 1+1 在Lisp中将写成(+ 1 1)。很多初学者一开始都不适应前缀表达式,但我认为前缀表达式是有很多优点的:首先,它彻底消除了运算符结合性问题,令表达式毫无歧义可言;其次,它让语言处理器更加简单高效,避免了语法分析的困难。当然,一旦习惯了也就感觉没什么了。  学习本书对更好地使用其他Lisp方言无疑是大有帮助的。在翻阅书店里关于AutoLISP(AutoCAD计算机辅助设计软件的扩展语言)的各种书籍时,我经常痛心疾首地发现这些图书的作者虽然精通AutoCAD所提供的Lisp编程接口,但写出的AutoLISP代码要么极为难看,要么缺乏效率、滥用内存。AutoLISP在语法上跟Common Lisp非常接近,本书的大部分内容都适用于AutoLISP。因此我强烈推荐所有AutoLISP程序员阅读本书以加强自身的Lisp素养。同样的问题对于Emacs Lisp(GNU Emacs文本编辑器的扩展语言)来说也是一样的。Scheme系的Lisp方言区别相对大一些,如果连基本的变量和函数定义都在形式上完全不同的话(当然,思想上是没什么本质区别的),我恐怕初学者从本书中学得Scheme编程思想的机会不大,这种情况下还是推荐《计算机程序的构造和解释》、Lisp in Small Pieces和The Little Schemer等书籍比较好。  本书可以作为其他Common Lisp语言教材的学习基础。在本书的最后一章里,作者给出了很多后续的教材,在此就不一一重复了。需要特别指出的是,另一本著名的Common Lisp教材On Lisp(作者Paul Graham,也就是《黑客与画家》一书的作者)多年前已经被我和我的几位朋友共同翻译成中文版,细心的读者可以从网上轻易地找到它。On Lisp主要介绍Common Lisp的宏编程,这是Common Lisp区别于其他语言甚至其他Lisp方言的最重要特性。我相信一旦读者掌握了本书中关于宏的章节以后就可以阅读On Lisp中的进阶内容,从而将自身对编程语言的认识上升到一个新的高度,不过更加符合实用原则的思路还是先把本书读完。  Common Lisp绝不是一门过时的编程语言,整个Common Lisp社区一直都在高速的发展之中,近几年的发展尤为迅速。在我学习Common Lisp的这些年里,我亲眼目睹了几个Common Lisp平台从无到有(ECL、ABCL)或者发展壮大(SBCL、Clozure CL)的过程。经典平台(CMUCL、MCL)也得到了良好的维护并始终跟进操作系统的自然发展。随着计算机硬件的高速发展,即便相对保守的Common Lisp商业平台也开始或即将开始支持对称多处理器(SMP),其中LispWorks和Scieneer CL都以SMP支持作为主要卖点。第三方软件包长足发展,虽然尚未达到Perl社区CPAN的水平,但常用的工具包一应俱全,其中不乏高质量的大型项目。近年来最新的成果Quicklisp包管理平台,更是将Common Lisp第三方软件包的安装过程提升到了前所未有的便捷程度。免费平台越来越好,商业平台依然昂贵,开源工具蓬勃发展,所有这些都暗示着Common Lisp语言还保持着旺盛的生命力,唯一的问题是如何让更多的国内计算机领域爱好者了解它。这就是我翻译本书的目的所在。  过去8年里,我一直活跃在国内和国际Common Lisp社区的前沿。我在大学本科的最后两年学完了Common Lisp语言语法的主要部分,读完了包括本书在内的几本最经典的Lisp书籍,并已经能够在当时最常见的CMUCL平台(CMU Common Lisp)上编写一些简单的程序。后来在网易工作的5年里,我在工作之余从头研究了一遍Lisp语言的发展史,亲身体会了包括Lisp机在内的十几种不同的Common Lisp平台或实现,并自费购买了价值数千美元的商业开发环境LispWorks,拥用三种主流操作系统上的License。在网易从事Linux系统管理工作期间,我用Common Lisp从头实现了一万行源代码规模的SNMP简单网络管理协议工具包,它可以为任何服务器端Common Lisp程序添加通过SNMP协议进行远程监控的能力,也可以作为基于Common Lisp的网络监控系统的基础。我还在过去3年里参与维护了Common Lisp社区两个最重要的可移植网络库之一:usocket,并由于SNMP库的需要将其从原本只支持TCP扩展到了同时支持UDP,其中对于LispWorks的UDP支持代码是完全从头写的,因为官方并不支持。2009年,我向国际Lisp会议的投稿被接受,并作为会议论文集的一部分出版。我是长期担任水木社区函数型编程板块的板主之一,专门负责Lisp方向的讨论和技术分享。2011年7月,我离开网易以后开始全职从事商业Lisp软件相关的开发工作。可能我还不是一个很好的译者,但作为一个经验丰富的Common Lisp程序员,我相信自己翻译这本书是合适的。  计算机领域每天都在高速发展,新语言和新技术的产生速度早已超过了一般人的学习速度。对于一个计算机领域的从业人员或爱好者来说,学习通常是为了更好地应用,把所有时间都用来学习而无暇具体应用也是本末倒置。在这种情况下,有选择地学习最有用、最不易变质的知识,以及甄别各种计算机知识的重要程度和相互关系的能力就显得非常重要了。从计算机语言的发展历史来说,如果一门语言可以存活50年,那么它的内在生命力很可能保证其继续长期存活下去,一个人用这门语言写下的代码也将比其他语言的代码更有可能长久地造福后人。  总之,希望这本书能将读者顺利带入Lisp领域。学习一门新的语言总是要花些成本的,但我想说,和其他任何语言相比,花在理解Lisp上的时间和精力将绝对是物超所值的,即便相当多的读者可能没有机会在短期内将Lisp用于他们的日常工作。之所以这样说是有原因的:C和Lisp是编程语言的两个极端,大多数人已经熟悉了C的那一端,但如果他们还熟悉另一端的话,那么迅速理解几乎所有其他的编程语言将不再是问题。  译者简介  田春,网名“冰河”,Glority Software资深软件工程师,前网易杭州研究院高级开发工程师和系统管理员,资深Common Lisp程序员;2001~2005年就读于浙江大学,2003年起开始学习Commom Lisp,精通Lisp史和各种实现,2007年起成为 LispWorks 付费用户;Common Lisp社区的网络专家,开源项目cl-net-snmp(SNMP协议库)的作者,usocket跨平台网络库的主要维护者,common-lisp.net站点管理员,水木社区(newsmth.net)函数型编程语言(FuncProgram)版主,美国Versata/Gensym公司技术顾问;曾在ILC 2009(国际Lisp会议)上发表学术论文,在《程序员》杂志上发表Common Lisp专题文章;曾在2008年翻译了Paul Graham的On Lisp一书,并在网上撰写过大量相关的技术文章。

内容概要

《实用Common Lisp编程》是一本不同寻常的Common
Lisp入门书。《实用Common
Lisp编程》首先从作者的学习经过及语言历史出发,随后用21个章节讲述了各种基础知识,主要包括:REPL及Common
Lisp的各种实现、S-表达式、函数与变量、标准宏与自定义宏、数字与字符以及字符串、集合与向量、列表处理、文件与文件I/O处理、类、FORMAT格式、符号与包,等等。而接下来的9个章节则翔实地介绍了几个有代表性的实例,其中包含如何构建垃圾过滤器、解析二进制文件、构建ID3解析器,以及如何编写一个完整的MP3
Web应用程序等内容。最后还对一些未介绍内容加以延伸。
  《实用Common Lisp编程》内容适合Common Lisp初学者及对之感兴趣的相关人士。

作者简介

Peter Seibel 从作家演变成程序员,又从程序员演变成作家,其职业生涯可谓一波三折。他在获得英语专业学士学位后做过一段时间的记者工作,后来被Web所吸引。在20世 纪90年代早期,他用Perl建立了Mother Jones杂志和Organic Online网站。他作为WebLogic的早期雇员参与了Java革命,随后又在加州大学伯克利分校教授Java编程。他也是第二代Lisp程序员之 一,并曾经是Symbolics的早期股东。2003年他辞去技术工作,潜心研究Lisp,并凭借本书获得Jolt生产效率大奖。2009年出版了名噪一 时的访谈录《编程人生》(Coders at Work)。

书籍目录

第1章 绪言:为什么是Lisp 
 1.1 为什么是Lisp 
 1.2 Lisp的诞生 
 1.3 本书面向的读者 
第2章 周而复始:REPL简介 
 2.1 选择一个Lisp实现 
 2.2 安装和运行Lisp in a Box 
 2.3 放开思想:交互式编程 
 2.4 体验REPL 
 2.5 Lisp风格的“Hello, World” 
 2.6 保存工作成果 
第3章 实践:简单的数据库 
 3.1 CD和记录 
 3.2 录入CD 
 3.3 查看数据库的内容 
 3.4 改进用户交互 
 3.5 保存和加载数据库 
 3.6 查询数据库 
 3.7 更新已有的记录——WHERE再战江湖 
 3.8 消除重复,获益良多 
 3.9 总结 
第4章 语法和语义 
 4.1 括号里都可以有什么 
 4.2 打开黑箱 
 4.3 S-表达式 
 4.4 作为Lisp形式的S-表达式 
 4.5 函数调用 
 4.6 特殊操作符 
 4.7 宏 
 4.8 真、假和等价 
 4.9 格式化Lisp代码 
第5章 函数 
 5.1 定义新函数 
 5.2 函数形参列表 
 5.3 可选形参 
 5.4 剩余形参 
 5.5 关键字形参 
 5.6 混合不同的形参类型 
 5.7 函数返回值 
 5.8 作为数据的函数——高阶函数 
 5.9 匿名函数 
第6章 变量 
 6.1 变量的基础知识 
 6.2 词法变量和闭包 
 6.3 动态变量 
 6.4 常量 
 6.5 赋值 
 6.6 广义赋值 
 6.7 其他修改位置的方式 
第7章 宏:标准控制构造 
 7.1 WHEN和UNLESS 
 7.2 COND 
 7.3 AND、OR和NOT 
 7.4 循环 
 7.5 DOLIST和DOTIMES 
 7.6 DO 
 7.7 强大的LOOP 
第8章 如何自定义宏  
 8.1 Mac的故事:只是一个故事 
 8.2 宏展开期和运行期 
 8.3 DEFMACRO 
 8.4 示例宏:do-primes 
 8.5 宏形参 
 8.6 生成展开式 
 8.7 堵住漏洞 
 8.8 用于编写宏的宏 
 8.9 超越简单宏 
第9章 实践:建立单元测试框架 
 9.1 两个最初的尝试 
 9.2 重构 
 9.3 修复返回值 
 9.4 更好的结果输出 
 9.5 抽象诞生 
 9.6 测试层次体系 
 9.7 总结 
第10章 数字、字符和字符串 
 10.1 数字 
 10.2 字面数值 
 10.3 初等数学 
 10.4 数值比较 
 10.5 高等数学 
 10.6 字符 
 10.7 字符比较 
 10.8 字符串 
 10.9 字符串比较 
第11章 集合 
 11.1 向量 
 11.2 向量的子类型 
 11.3 作为序列的向量 
 11.4 序列迭代函数 
 11.5 高阶函数变体 
 11.6 整个序列上的操作 
 11.7 排序与合并 
 11.8 子序列操作 
 11.9 序列谓词 
 11.10 序列映射函数 
 11.11 哈希表 
 11.12 哈希表迭代 
第12章 LISP名字的由来:列表处理 
 12.1 “没有列表” 
 12.2 函数式编程和列表 
 12.3 “破坏性”操作 
 12.4 组合回收性函数和共享结构 
 12.5 列表处理函数 
 12.6 映射 
 12.7 其他结构 
第13章 超越列表:点对单元的其他用法 
 13.1 树 
 13.2 集合 
 13.3 查询表:alist和plist 
 13.4 DESTRUCTURING-BIND 
第14章 文件和文件I/O 
 14.1 读取文件数据 
 14.2 读取二进制数据 
 14.3 批量读取 
 14.4 文件输出 
 14.5 关闭文件 
 14.6 文件名 
 14.7 路径名如何表示文件名 
 14.8 构造新路径名 
 14.9 目录名的两种表示方法 
 14.10 与文件系统交互 
 14.11 其他I/O类型 
第15章 实践:可移植路径名库 
 15.1 API 
 15.2 *FEATURES*和读取期条件化 
 15.3 列目录 
 15.4 测试文件的存在 
 15.5 遍历目录树 
第16章 重新审视面向对象:广义函数 
 16.1 广义函数和类 
 16.2 广义函数和方法 
 16.3 DEFGENERIC 
 16.4 DEFMETHOD 
 16.5 方法组合 
 16.6 标准方法组合 
 16.7 其他方法组合 
 16.8 多重方法 
 16.9 未完待续 
第17章 重新审视面向对象:类 
 17.1 DEFCLASS 
 17.2 槽描述符 
 17.3 对象初始化 
 17.4 访问函数 
 17.5 WITH-SLOTS和WITHACCESSORS 
 17.6 分配在类上的槽 
 17.7 槽和继承 
 17.8 多重继承 
 17.9 好的面向对象设计 
第18章 一些FORMAT秘诀 
 18.1 FORMAT函数 
 18.2 FORMAT指令 
 18.3 基本格式化 
 18.4 字符和整数指令 
 18.5 浮点指令 
 18.6 英语指令 
 18.7 条件格式化 
 18.8 迭代 
 18.9 跳,跳,跳 
 18.10 还有更多 
第19章 超越异常处理:状况和再启动 
 19.1 Lisp的处理方式 
 19.2 状况 
 19.3 状况处理器 
 19.4 再启动 
 19.5 提供多个再启动 
 19.6 状况的其他用法 
第20章 特殊操作符 
 20.1 控制求值 
 20.2 维护词法环境 
 20.3 局部控制流 
 20.4 从栈上回退 
 20.5 多值 
 20.6 EVAL-WHEN 
 20.7 其他特殊操作符 
第21章 编写大型程序:包和符号 
 21.1 读取器是如何使用包的 
 21.2 包和符号相关的术语 
 21.3 三个标准包 
 21.4 定义你自己的包 
 21.5 打包可重用的库 
 21.6 导入单独的名字 
 21.7 打包技巧 
 21.8 包的各种疑难杂症 
第22章 高阶LOOP 
 22.1 LOOP的组成部分 
 22.2 迭代控制 
 22.3 计数型循环 
 22.4 循环集合和包 
 22.5 等价?然后迭代 
 22.6 局部变量 
 22.7 解构变量 
 22.8 值汇聚 
 22.9 无条件执行 
 22.10 条件执行 
 22.11 设置和拆除 
 22.12 终止测试 
 22.13 小结 
第23章 实践:垃圾邮件过滤器 
 23.1 垃圾邮件过滤器的核心 
 23.2 训练过滤器 
 23.3 按单词来统计 
 23.4 合并概率 
 23.5 反向卡方分布函数 
 23.6 训练过滤器 
 23.7 测试过滤器 
 23.8 一组工具函数 
 23.9 分析结果 
 23.10 接下来的工作 
第24章 实践:解析二进制文件 
 24.1 二进制文件 
 24.2 二进制格式基础 
 24.3 二进制文件中的字符串 
 24.4 复合结构 
 24.5 设计宏 
 24.6 把梦想变成现实 
 24.7 读取二进制对象 
 24.8 写二进制对象 
 24.9 添加继承和标记的结构 
 24.10 跟踪继承的槽 
 24.11 带有标记的结构 
 24.12 基本二进制类型 
 24.13 当前对象栈 
第25章 实践:ID3解析器 
 25.1 ID3v2标签的结构 
 25.2 定义包 
 25.3 整数类型 
 25.4 字符串类型 
 25.5 ID3标签头 
 25.6 ID3帧 
 25.7 检测标签补白 
 25.8 支持ID3的多个版本 
 25.9 版本化的帧基础类 
 25.10 版本化的具体帧类 
 25.11 你实际需要哪些帧 
 25.12 文本信息帧 
 25.13 评论帧 
 25.14 从ID3标签中解出信息 
第26章 实践:用AllegroServe进行Web编程 
 26.1 30秒介绍服务器端Web编程 
 26.2 AllegroServe 
 26.3 用AllegroServe生成动态内容 
 26.4 生成HTML 
 26.5 HTML宏 
 26.6 查询参数 
 26.7 cookie 
 26.8 小型应用框架 
 26.9 上述框架的实现 
第27章 实践:MP3数据库 
 27.1 数据库 
 27.2 定义模式 
 27.3 插入值 
 27.4 查询数据库 
 27.5 匹配函数 
 27.6 获取结果 
 27.7 其他数据库操作 
第28章 实践:Shoutcast服务器 
 28.1 Shoutcast协议 
 28.2 歌曲源 
 28.3 实现Shoutcast 
第29章 实践:MP3浏览器 
 29.1 播放列表 
 29.2 作为歌曲源的播放列表 
 29.3 操作播放列表 
 29.4 查询参数类型 
 29.5 样板HTML 
 29.6 浏览页 
 29.7 播放列表 
 29.8 查找播放列表 
 29.9 运行应用程序 
第30章 实践:HTML生成库,解释器部分 
 30.1 设计一个领域相关语言 
 30.2 FOO语言 
 30.3 字符转义 
 30.4 缩进打印器 
 30.5 HTML处理器接口 
 30.6 美化打印器后台 
 30.7 基本求值规则 
 30.8 下一步是什么 
第31章 实践:HTML生成库,编译器部分 
 31.1 编译器 
 31.2 FOO特殊操作符 
 31.3 FOO宏 
 31.4 公共API 
 31.5 结束语 
第32章 结论:下一步是什么 
 32.1 查找Lisp库 
 32.2 与其他语言接口 
 32.3 让它工作,让它正确,让它更快 
 32.4 交付应用程序 
 32.5 何去何从

编辑推荐

由塞贝尔编著的《实用Common Lisp编程》展示了Lisp的威力,不仅表现在传统领域上,例如仅使用短短26行代码就开发出一个完整的单元测试框架,而且还表现在一些全新的领域上,诸如解析二进制MP3文件、构建浏览歌曲集的Web应用、在Web上传播音频流等。读过本书,你将体会到Lisp具有Pytl-ion等脚本语言的简洁性、C++的高效性,以及在设计语言扩展时无与伦比的灵活性。    《实用Common Lisp编程》内容适合Common Lisp初学者及对之感兴趣的相关人士。

图书封面

图书标签Tags

评论、评分、阅读与下载


    实用Common Lisp编程 PDF格式下载


用户评论 (总计152条)

 
 

  •   还好。正在学习函数式编程,就买了一本。从《黑客和画家》之后,lisp就慢慢的热起来了。
    想参加一些开源项目,所以要加油了。欢迎交流。

    怎么说呢,编程还是思想重要,最好是现精通一门(精通的概念就是想写东西,语言不是你的障碍),然后去扩展。

    函数式编程和普通的面向对象编程和过程式编程很不一样。。
    现在就很受面向对象的禁锢。
  •   市面上少有的介绍Lisp编程的书籍,内容不错,值得一看
  •   收到书,感觉挺不错的,不过不是一本入门级的书哦,可以试着找别的书入门一下,我之前是在图书馆找到的,一本挺旧的书,比较找的不过是LISP的,或者找ON LISP的中文看一下,总的话,觉得还可以,至少还可以知道怎么搭载环境。
  •   lisp入门学习,应该不错!
  •   一般都是从《黑客与画家》那里开始对Lisp感兴趣的,***mon Lisp 不错,你值得拥有!
  •   应该是国内首个lisp书籍(不算早期教材),推荐对lisp感兴趣的人阅读

    基本上循序渐进,从一个个小项目中带领读者深入lisp世界
  •   lisp入门经典,不容错过!
  •   还没有看,纸张很不错,摸起来很舒服。
    从目录看内容很多,希望可以从中获取lisp的思想真谛。
  •   lisp是一门神奇的语言呀 , 虽然还没有仔细看
  •   lisp无疑是上一代程序员留给我们的一大瑰宝,作者和译者也都是高手,心情很激动。
  •   刚看了几页,还不错,好像有人说原著的脚注没有了,可是我看有注释的呀,先看把,反正有原版的 实在不行两本一起看,不过lisp的中文书实在少得可怜呀。有一本看看不错了。
  •   学lisp不错的书~~
  •   Lisp,大神级别的工具!努力学习中.......
  •   学习lisp必备
  •   读过多次英文版本,中文版本还比较顺。程序员高阶自我修炼,必学lisp
  •   很好的展现***mon lisp的哲学与实用性的时间方案
  •   没用过emacs的建议不要通过lisp on box做实验,太痛苦了。
    直接在linux下装个clisp,通过vi写代码,clisp执行,简单方便。
  •   第一本中文lisp,不错。
  •   翻译的比较严谨,很少加工,逻辑非常严密。 实践性强的章节看的还是比较赏心悦目的,特别是23章开始,逐渐拾起前面一骨碌塞过来的语言基础知识,慢慢融会贯通。这时候你就知道,原来这些特性是这样用的。 实践的内容趣味性也很强,为了搞懂23章的**邮件过滤器,还专门学习了贝叶斯定理相关的内容。 后面实践的项目会用到前面的结果,作者对内容构思的不错。 总而言之,对于真正对语言感兴趣的人来说,是一本很好的入门书。
  •   书质量很好,同类书国内极少见。译者很年轻,很有才华。计算机类的书都比较贵,不过用了10元礼券,还行,可以接受。这种计算机语言使用起来很直接,学C之前可以学。
  •   好多天过去了 一直忙着考试 也没写评论 实在很抱歉 书很不错 纸质非常漂亮 不过我是学C++的 段时间没可能接受不了书中的精华 所以对书中内容不便做评论 物流很不错 当当的物流和书的质量一直是我最满意的 赞!!!
  •   纸质很不错,印刷质量也很好。内容一开始看会觉得很困难,慢慢熟悉以后就会好很多了
  •   选择当当的原因,不只是因为价格便宜一些,同时,其送货的速度,真的特别快了。
  •   终于发货了,三天后看书!盼啊
  •   还没看完,学习
  •   好像是不多的一本关于***monLisp的中文书籍,没得选择,先买本看了。
  •   好啊,感谢啊
  •   和原文配套饮用效果更佳
  •   现在但了7章了,收获不小,是本难得的CLisp方面的好书
  •   就这一本,没得想
  •   看完了前两章,感觉还可以。PS:英文的原著我没看过。
  •   非常好,看了之后收益匪浅。
  •   noce book
  •   还买开始看
    当当的送货速度不敢恭维
    但是这本书应该不错
  •   我正在等待中
  •   没办法 修改订单。。。

    管理员能不能取消订单啊。。。
  •   还要等多久啊?
  •   看了《黑客与画家》后,对于作者说的小众语言的优势,在于想自己做出有竞争力的产品的人来说,LISP是一门不错的开发语言,网上看到黑客们(不是作恶的骇客)必学的5个语言中赫然有LISP的语言后,果断就来买了这本书,虽然我还没想用这门语言带入我的日常工作(也没有这个条件),但是学习下函数式(虽然LISP群里的大大说我被误导了,可网上搜索依然都是说函数式的)的编程语言的思想也是不错的,从各方面看,C类的语言也正在像函数式语言的一些特性靠拢,这本书也是能找到的少数的中文书了,希望能通过这本书,让我能了解到LISP的魅力。
  •   以前之学过 c语言风格的语言,第一次接触lisp,很多思维还没转变过来,比如lisp的宏,还在适应。
  •   Lisp书籍很少,中文版就更少了。上图书馆借了一本,看了几章,感觉还好,翻译质量也还过得去,至于网上说翻译非常糟糕是有点夸张了。这本书的特色就是实践性很强,但缺点也是显而易见的,要回头查阅相关的知识有点困难,要是有一些附录内容以供查阅的话就更好了。这样的话,我们只能另外到网上去下载CLtL或者CLHS之类语言规范手册了。因为这种书出版量会比较少,所以虽然可以借阅到,但仍然快速入手一本,以免断货。
  •   ***mon Lisp的入门经典,理论与实践相结合。适合感兴趣的,或真正能用到的。
  •   想通过学习,认识AI和在工作中能用到lisp,从浅入深用连贯的实例来让读者学习一个新的语言。
  •   入门的话推荐Paul Graham的ANSI ***mon Lisp,
    这本书没有索引是硬伤
  •   国内第一本讲LISP的书藉,无论如何都值得买一本珍藏。
  •   让我学会了lisp,不过看完了还有点意犹未尽,难度再高点就好了。
  •   很少LISP的书籍啊。。。。。。。。。。值得看
  •   在编程思想上,LISP显得比较另类,但不是滑稽平庸的另类,而是内涵精彩的另类。目前暂不打算用它做什么大东西,光是修炼一下思维还是挺好的。
  •   略微翻了下,冰河老大的翻译质量……好吧确实有点生硬,不过我觉得这个可以理解,毕竟lisp的中文翻译,貌似没多少人在作,所以术语上的统一、翻译上的不流畅,都是可以理解的。英文原版我还会继续看,拿中文版对照一下吧,技术书籍还是看英文原版比较好~~
  •   吸引人的一本书,开始就有具体例子,直接上手写程序
  •   包装不错, 内容很充实, 值得珍藏
  •   看到翻译者自己介绍,感觉坚持就是胜利。
  •   正在看,类容不太好理解
  •   翻译巨烂,看原文都比看中文的明白, 东西还是好东西
  •   翻译的确实不怎么样,太程序化思维了
  •   预定了,快出来吧
  •   作者对lisp的理解很深刻,但是对翻译的理解就远远不如了
  •   比较厚,同时也在看其他书,这本仅翻了翻,感觉是比较枯燥。。
  •   某些天外飞仙般的函数和宏招之即来有的根本就在后面才定义(如let*)有的根本就没定义.
    即便前面提到过的,如果忘记细节去找由于没有索引也老半天才能翻到.

    那么书中大半内容介绍语言的部分,又不齐全又不深入,有啥用?砍掉然后翻译个ansi ***mon lisp捆绑销售算了....
  •   翻译的太生硬,有点google翻译器翻译的感觉。。。
  •   从书本身的内容来讲是很不错的,正如其名,书的内容很有实践性和操作性,在涵盖了Common Lisp语言多数特点的同时也有不少很好的例子,相比而言比Paul Graham的ANSI Common Lisp一书更容易理解。可惜,这本书的翻译水平让人有点不敢恭维。从译者的介绍来看,技术水平应该是很高的,可惜翻译还需要的文字功底译者似乎就比较欠缺了,翻译的行文感觉不符合汉语的表达习惯,更像是从英文直译过来的。我在阅读的时候遇到看不太明白的句子时,只好对照下载的英文原版,才能正确的理解。
  •   写的很跳跃,而且macro没有讲清楚。
  •   受《黑客与画家》、《如何成为一名黑客》、《人工智能:一种现代方法》的影响,知道了Lisp语言,随即到亚马逊上入手了这本书——当时能找到的关于Lisp的中文书真的并不是很多。非常感谢译者,在看了很多Lisp的资料以后,你才会认知到这本书翻译的非常“扎实”。不过,其实一开始我也觉得晦涩难懂,但这其实是书本身的结构所造成的错觉——例如我一上来就被第三章给吓到了。当然,本人的起点比较低。只要你静下心来,不急不躁地学习这门古老而纯粹的语言,你会发现这本书越读越有意思,并且非常好的体现出了Common Lisp的应用价值(而不仅仅是教学所用)。我的建议是,一边到网上去看看Lisp的文献,一边有计划的看本书,读到第十三章左右的时候,就会觉得“一切都变得很有意思”,而最后,甚至会有种“顿悟”的感觉。
  •   看了黑客与画家来的,认识田春的,好奇心驱使!
  •   书的内容不错,纸张也不错, 卖家态度比较诚恳,会主动来关心和解决客户的问题另外价格也算是比较便宜的...
  •   好久没有看到这样的好书了翻译就是专业的 Lisp 程序员翻译的,很久没有看到由专业的程序员翻译的书了。赞!!!!!!!!!!!!至于内容,更牛掰,不信,买来看看,保证你不会后悔。
  •   第一次在AMAZON上买书无论书 还是 快递 都令人很开心虽然以前了解一些关于LISP的资料也学过ELISP(P.S.就是那本红皮的书)这是我第一本到手的实体书就让这本书作为我踏入AI以及函数式编程领域的开始
  •   因为唯一所以5星,翻译还行
  •   1.此书翻译的还可以。有些人说翻译的不好,我怀疑他们是不是要求一个程序员的文字功力和傅雷一样?2.确实讲得有点难,但Lisp本身就和我们原来学的面向过程、面向对象很不一样,不可能指望像Python一样三五天学会。但作者其实讲得非常专业、非常细致。下载一个lispbox,跟着作者讲的一步步实践,基本是能学会的。
  •   看的不是很懂。不过,看过lisp后,对python却感到更加容易了。
  •   本来内容不错, 就是翻译的水平啊~~~
  •   买回来感觉挺好,我挺喜欢的
  •   挺适合初学者看的,不错!
  •   有些内容根本就没讲清楚。不适合入门
  •   Common Lisp入门书,很不错
  •   内容不错值得学习!!
  •   慢慢研究,时候没学过语言的人学习
  •   伞哥翻译的,经典的书还是纸质版的仔细看吧
  •   这种书有提升功力的用途
  •   学习lisp很好的一本书
  •   好的译者 好的作者
  •   实用、好看、推荐
  •   学得好玩,还没看
  •        翻译的书读起来,很费劲。得自己去猜测理解,里面是什么意思。 有点郁闷。
      
      自己英语不好,但相比而言,看来还是,英语学好,读原版哈。。。
      可惜的是原版不便宜啊。。。天哪,什么时候原版书能便宜。。。?
  •      书是本好书,出版前就在当当第一个预定了。结果是比较失望的,学习到第18章,实在是受不了了,才找来英文版重新来过。现在已经把整本书学习了一边,回头再看看翻译的这版,才知道翻译的有多么糟糕,不知道那些觉得翻译的还不错的人有没有把书认真看完。就拿我回头看这本书的实践章节做个例子----第23章270页:“BYTE接受两个参数,即 需要解出(或设置)的位数量以及最右边那一位相对整数中最不重要位来说以零开始的位置。 ”。 这TM的什么意思?“相对整数中最不重要位来说”:请问,什么叫整数中最不重要位?这叫个什么概念?整数的位还分重要不重要?整数中有什么位是不重要的么?当当居然还有评论说翻译得严谨,翻译得不错。请问这些人花几十块大洋买回来得书有仔细看过么?找到原书对应的这句:
      
      “BYTE takes two arguments, the number of bits to extract (or set) and the position of the rightmost bit where the least significant bit is at position zero. ”。
      
       其中: "least significant bit" 是最低有效位的意思...。这不是在害人么?这本书中这样的例子不胜枚举。哦!我现在明白了,这个译者就是想让那些英文不太好的读者在读了这本翻译的书之后,打消学习common lisp的念头,然后他自己就可以一个人牛X哄哄了,原来是这样,呵呵。所以我建议大家还是把英语都学好,不要再被迷惑了,都去买原版书籍吧。
  •     书是本好书,出版前就在当当第一个预定了。结果是比较失望的,学习到第18章,实在是受不了了,才找来英文版重新来过。现在已经把整本书学习了一边,回头再看看翻译的这版,才知道翻译的有多么糟糕,不知道那些觉得翻译的还不错的人有没有把书认真看完。就拿我回头看这本书的实践章节做个例子----第23章270页:“BYTE接受两个参数,即 需要解出(或设置)的位数量以及最右边那一位相对整数中最不重要位来说以零开始的位置。 ”。 这TM的什么意思?“相对整数中最不重要位来说”:请问,什么叫整数中最不重要位?这叫个什么概念?整数的位还分重要不重要?整数中有什么位是不重要的么?当当居然还有评论说翻译得严谨,翻译得不错。请问这些人花几十块大洋买回来得书有仔细看过么?找到原书对应的这句:“BYTE takes two arguments, the number of bits to extract (or set) and the position of the rightmost bit where the least significant bit is at position zero. BYTE takes two arguments, the number of bits to extract (or set) and the position of the rightmost bit where the least significant bit is at position zero.”。其中: "least significant bit" 是最低有效位的意思...。这不是在害人么?这本书中这样的例子不胜枚举。哦!我现在明白了,这个译者就是想让那些英文不太好的读者在读了这本翻译的书之后,打消学习common lisp的念头,然后他自己就可以一个人牛X哄哄了,原来是这样,呵呵。所以我建议大家还是把英语都学好,不要再被迷惑了,都去买原版书籍吧。
  •     前几章还顺畅,挺好的,不过大概是从第四章开始,看起来就比较累了,特别是对于没有接触过函数式编程人来说就更加难理解一些。 相比之下,我觉得ansi common lisp写得更加清晰一些。或许这一本不是很适合从零开始学习的人。
  •     就是本垃圾书
      作者还尼码自我感觉良好
      叙述能力严重不足
      。。。。。。。。。。。。。。。。。
      。。。。。。。。。。。。。。。。。
      。。。。。。。。。。。。。。。。。
      。。。。。。。。。。。。。。。。。
      。。。。。。。。。。。。。。。。。
      。。。。。。。。。。。。。。。。。
      
  •     第一到三章写的不错,读来很有成就感,很想继续读下去,结果从第四章开始,就变味了,每读几分钟就想睡觉,不知道为什么,已经读了好多天了,从第四章到二十二章都是这样的感觉。后来仔细想想,为何差别这么大,可能是因为后面这么多章都是在讲解一些细节,语法之类的东西,而且讲的太哆嗦,明明可以用列表的方式一次性把一类语法讲清楚,他非要用一些抽象的语言来描述,结果描述的时候,用户一边读一边就得想象,否则你不知道他在写什么,这样就非常累,完全不如直接用表格和例子加注释这种方式说的清楚,他这种写法的结果就是这十几章的内容,勉强读完,还是不知道他介绍的到底是什么,语法不清楚,也没有表格,也没有容易搞混的关键字的比较。完全一头雾水。
      也许作者本人是很清楚,可惜他没有用一种清晰的方式介绍出来,读了还不如不读,因为一读这书,你很快会睡着了,然后就失去了学习这门语言的信心,再也不想学这种混乱的一米的语言了。
      这就是这本书的结果,但是值的一提的是,除了中间的这些章节,1到3还有后面的一些章节还是值的读的,但是问题就是中间的这些章节你没搞清楚,读后面的就很累。这也是悲剧,只能再找其他语法书搞清楚了,再来看这书中的那些示例章节。
  •     翻译的比较严谨,很少加工,逻辑非常严密。
      
      先讲缺点。
      以practical为书名,对于practical性质不是很强的章节讲的就不是太好了。特别是11~13章,几乎是填鸭式的塞了一堆名词,看的头疼。没有耐心很难一次性记住这些东西。关键是一大堆东西说完就走了,不再理睬,直到很后面的章节才会重新提到。
      所以很容易让人放弃继续看下去。
      
      不过实践性强的章节看的还是比较赏心悦目的,特别是23章开始,逐渐拾起前面一骨碌塞过来的语言基础知识,慢慢融会贯通。这时候你就知道,原来这些特性是这样用的。
      
      实践的内容趣味性也很强,为了搞懂23章的垃圾邮件过滤器,还专门学习了贝叶斯定理相关的内容。
      后面实践的项目会用到前面的结果,作者对内容构思的不错。
      
      总而言之,对于真正对语言感兴趣的人来说,是一本很好的入门书。
      如果只是想窥其一豹,读前三章加第7章就ok了。
  •     非常有特点的一本书,很适合有其他编程语言经验的读者。
      传说中的LISP大牛,田春,的翻译实在有点让人失望。
      说两个我印象深刻的:29页的注释3的面试翻译成了采访;喜欢把“evalute X”翻译成“求值A”。
      虽然,译者作为一个资深LISP程序员,全书基本没有出现什么技术上的问题。面试翻成采访这种明显的错误也很少。但是,类似“求值”的这种问题非常多,让人读起来非常纠结。“evaluate X”一般人都会译成“对X求值”,结果他非要写“求值X”。本来“值”就是宾语,后面还要加上“X”,而“值”和“X”根本不是同位语,这种句子读起来根本不通。
      在京东上,有人评价田春“英语和国语都不过关”。这可能有点过,但是文字上中文版的水准确实对不比起原著。
  •     如果你对Common Lisp有偏见以为是AI或学院派专用,或许你可以翻翻此书。本书除了简要的介绍了基本的Common Lisp语言规范以外,还通过实用的示例展示了Common Lisp语言的特点、优势以及作为一种通用编程语言在解决实际问题时的常用方法。
      
      个人觉得如果实在觉得《ANSI Common Lisp》或者《Cltl》枯燥冗长,那么本书也是入门CL的最佳读物了。
  •     翻译的水平确实有待提高,不过英文原版本身写得就不怎么样,可以说是讲lisp的书里水平最差的一本,读起来不爽不能完全怪翻译。目的也许是好的,想讲得通俗一点,不过一句话能说清楚的东西非要用两三句话来说,并不一定能让读者更容易理解。
      
      当然这本书的内容也不是完全没有亮点。loop其实可以算得上是另外一种语言了,在lisp里面一连七八个八九个十好几个单词一个括号也没有,确实是一件很疯狂的事情,不过loop真的很好用。这本书专门开了一章讲,介绍得还是很详细的。在这一点上真的是很符合书名里的“实用”二字,我估计喜欢scheme的人不大会喜欢loop。
      
      
      这个译者好像很喜欢lisp,on lisp也是他翻的,水平其实挺不错。
  •     她妈的《实用common lisp》,是一本翻译的极度垃圾的垃圾,好好的大作,就这样被糟蹋了,看到就想吐!!我好疼心好疼心。
      她妈的《实用common lisp》,是一本翻译的极度垃圾的垃圾,好好的大作,就这样被糟蹋了,看到就想吐!!我好疼心好疼心。
      她妈的《实用common lisp》,是一本翻译的极度垃圾的垃圾,好好的大作,就这样被糟蹋了,看到就想吐!!我好疼心好疼心。
      她妈的《实用common lisp》,是一本翻译的极度垃圾的垃圾,好好的大作,就这样被糟蹋了,看到就想吐!!我好疼心好疼心。
  •     已经很久没有看过编程语言的教科书了.
      上一本还是c++ primer. 虽然作者讲的清楚明了, 但是还是稍显枯燥.
      这本书让我感觉是在讲lisp的故事一样. 作者不愧曾经是从事英语
      写作的专业人员. 读起来很舒服. 讲解的也够清楚.
      
      比如第一次提到宏的时候有说:
      I can't emphasize enough that the Common Lisp macro shares essentially nothing but the name with the text-based macros found in C and C++. Where the C pre-processor operates by textual substitution and understands almost nothing of the structure of C and C++, a Lisp macro is essentially a code generator that gets run for you automatically by the compiler.
      象是一位高手在和我聊天, 同时又用compiler的概念来帮助理解(因为宏并不仅被compiler运行, 也被interpretor运行).
      
      而且本书采用了一个很好的交互环境. emacs+slime让我们可以轻松的做实验. 边学边实践.
      
      不仅是讲解语言细节, 第一个小数据库的例子就足以让我瞥到lisp的威力. 短短几十行的数据库实现了select, update, insert, write, load.
  •     就在两天前的晚上,我彻夜不眠地将《永生之酒》这部动画看完了。
      
      这部作品叙事的方式很独特:一般的作品,通常叙事都是以一条时间线、单角色的角度进行的,而《永生》则将一个故事拆散,用三四条时间线分别错开,每条时间线上还有多个角色分别叙述自己的故事。
      
      这样大胆的叙事方式,很明显产生的结果是,如果你不将整部作品看完的话,你根本不明白发生了什么事情——你看完前两三集,发现自己连故事背景都没搞清楚,因为它根本就没交代!挣扎着地将整部作品看了一半之后,你才开始对故事有些眉目,但还是不能总揽全局;忍无可忍看到最后一集,看着原本错开的几条时间线逐渐相交成一点,而分散的各路人马也最终汇集在一起,整个故事才圆满收尾。
      
      这时你才明白导演在编剧方面的良苦用心,你发现之前让你痛苦不堪的叙事手法,到最后反而让整个故事变得更有味道。
      
      当然,遗憾的是,并不是每个人都有机会看到这个故事的结局,也许刚开始,有一半人被特别的叙事手法吓跑了;而故事进行到一半的时候,也许另外一半人又因为忍受不了慢热的剧情而离开了,而剩下的那些人,才最终看到了整个完整的故事。
      
      这种感觉有点像是在黑夜中前行一样——你的前方、路的尽头,有一丝微弱的光线,你知道方向就是这样,路就这一条,但你不知道还要走多久,还要走多远,你唯一能做的,就是耐着性子,一步一个脚印向前迈进。
      
      ---
      
      某种程度上,阅读这本《Practical Common Lisp》(后称PCL)的过程也是如此。
      
      正如作者在第三章所言的那样,这本《PCL》并不是以一般的语言书籍作为模板的,那些循规蹈矩的语言教程总是先教你定义变量,了解语法结构,告诉你如何定义函数、对象、包,从开始到结尾,难度逐渐加大。
      
      而这本《PCL》则更符合实用原则,提倡在实践中学习——只介绍最少的理论,最少的API,然后,剩下的就是边编程边学习了:在这本书的正式开始部分,第三章,它在介绍了少量必要语法知识的前提下就用一个数据库的例子介绍了Lisp的列表操作以及文件的读写,在最后还直接了当地引入了Lisp的大杀器——宏,一点不废话,然后,在第三章之后,才开始花了几章的边幅,介绍第三章所用到的技术,在这之后,章节的编排基本就和一般的教程没有什么两样了。(其实,如果你读过pragmatic programmer的书,你可能早就适应这本书的风格了。)
      
      当然,作者偏向实践性的写作方式和章节编排,并不是为了文学创作需要或者故意刁难读者,而是,一方面,函数式编程作为一个长期被误解为“学院派”的方向,急需一些“实用型”的书籍来为普罗大众解毒;另一方面,如果一开始就长篇大论介绍函数式编程的细节和理论(lambda、eval。。。),然后才开始讲common lisp,恐怕最后反而会吓怕更多人。
      
      译者在序言中说这本书可以让新手入门common lisp,我对此并不(太)反对,但由于这本书趋向实践性的编排方式,一些理论介绍得比较简单,而如果缺少对一些关键理论的理解,就会给Lisp的学习带来困难,所以我个人感觉从这本书入门并无不可,只是难度偏高,你得有一定的耐心,将书读透才行。
      
      当然,这个过程可能是不太容易的,我猜在第三章之后,一半人放弃了,然后在第七到第九章之间,在宏的折磨下,又一半人放弃了,然后剩下的人,才有机会最终一窥Lisp之美。
      
      就像看动画一样,通常只有“熬”到最后的人,才有机会遇见美好的结局。
      
      ---
      
      最后,看到有一些人评论者抱怨这本书翻译质量不好,对此我比较难以理解:靠着一些《SICP》的经验,这本书我看得很快,只分两次就读完了,24章之后挑了两三章来看,因为没接触过宏,在宏的章节遇到了点麻烦,但没有停留太久。
      
      我个人认为这本书的整体阅读体验还是很流畅的,整本书从内容和翻译上来说都算得上佳作——我觉得读者们应该庆幸,这本书是由一个真正的Lisp程序员来翻译,而不是一个JAVA程序员或者外语系的三年级生。
      
      如果你在阅读这本书的过程中觉得举步维艰、晦涩难懂,比起怀疑翻译质量,也许更合理的做法是补充一下自己的基础知识,如果你也这么认为的话(嗯,另外一部分人也许不愿意承认这个),那么《SICP》的课程视频和书本,以及paul graham的文章,比如《root of lisp》都应该是你的好帮手。
      
      嗯,大概就那么多了,各位加油,我们在终点再会。
      
      ---
      传说中的脚注:
      
      程序员修炼之道,check list 26,"select" isn't broken
      
      root of lisp(中文):
      http://daiyuwen.freeshell.org/gb/rol/roots_of_lisp.html
      
      sicp视频(youtube的有英文字幕):
      http://www.youtube.com/results?search_query=sicp&aq=f
      http://www.youku.com/playlist_show/id_3967477.html
  •      这本书叫实用编程,是从实用角度来写的,里面的内容也很实用。
       不过虽然作者在书里写了一些入门基础知识,但从整本书的结构上来看,很不利于学习lisp语言。
       首先,基础知识诸如数据类型等说明很偏后,而且并不详尽,主次也不分明。
       其次,很多函数和宏第一次出现是不加说明的,到了后面几十页才给予解释。
       第三,很多术语只有专业计算机人员能看懂,对于非计算机类专业诸如理工科只学过C语言的人还是太难以入门了。这本书夹杂了很多计算机语言之外的内容。
       所以,对于爱好编程,本身却没有基础,或者只学过C语言的同学,本书是不适合的。对于那些熟悉数据结构、软件体系的程序员,他们如果想开始学lisp,这本书可能是合适的。
       需要称赞的是书的内容确实比较实用
  •      Lisp 作为经典的黑客语言,日久弥新。对lisp 我想补充几点,
      1 应该是lisp中首先提出垃圾回收机制;
      2 lisp 的java 平台版本clojure也很火;
      3 作为函数编程语言鼻祖 影响深远,尤其在现在硬件高度发达的情况下优点非常突出。
      
       lisp 关注者相对于其他语言确实小众了一些,销量估计也未必高,但学了他能够提升编程思想,出版社能够出这样一本书真的是替程序员着想,为了口碑,质量应该会很重视。
      
      关于译者,最早见到他是水木的社区,是lisp版主,成果颇多。后来知道他的博客,可以感觉这个人认真的有点过头:),人品也很不错。他的作品基本可以放心,不大会有什么谬误。
      不过此书读起来感觉行文稍有些滞涩,像是技术规范,可能是句式转换不太熟练(用编程语言来思考多了) 或是原文如此吧
  •     我知道这样说对辛苦翻译的作者很不公平,但我还是要客观地说出我的看法。
      我看到第十七章时实在是无法忍了。本身自己之前积累的LISP基础也就包括了基本的语法使用,此书前些的章节,不通顺的语句凑合着自己的理解也就读懂了。但是实在是乏力啊... ...靠着老本终有倒下的一天。
      看书的目的毕竟是学习而不是复习。不夸张的说,这本中文书籍我的阅读速度绝对已经慢于其他的英文版LISP教程了。
      也许是这本Practical Common LISP太难翻译所致,不过无论什么理由,译者的水平确实有待提高。
  •     本人是刚开始学lisp,看到第十章,虽然对lisp有了一些概念,但是还是觉得一头雾水.
      
      好歹也学用编程有些年头了,感觉不太正常. 不知道是翻译的问题,书的问题,还是本身lisp就是这么与众不同.
      
      
      从这本书的结构来看,和一般的教材不大一样,开头三章基本上都是和lisp语法不太相关的东西.第四章才开始进入编程语言相关的内容.讲解基本的语法什么的.然后书籍的最后部分是用实例来讲解如何完成一些功能的项目.
      
      
      在讲解和说明一些特性的时候,会使用到一些lisp的宏,但是书籍当中没有单独排版出来或者用醒目的方式单独标出来,而是把这些宏的说明内容和其他文字一起排在一起.如果看到一段文字,想回过头来查找前面的宏的使用方法,简直太难找了.
      
      
      总体感觉 ,这本书讲common lisp 的基本语法的内容讲的不清楚,然后具体使用的部分偏多.不太适合没有lisp基础的人.
      
      
  •     学习common lisp 的必读书,正在阅读中 就是没有中译本,看的比较慢,希望能够一直坚持下去,也是我认真阅读的第一本lisp书籍。书本身写的比较有趣,不晦涩
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7