名气不是很大的一本书,本来觉得看看电子版就ok了,读了一半觉得值得收藏,以后再翻几遍。幸好没有绝版,得以买了一本新的。翻阅圈点了一遍,发现最后附录B的格言汇总部分包括了我圈点的多数内容,作者还是挺用心的。
其中的C语言部分,本来觉得翻翻就过去了,发现作者的视角与众不同。传统的C语言描述,都介绍语法,而作者总结了C的building block在实践中的应用。例如struct可以用于从函数返回多个元素,构造链表,映射数据,实现抽象数据类型,模拟面向对象编程。其他数据结构章节描述也类似。看得出来是作者在读各种open source code的时候有意总结为止。另一个例子是库的目的:重用代码、组织模块集合、组织和优化编译过程、实现应用程序的按需载入(我再增加一点:实现应用组件的动态升级)。其中一道课后题目是,for循环的十个用法,令人汗颜。
本书的特色在于,同数据结构和语言描述图书不同,涉及更多工程实践。同软件工程不同,涉及具体实现。总之和确实没有同类型的书。本书缺点是图书出的太早,那个时候还没有sourceinsight, visual slickedit,ultraedit。因此代码阅读工具比较陈旧,大家都不这么用了。另外,语言和数据结构的介绍还可以更加工程,我的感觉对比一下linux 2.4和2.6 list的实现,就可以知道仅仅list就有这么丰富的内涵,传统的数据结构课程从工程的角度讲有些落伍。
总评,4.5星,值得一线开发人员收藏。