想读这本书,前前后后也有两次了,直到13年的年底终于下定决心买了一本。
不为别的,自己在编写以及编译调试程序的时候,难免会对其背后的机理产生好奇心,而出了问题又无可奈何的时候,更深知自己应该去了解一下幕后到底发生了什么。举个简单的例子,用gcc编译C++代码的时候,是分阶段生成代码的,且可以由我们控制,虽然平常没有分解的必要,但是了解编译器的基本工作原理还是很有益处的。而编译之后的目标文件则有链接器处理后生成可执行文件。
抽象来看,我觉得gcc手册会告诉你足够多的东西,一本翔实的操作系统书籍也会给你足够的启发,而且想真正弄清楚问题,是需要去钻研一些“鸿篇巨制“的。而至于此书会教给你什么,看一看”序言“和“目录”便基本了然。
我首先阅读了第一部分(第1章),作者们生动地把操作系统和体系结构,程序运行相关的基础核心概念表现出来。之后由于对“库和运行时”更想了解其原理,所以直接跳到了第四部分(第9-13章),这里对内存布局,运行时库的来由和基本机理,系统调用的实现机制都做了生动的描述,而在第13章,则实现了一个“麻雀虽小,五脏俱全”的C/C++运行时库。
至于剩下的第二部分,则对编译,目标文件(PE,COFF)和静态链接进行了深入的分析。第三部分讲“装载和动态链接”,需要读者对操作系统的程序加载有一定的理解,这一部分读起来对我来说比较吃力,接下来需要读一本操作系统方面的书补课。
对目前的开发者而言,虽然不是每个人都需要了解底层工具链以及支撑软件的基本原理,但是一个“合格”的程序员需要加强“自身修养”。如果总是停留在“知其然”的阶段,遇到了问题,很难既快又准地解决。而做到了“知其所以然”,便可以举一反三,处理问题的时候思路清晰。
还是那句话,“以不变应万变”,掌握了原理才是知其精髓。学习一门语言,就好比是阅读一个产品手册,教给你怎么用。而实现一门语言,才是“真正的开发者”。
废话说了一堆,我比较喜欢本书序言三“佚名”引用的那一段话!
知其然更要知其所以然,深入才能浅出!
《程序员的自我修养》热门书评
-
平中见奇:程序员提升自己的参考方法
83有用 2无用 Stanley 2009-06-27
老实说,在2002年还在上大学的时候,我把技术类书籍分成了三六九等,从值得看到最不值得看到顺序如下:1. 在美国工作的中国人使用中文编写的书籍:因为作者的眼界相比国内更加宽广,而字里行间流淌着中国人的思维方式,没有理解文化表达方面的障碍,行文相对活泼2. 在美国工作的人使用英文编写的书籍3. 在中国...
-
给每个新手的修养之道
70有用 7无用 你们都是坏人 2009-11-28
如果你是高手,Linux Hacker或者geek,请绕行但如果你是新手如果你曾好奇过windows系统目录下和软件目录下大堆大堆的dll文件是什么如果你曾疑惑过我写下的代码经历的怎样的历程最后怎样到达了内存,编译器每天用,它到底做了什么如果你已经学习或接触了C,汇编,计算机结构,但还是没办法把三者...
-
推荐linux c/c++程序员一读
61有用 1无用 zoufeiyy 2009-05-20
关于《程序员的自我修养》这本书,最初是在和博文的周筠老师MSN上谈起,当时听周老师提及这本书是一本关于链接和装载等系统软件知识的书籍,当时就很感兴趣,因为这方面的书在国内真的见得很少,一方面这种书似乎跟做应用开发的有距离,毕竟如果只是用用C#、Java,似乎没什么必要关心编译器、链接器在做些什么,特...
-
莫等用时再读书
36有用 3无用 云风 2009-06-01
今年二月份拿到这本书的电子稿时,还不是现在这个名字。《程序员的自我修养》这个名字听起来比原来的那个名字感觉好一些,但又让人感觉有点不知所谓。还是副标题直接:《链接、装载与库》。我更愿意接受这样的一个名字,有如那本多年前读过的英文经典:《Linkers & Loaders》。那段时间很忙,一直...
-
something after read
18有用 2无用 veryzhang 2009-11-17
今天花了一天的时间从头到尾翻了一遍, 跳过了那些有X86汇编的部分, 和分析C++ CRT中解构析构的部分, 其他的都读了一遍.读完之后唯一的感觉就是: 此书非读不可, 而且要经常读.毫无疑问作者对于链接, 装载和库这三个方面是有深刻的认识的, 于深度和广度都无可挑剔, 而且组织文字的能力也属上乘,...
书名: 程序员的自我修养
作者:
出版社: 电子工业出版社
副标题: 链接、装载与库
出版年: 2009-4
页数: 459
定价: 65.00
装帧: 平装16开
ISBN: 9787121085116