脚踏实地
2010-03-08
我是经过了好几次的犹豫才买下这本书的。
第一次看到这本书,链接、装载与库这个主题让我很感兴趣,但一时拿不出钱。想想都是系统底层的东西,就算没看这本书,也不会影响到以后工作,就没买。
第二次又看到有人推荐它,心就又痒痒了,因为经济的原因,还是没买。
第三次想到这本书,是在写自己的so过程中,只知道gcc有-fpic开关,但不知道是干吗用的,还有一些别的问题也想了解清楚。虽然这些问题不知道,也不影响,但求知欲让我还是买下了这本书,同时也一并买下另一本关于系统底层的书,《Orange'S一个操作系统的实现》。这两本书我是放在一起看的。
这本书从实例出发来剖析链接、装载和库的问题,讲得十分的明白。省去了自己读系统代码的麻烦,看完以后有种“原来是这样啊”、“终于知道为什么了”的感觉。书中讨论的底层知识看似与平时工作关系不大,但我觉得这些知识是要懂的,因为一个程序员一定要知道自己的程序实际运行中都干了什么。这个观点在《编程卓越之道》中也有体现。知道了一行高级语言的代码会对应怎样的汇编代码,还知道它在特定计算机体系结构上运行的效果,才能写对程序,写好程序。运用底层语言思想编写高级语言程序,这才是脚踏实地!如果非要问,了解链接、装载和库的原理与实际工作有什么联系,我恐怕仍然答不上来。然而读完此书后,读者就能够从另一个角度看待编译、链接、运行的过程。我相信这种能看穿系统底层的视角对将来的编程、调试、优化、排错、部署的实践都会很有用,也满足了自己的好奇心。
最后说一点小体会吧。读到关于C++ ABI的话题后,顿时觉得,还是C语言的空气比较清新。。C++写动态链接库真的好虐啊。。