上周写毕业论文之余在看此书,简单谈一下对此书的看法。多为负面的,是因为我认为如果再版,可以改进如下方面:
1. 此书内容的直接、间接用处对绝大多数人来说都是不大的,但很遗憾作者没有谈这个事实,或者始终不愿意谈这个问题。2002年我就自己写了PE分析、修改程 序,能手工的加入一些段,并让里面的程序程序原exe的一部分跑起来而不影响原exe程序,说的直白一些,和病毒的差异就是是否做坏事和自复制。但很显然的,链接、装载与库的“知识”对7年来的专业经历没有得到太大的帮助。或者说这个内容本身不值得写成一本400多页的书,因为所有工作必须的内容用一个50页的文档就能详细说清楚。
2. 此书系统的讲了PE/ELF格式、装载,系统库原理,却用一个标题来糊弄人--“修养”。C/C++语言的书按照这个逻辑可以说成是修养,因为程序会被别人用,要顾忌别人的感受,数据结构算法的书可以说成是修养,这是能力层次的基石,但格式、装载,系统库原理怎么就和修养结合了,在下实在不明白。标题改为 《链接、装载与库》,可以让本书显得更加坦诚一些。
3. 叙述的方法也有严重问题,有些地方读了就如同感觉听了一场“广西传销”的宣讲会(虽然我从来没有去听过,但我可以想象是什么样的),某人站在台上大叫这东西如何如何好,却绝口不谈为什么好,如何好。举个例子来看,61页有句“名人名言”说是“真正了不起的程序员对自己的程序的每一个字节都了如指掌 -- 佚名”。按照这个逻辑,专注做Java就一辈子不能被称为了不起的程序员,哪怕可以对语言本身、虚拟机性能、java库、应用架构做出贡献。用一本书来表达、论述自己的观点没有问题,但前提是有论述,比如这里要说清楚,要告诉读者,知道了这每个字节的含义,有什么用、如何用、如何效能最大化的用呢?这类简 单的偏执描述意义不大,6年前在上海因为工作的关系,我能详细的说出ARM7TDMI/ARM920T处理器加电以后到操作系统加载、应用开始运行时候 cpu内每个细节,如今忘记了差不多了,但我发现现在我算真正稍微开始懂点计算机和软件了。
4. 简单问题复杂化,150页说链接,这么简单直白的内容用一个简单但详细的例子,列出需要介绍的细节,一一解释,并最后总结表格归纳,80页足以。详细的前提应该是有实质内容。至少可以这么说,前150页的内容没有我7年前网上两个晚上搜索一些凌乱的文章资料写的那个PE修改分析程序时候看的专业。
5. 最主要的问题是作者缺乏必须的经验,又拘泥于所谓“底层”的“技术”,而使得本书总体上缺乏大气。很多问题深度不够暂且不谈,本书最后的那个Mini CRT库就是本科作业水平。其实全书所说的内容,用一个Condor库为实现process checkpoint功能而做的工作做为例子,可以贯穿始末的详细展示内部机制和对日常工作的直接用处以及联系。第二部分可以通过condor的应用方法说清楚编译、链接基本概念,比较一下同一程序两套库编译出来elf里什么变了,应用层的功能怎么通过修改标准库达到了扩充,谈谈如何用这个链接和编译的分步的机制达到一些尚算高尚的功能。第三部分装载和动态链接可以通过condor以及很多类似库初期版本的局限,来说说难点究竟在什么地方,这就需要详细的加载、与操做系统交互的知识了。而codor对系统库的修改则是第四部分库与运行库的很好的例子。最关键的,这可以用一个活生生的例子,告诉读者这书的内容到底有什么用,到底对谁有用,以及为什么在99%的情况下对99%的人没有用。
说了很多缺点,当然本书也有不少优点,比如封面设计的很好,古朴现代向融合,很喜欢。
注:本书评最初发表在hi.baidu.com的老博客上,上周的内容,转这里并做了微小的修改。
转载于:https://www.cnblogs.com/nilei/archive/2009/08/24/1552990.html