誉天Cisco、RHCE、RHCA认证论坛[武汉CCNA.CCNP.CCIE.RHCE.RHCA培训]'s Archiver

mcdba 发表于 2010-1-24 12:32

The Art of UNIX Programming【UNIX程序设计艺术】

[b]UNIX程序设计艺术  UNIX编程艺术
[/b]
[b]The Art of UNIX Programming[/b]

本书的作者将Unix三十年中未见纸端的艰难胜利的软件工程智慧熔入文字。使Unix家庭成为最最具创新软件的哲学、设计模式、工具、文化和传统,Raymond将之第一次带给我们,并向我们展示它们如何影响当今的Linux和开源运动。通过大量来自顶尖项目的实例,你将学会如何运用这些智慧经验来建造更优雅、更可移植、更加好用的更加长久的软件。

TAOUP一书计560页,分为四个部分共二十二章,四个部分分别是:Context(背景),Design(设计),Implementation(实现)和Community(社群),分别介绍了Unix的历史和哲学,Unix系统的设计原则和模式,Unix上的编程语言、开发工具等实现技术,和独特的Unix社群文化。全书的结构清晰,开讲于“形而上的哲学思想”,再详细讲解哲学指导下的“设计方针”,随后轻轻点出为实现这些设计而必须的若干“形而下的实现细节”,最后满足读者“看了鸡蛋还想看下蛋的鸡”(钱钟书语)的固有好奇,绕有兴致地介绍了Unix开发者的社群和独特的社群文化。

其实与其说TAOUP是一本Unix技术书籍,倒不如说这是一本有关Unix技术的哲学书和历史书,这点从出版社特地为之选择了颇具中国禅宗风格的封面便可以看出。作者在接受自由作家Robert McMillan采访时表示,“要较少地讲述 Unix 应用程序编程接口和如何完成工作的低层次细节,而要更多讲述设计模式和关于为什么应该以某种特别方式做事的高层次内容。”在这一点上,我认为Raymond做得相当成功:作为一本讲“Unix Programming”的技术书,全书几乎看不到一段源代码,作者一直是以一个技术历史学家和技术哲学家的立场,用带有文学气质的语言娓娓到来,使人如坐春风而丝毫不生厌倦。我甚至因为读这本书闹了个大笑话,在机场候机时读刚买的TAOUP入迷以致错过了换登机牌的时间而误了飞机,只好改签到次日才能成行,至今我的TAOUP里面还夹着这张贴着改期标签的机票,既做为书签,又给自己留一段有趣的回忆。

全书最值得一读的是第二部分关于Unix系统设计的部分,也是全书的重点所在,Raymond归纳了关于Unix系统设计中的十条基本原则,依次是:Modularity(模块性),Textuality(文本化),Transparency(通透性),Multiprogramming(多进程),Minilanguages(微语言),Generation(生成),Configuration(配置),Interfaces(接口),Optimization(优化),Complexity(复杂)。这些章节初读下来仿佛平淡,这些原则貌似也是老生长谈,但随着Raymond的条分缕析地加以阐释和引证,读者总是有一种大呼“原来如此”豁然开朗的感觉。TAOUP在写作风格上最为特别之处在于,Raymond在每阐述了一个原则或模式之后,马上会列举几个Unix系统上的例子来佐证,所选的例子不但生动地佐证了作者归纳的关于Unix的原则或模式,加深了读者的认识,而且让众多读者拓宽了关于Unix的知识范围,了解了许多原来不熟悉的 Unix特性或者软件工具。相信没有几个人对Unix领域的熟悉程度能和Raymond相比,他的推荐着实能让人开拓视野。同时,Raymond对例子的把握相当到火候,既能一针见血地说明问题,又点到为止,丝毫不觉冗繁。从模式的观点看,作者总结的这些原则构成了Unix系统的模式语言,它们不仅影响了Unix操作系统的构建,更影响了Unix上所有应用程序的设计,而Unix平台的使用者,在不知不觉间就浸淫在这些模式语言之间,当他们设计新的软件系统的时候,往往会不自觉地使用这些模式语言。在这本书中,读者便会发现这样一些事实,在许多非Unix软件的设计思路,其实依然滥觞于Unix系统的这些模式原则。因此,这本书的读者群不是仅限于Unix系统用户,每一个程序员都可以从中获益。

这本书的另一个特色是它的百科全书般的博大与庞杂,Raymond凭借他对Unix系统的无比熟悉,如同一位资深导游一般,游刃有余地带着一干读者在Unix系统地大观园里纵横捭阖、几出几进,时而历数各种开发工具,时而盘点众多文档格式,如数家珍般介绍着关于Unix系统的零零种种。如果没有一段时间的Unix经验的读者,恐怕真是要像刘姥姥一般感到晕头转向了;而如果你像我一样经常生活在Unix下,依然能够发现自己其实一直“视若无睹”地忽略了不少大观园里的景致。而当Raymond为你点开这些迷雾的时候,读者不禁要如梦初醒般大呼痛快了。

老子曰“天下皆知善之为善,斯不善已”。世上从来没有一样物事是完美的,更不会有一样物事能够得到世人交口称赞。网上关于此书一直争议不断,毁誉夹杂。关于TAOUP最有趣的一则批评来自Amazon上的一位匿名读者,他批评Raymond此书不过是一本“Autohagiography”,这个词由词根auto和hagiography组成,hagiography是圣徒传记,加上auto则成为“圣徒自传”。该读者对Raymond在书中表现出来的指点江山般的踌躇满志颇有微辞。不过我反倒激赏Raymond这般写书的气势,一方面,他的老资格黑客身份和他的开源运动领袖地位使他能够这样高屋建瓴,另一方面,此书得到了包括Ken Thompson(Unix和C语言发明者)、Jim Getty和Keith Packard(X11作者)等十余位Unix大佬的襄助和支持(书中不少文字出自他们笔下),这等阵容,想不霸气都难。这种感觉正如C++之父在Bjarne Stroustrup在著名的The C++ Programming Language开头就不无得意地写道“I invented C++, wrote its early definition, and produced its first implementation”,使得所有读者不得不服气地聆听教诲一样。相比于国内许多内容空洞又自以为是好板起脸孔训人的技术书籍,我宁可领教Raymond这种底气十足的激昂文字。不过TAOUP里还是有不少地方我不是十分认可,最突出的一点莫过于Raymond从写作《大教堂和集市》时候就染上的“癖好”,老是用他自己的fetchmail说事,几乎每个章节举的例子都有fetchmail,这确实也难怪人家要诘难他在写“圣徒自传”了。当然fetchmail本身并不坏,只是好比饺子好吃也不宜一年到头顿顿吃。还有一点便是Raymond似乎对面向对象思想以及各种面向对象的编程语言并非十分熟悉,再评论C++,Java的时候显得略有些力不从心。同时,关于Unix历史的描述稍显冗长而重点不够突出,显然不是每个读者都对一些闻所未闻的Unix非主流发行版本的来龙去脉感兴趣,那一段读起来稍微有点乏味。

[attach]3474[/attach]

mcdba 发表于 2010-1-24 12:32

支持一下!!!!

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.