在黑夜中前行_实用Common Lisp编程书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 实用Common Lisp编程 > 在黑夜中前行
黄健宏 实用Common Lisp编程 的书评 发表时间:2011-10-31 22:10:33

在黑夜中前行

就在两天前的晚上,我彻夜不眠地将《永生之酒》这部动画看完了。

这部作品叙事的方式很独特:一般的作品,通常叙事都是以一条时间线、单角色的角度进行的,而《永生》则将一个故事拆散,用三四条时间线分别错开,每条时间线上还有多个角色分别叙述自己的故事。

这样大胆的叙事方式,很明显产生的结果是,如果你不将整部作品看完的话,你根本不明白发生了什么事情——你看完前两三集,发现自己连故事背景都没搞清楚,因为它根本就没交代!挣扎着地将整部作品看了一半之后,你才开始对故事有些眉目,但还是不能总揽全局;忍无可忍看到最后一集,看着原本错开的几条时间线逐渐相交成一点,而分散的各路人马也最终汇集在一起,整个故事才圆满收尾。

这时你才明白导演在编剧方面的良苦用心,你发现之前让你痛苦不堪的叙事手法,到最后反而让整个故事变得更有味道。

当然,遗憾的是,并不是每个人都有机会看到这个故事的结局,也许刚开始,有一半人被特别的叙事手法吓跑了;而故事进行到一半的时候,也许另外一半人又因为忍受不了慢热的剧情而离开了,而剩下的那些人,才最终看到了整个完整的故事。

这种感觉有点像是在黑夜中前行一样——你的前方、路的尽头,有一丝微弱的光线,你知道方向就是这样,路就这一条,但你不知道还要走多久,还要走多远,你唯一能做的,就是耐着性子,一步一个脚印向前迈进。

---

某种程度上,阅读这本《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

展开全文
有用 58 无用 3

您对该书评有什么想说的?

发 表

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“在黑夜中前行”的回应

泉泉泉泉 2016-05-31 12:51:14

谢谢你

吸風飲露 2014-06-27 17:25:14

假如觉得阅读困难的话,可以先花个一天半天去看看
http://lisp.plasticki.com/show?2EF
这个儿童教程,再回来就容易了。

田永威 2013-12-02 21:08:41

看看这个 http://www.defmacro.org/ramblings/lisp.html
有人翻译了 在这里 http://www.cnblogs.com/Leap-abead/articles/762180.html

谢谢这些人

田永威 2013-12-01 11:07:55

田春

开普勒第三定律 2013-11-25 13:15:25

ls, 这货不是翻译,是江湖人称伞哥的田春冰河

落日之舞 2013-11-24 18:45:32

刚刚读到16章,开始介绍广义函数,实在受不了这SB到无奈的翻译就来网上看看有没别人在喷,结果楼主居然说这翻译能看?!
就看刚刚点燃我怒火的这句吧:
“它们并不能让你做到任何通过将带有额外努力的主方法与一些代码约定和额外输入相组合所不能做到的事情”。
这丫是人在翻译?机翻也不过就这个水平吧!这考验我汉语语法水平的长句子我前前后后看了三遍才看懂!就不能重组一下么?比如:
“事实上它们所能做到的事情,你通过在主方法中添加一些额外的代码,并配合代码约定和输入同样可以做到”
说到底,这人真是专业的翻译么?

威涛 2013-08-03 14:12:07

说得好~

2013-04-06 14:11:21

请教您一个问题:这本书第23章实现一个垃圾邮件过滤器,我的lispbox加载cl-ppcre时出现错误怎么解决?

黄健宏 2012-09-28 09:04:39

@Cnxhm 那部分没什么好看的,可以略过。

Eio 2012-09-27 15:25:56

第12章
回收性函数以及共享结构什么的,
感觉好晦涩...

Alvin 2012-02-16 23:22:58

评论写的不错

开普勒第三定律 2012-01-18 19:44:18

我放弃了,这本太难,还是原版好理解些。

纹身特湿 2011-11-11 23:59:32

完全赞同。:-)@我觉得读者们应该庆幸,这本书是由一个真正的Lisp程序员来翻译,而不是一个JAVA程序员或者外语系的三年级生。

十八哥 2011-11-11 20:32:01

学完了第三章,照着书上的代码自己写了几遍以加深理解~~后面几章读起来顺多了,希望自己能坚持读完~~