第一图书网

程序员的自我修养

俞甲子,石凡,潘爱民 电子工业出版社
出版时间:

2009-4  

出版社:

电子工业出版社  

作者:

俞甲子,石凡,潘爱民  

页数:

459  

Tag标签:

无  

前言

作者序1两年前,甲子跟我提起,他在考虑写一本讲述计算机程序基本工作原理的书,由于代码背后的许多细节现在难以找到完整而又实用的资料,因此,系统性地讲述这些技术要素一定非常有意义。这是我非常感兴趣的话题,因为最近几年来,我每次给学生讲课或作技术报告时,经常会提到程序背后的一些细节知识,而当有人请我推荐一些参考资料时,我很难想得出有什么恰当的参考书可供学习。我自己也曾想过要写一点这方面的书,只是一直下不了决心做这件事情。甲子的提议让我意识到,写这样一本书的机会来了。于是,我们认真规划了书的选题。按我的建议,这应该是三卷本的书,每卷独立,合起来成一体系。第一卷是基础篇,介绍程序的基本运行过程,即是您现在看到的这本书。其他两卷还需要时日和机缘。在过去两年中,我曾经以“Inside Windows Programs”为题在多所高校作过报告,旨在介绍Windows程序背后的一些支撑技术。对于正在学习计算机或软件专业的学生,或者正在从事软件开发的工程师们,我认为理解这些支撑技术是很有必要的。试想,即使一个简单的“Hello World!”程序,也依赖于背后的输入输出库(或流库)及系统提供的模块,这种依赖性已经成为现代软件在操作系统环境下运行的一个必要条件。然而,有关这些支撑技术的系统性资料却少而又少,虽然Internet上并不缺乏任何一方面的细节信息,但是,能将程序的编译和运行过程所涉及的各种技术全面地串连起来介绍的,却尚未有先例。甲子曾经在2006年夏天跟我实习过两个月,他帮我搭建了一个在Windows已有体系结构下将交换空间重定向到远程机器物理内存的原型系统。完成这一系统并非易事,而且甲子事前并无Windows内核编程经验,但是,他凭借扎实的计算机系统软件功底,成功地打通了从页面错误(page fault)异常例程到远程机器内存管理器之间的数据通路。在这一段实习经历中,我不仅看到了他驾驭代码和系统的能力,也感受到他做事认真负责的态度。因此,当他提出要写一本介绍程序基础的书时,我认为他是非常合适的人选。考虑到写书的艰巨性,他推荐石凡同学加入进来,这才有了我们三个人的组合。我原先担心写作的进度,毕竟写这样一本书需要大量的时间投入。幸运的是,在甲子和石凡的不懈努力下,这本书终于面市了。本书讲解的内容,涉及在Windows和Linux两个系统平台上,一个应用程序在编译、链接和运行时刻所发生的各种事项,包括:代码指令是如何保存的,库文件如何与应用程序代码静态链接,应用程序如何被装载到内存中并开始运行,动态链接如何实现,C/C++运行库如何工作,以及操作系统提供的系统服务是如何被调用的。每个技术专题都配备了大量图示和代码实例,力求将复杂的机制以简洁的形式表达出来。本书最后还提供了一个小巧且跨平台的C/C++运行库MiniCRT,综合展示了与运行库相关的各种技术。关于写作这本书的功劳,我不敢掠美。在创作之初,包括拟定提纲及甄选内容方面,我跟甲子有过认真而细致的讨论;在写作过程中,我对甲子和石凡的初稿提出过一些建议,尤其在表述方面,同时我也协助他们与编辑进行了沟通和交流。对于正文的内容,我并无实质性的贡献,但基于我对甲子和石凡两位年轻人的了解,我相信他们自身的技术实践功底,以及足够的技术阐释能力。我期待这本书能够真正地提升程序员的自我修养,让程序员总是生活在“知其然,更知其所以然”的代码曼妙中。最后,我要感谢这本书的四位编辑,他们是何艳、方舟、刘铁锋和陈元玉,谢谢他们为这本书付出的努力。还要感谢博文视点团队的负责人周筠女士,谢谢她给予两位年轻作者的扶持和关爱。潘爱民2009年2月于北京微软七、作者序2两年前,我在浙江大学的一著名BBS的C++板块上担任版主,而俞甲子则是板上的资深版友(以及前版主)。那时候我对链接装载、运行库等内容比较感兴趣,自己摸索着在博客上写了一篇关于链接的入门文章,而这就是一切的开始。我猜想俞甲子可能对写这么一本书早有想法,看到我的文章正好找到了同路人。他找到了我和潘爱民老师,我们一拍即合,就开始了这长达两年的写作历程。考虑到当时俞甲子已经在链接部分有了相当的积累,因此我不得不放弃我最有兴趣的一部分转而在运行环境上做文章。我把glibc和msvcrt的源代码翻了个底朝天,了解到了许多平时不可能接触到的内幕和技术细节。事实上,这基本是一个现学现卖的过程,我一边学习着新的知识,一边把新知识组织整理写成文字。读者在看某些章节的时候,会发现这些章节的讲解过程就是一个源代码的挖掘过程,这实际上也就是我的学习过程。学习研究他人的代码是枯燥而耗时的,我很高兴能够做这样一个先行者,将我的经验写进书里,让读者能够避免重复劳动,直接获得其中的经验和关键技术。本书所讲的内容不是活跃在当今IT舞台上的高新技术,也不是雄踞计算机某个领域的王牌霸主,而是默默服务于所有计算机应用的扫地僧。也许阅读本书不能够直接在平时学习工作中的生产力上得到体现,但了解计算机的台前幕后会对读者产生潜移默化的影响。当你的程序无法启动的时候,你可能会在脑海里多设想一种可能性;当你的代码链接失败的时候,你可能会更快地意识到问题的所在;当你的程序发生非法操作的时候,你可能不至于面对微软的错误报告毫无头绪。有人总爱用“时效性”评价当今的IT技术。仿佛一项技术的生存期就只有几年。我不能说这样的想法是错误的,如今的技术的确在飞速地更替和发展。但是本书所讲的技术,大多是成型在十年前,乃至二十年前,它们是整个计算机行业技术的根本,也几乎是现在所有计算机应用的基础。在当今的计算机技术发生根本性变革之前,这些技术还将继续存在并保持活力。我很荣幸能够有机会和读者分享这些技术,但写作水平有限(我在语文课上历来不是个好学生),最终在文字和结构上颇有缺憾,只能在这里说一声抱歉。在这里要感谢我小学、初中和高中的语文老师,谢谢你们当初对我的教导,尽管最终可能辜负了你们的希望。感谢潘老师、博文视点的编辑及所有支持我们的朋友们,谢谢你们对我们的帮助。最后要感谢我的父母,没有你们,我永远不可能走到今天这一步。石凡2009年2月于杭州八、作者序3CPU体系结构、汇编、C语言(包括C++)和操作系统,永远都是编程大师们的护身法宝,就如同少林寺的《易筋经》,是最为上乘的武功;学会了《易筋经》,你将无所不能,任你创造武功;学会了编程“易筋经”,大师们可以任意开发操作系统、编译器,甚至是开发一种新的程序设计语言!——佚名念书的时候,作为标准的爱好技术的宅男,每天扫一遍各大高校BBS的技术版面,基本好比一日三餐一样平常。我对计算机技术方面的口味很杂,从汇编版到C++到Linux内核开发、Linux应用开发、游戏开发、网络、编程语言、体系结构、移动开发、开源闭源我都会参上一脚。我始终认为技术优劣取决于需求,与很多持有“编程语言血统论”的程序开发者不同,我不认为C++或Java本身有什么直接可比性,或者OOP与函数式编程谁优谁劣,我始终坚持认为作为开发者,MOP(Market/Money Oriented Programming)才是唯一不变的编程范式。于是我往往不参与那些技术、平台、语言教派之间的宗教战争,这种论战基本上每周都会有,我很佩服论战各方见多识广、旁征博引、高屋建瓴的论断,但我往往只是灌灌水调节一下思绪。相反,我很关注一些与语言、平台等相对独立的基本的系统概念方面的问题,这些问题比较具体,也比较实用,比如:为什么程序是从main开始执行?“malloc分配的空间是连续的吗?”“PE/ELF文件里面存的是什么?”“我想写一个不需要操作系统可以直接在硬件上跑的程序该怎么做?”“目标文件是什么?链接又是什么?”“为什么这段程序链接时报错?”“句柄到底是什么东西?”这些问题看似很简单但实际上有很多值得深入挖掘的地方,比如第一个问题围绕着main函数执行前后可以延伸出一大堆问题:程序入口、运行库初始化、全局/静态对象构造析构、静态和动态链接时程序的初始化和装载等。我们把这些问题归结起来,发现主要是三个很大的而且连贯的主题,那就是“链接、装载和库”。事实上,现在市面上和网络上能找到的计算机技术方面的书籍和资料中,什么都很齐全,唯独关于这三个主题的讨论十分稀缺,即使能找到一些也是犹如残缺的典籍,不仅不完整而且很多已经过时了。关于现在通用的Windows和Linux平台的链接、装载及PE/ELF文件的详细分析,实在很少见。这个领域中,最为完整、也最为权威的莫过于John R. Levine的《Linkers & Loaders》,这本书我也前前后后通读了好几遍,虽然它对链接和装载方面的描述较为完整,但是过于理论化,对于实际的系统机制描述则过于简略。我始终认为对于一个问题比较好的描述方式,是由一个很小很简单的问题或示例入手,层层剥开深入挖掘,不仅探究每个机制“怎么做”,而且要理解它们“为什么这样做”,力求深入浅出、图文并茂,尽力把每一步细节都呈现给读者。这是我一贯的想法,也是我们在本书中努力试图达到的效果。第一次有想写这样一本书的念头是在2006年底,当时我正在念研一,想起未来还有一年多漫长而又相对空闲的研究生生涯,觉得写一本这样的书大概是比较好的“消遣活动”。于是我第一时间想到了在微软研究院实习时的导师潘爱民老师,潘老师在写作技术书籍方面有很深的功底和丰富的经验。我把想法告诉潘老师以后,他十分支持,于是我又找到了当时刚好保送研究生、时间上也相对充裕的石凡,我们三个都对这个选题十分感兴趣,可谓一拍即合。当时也没多想,以为写书大概也就跟BBS发帖连载差不多吧。一旦写起来才发现自己完全轻视了写书的工作量。书中的每一个章节、每一个小段、每一个例子甚至每一个用词有时候都要斟酌很久,生怕用得不恰当误导了读者。“误人子弟”这四个字罪名可不轻,大有推出午门斩首五遍以儆效尤之过。写书的时间的确很仓促,虽然我们都是在读研时写的,按理说相对于已经工作的作者来讲,已经是有很多闲余的时间了,但还是经常手忙脚乱。想到以前看书看到作者写的序里,经常使用“时间仓促,水平有限”的话,推想作者不过是出于谦虚不免要客套一下。现在轮到自己写序了,终于感觉到了这八个字的分量。即使到现在已近完稿,我们还是心里十分忐忑,因为还有不少地方的确写得不够完善。也听到了很多第一批读者的反馈意见,很多建议都正中这本书的软肋,我们也根据大家的意见又一次进行了修改,这已经是反反复复的第N次修订了。这本书前前后后花了两年多的时间一直没有完稿,由于截稿时间快到了,我们才终于定稿,因为实在没有办法做到完美,只能向无限接近完美努力。最后,我们在“著”和“编著”之间犹豫了很久,想到本书凝聚了我们很多的心血,还是诚惶诚恐地写上了“著”字,权当给自己壮胆了。我们也相信,本书虽然没做到完美,但是它一定会给你带来一些你以前想看、想了解而又找不到的东西。或者以前在编程过程中困惑了你很久,但始终没有找到解释的问题,当在本书中终于找到答案且大呼“原来如此!”时,我们也就很欣慰了!关于本书的书名笔者们也讨论了很久,征询过很多意见,最终还是决定用“程序员的自我修养”作为书名,将“链接、装载与库”作为副标题。书名源自于俄罗斯的演员斯坦尼斯拉夫斯基创作的《演员的自我修养》,作者为了写这本书前前后后修改了三十年之久,临终前才同意不再修改,拿去出版。使用这个书名一方面是本书的内容的确不是介绍一门新的编程语言或展示一些实用的编程技术,而是介绍程序运行背后的机制和由来,可以看作是程序员的一种“修养”;另一方面是向斯坦尼斯拉夫斯基致敬,向他对作品精益求精的精神致敬。在本书的创作过程中,很多人对我们的支持和帮助难以言表。这里我要感谢博文视点的几位编辑何艳、方舟、刘铁锋和陈元玉等,他们为本书付出了很多心血;特别要感谢博文视点的周筠老师,这本书能够面世离不开她的支持和努力。另外也要感谢浙江大学的张晓龙博士,他为本书提出了很多建议,并且贡献了“DLL HELL”一节。俞甲子2009年2月于杭州

内容概要

本书主要介绍系统软件的运行机制和原理,涉及在Windows和Linux两个系统平台上,一个应用程序在编译、链接和运行时刻所发生的各种事项,包括:代码指令是如何保存的,库文件如何与应用程序代码静态链接,应用程序如何被装载到内存中并开始运行,动态链接如何实现,C/C++运行库的工作原理,以及操作系统提供的系统服务是如何被调用的。每个技术专题都配备了大量图、表和代码实例,力求将复杂的机制以简洁的形式表达出来。本书最后还提供了一个小巧且跨平台的C/C++运行库MiniCRT,综合展示了与运行库相关的各种技术。  本书对装载、链接和库进行了深入浅出的剖析,并且辅以大量的例子和图表,可以作为计算机软件专业和其他相关专业大学本科高年级学生深入学习系统软件的参考书。同时,还可作为各行业从事软件开发的工程师、研究人员以及其他对系统软件实现机制和技术感兴趣者的自学教材。

书籍目录

第1部分 简介  第1章 温故而知新   1.1 从HELLO WORLD 说起   1.2 万变不离其宗   1.3 站得高,望得远   1.4 操作系统做什么   1.5 内存不够怎么办   1.6 众人拾柴火焰高   1.7 本章小结 第2部分 静态链接  第2章 编译和链接   2.1 被隐藏了的过程   2.2 编译器做了什么   2.3 链接器年龄比编译器长   2.4 模块拼装——静态链接   2.5 本章小结  第3章 目标文件里有什么   3.1 目标文件的格式   3.2 目标文件是什么样的   3.3 挖掘SIMPLESECTION.O   3.4 ELF 文件结构描述  3.5 链接的接口——符号   3.6 调试信息   3.7 本章小结  第4章 静态链接   4.1 空间与地址分配   4.2 符号解析与重定位   4.3 COMMON 块   4.4 C++相关问题   4.5 静态库链接   4.6 链接过程控制   4.7 BFD 库   4.8 本章小结  第5章 WINDOWS PE/COFF   5.1 WINDOWS 的二进制文件格式PE/COFF 134   5.2 PE 的前身——COFF   5.3 链接指示信息   5.4 调试信息   5.5 大家都有符号表   5.6 WINDOWS 下的ELF——PE   5.7 本章小结 第3部分 装载与动态链接  第6章 可执行文件的装载与进程   6.1 进程虚拟地址空间   6.2 装载的方式   6.3 从操作系统角度看可执行文件的装载   6.4 进程虚存空间分布   6.5 LINUX 内核装载ELF 过程简介   6.6 WINDOWS PE 的装载   6.7 本章小结  第7章 动态链接   7.1 为什么要动态链接   7.2 简单的动态链接例子   7.3 地址无关代码   7.4 延迟绑定(PLT)   7.5 动态链接相关结构   7.6 动态链接的步骤和实现   7.7 显式运行时链接   7.8 本章小结  第8章 LINUX 共享库的组织   8.1 共享库版本   8.2 符号版本   8.3 共享库系统路径   8.4 共享库查找过程   8.5 环境变量   8.6 共享库的创建和安装   8.7 本章小结  第9章 WINDOWS 下的动态链接   9.1 DLL 简介   9.2 符号导出导入表   9.3 DLL 优化   9.4 C++与动态链接   9.5 DLL HELL   9.6 本章小结 第4部分 库与运行库  第10章 内存   10.1 程序的内存布局   10.2 栈与调用惯例   10.3 堆与内存管理   10.4 本章小结  第11章 运行库   11.1 入口函数和程序初始化   11.2 C/C++运行库   11.3 运行库与多线程   11.4 C++全局构造与析构   11.5 FREAD 实现   11.6 本章小结  第12章 系统调用与API  12.1 系统调用介绍   12.2 系统调用原理   12.3 WINDOWS API   12.4 本章小结  第13章 运行库实现   13.1 C 语言运行库   13.2 如何使用MINI CRT   13.3 C++运行库实现   13.4 如何使用MINI CRT++   13.5 本章小结 附录A  A.1 字节序(BYTE ORDER)  A.2 ELF 常见段  A.3 常用开发工具命令行参考 索引

章节摘录

第1部分 简介   第1章 温故而知新   1.2 万变不离其宗计算机是个非常广泛的概念,大到占用数层楼的用于科学计算的超级计算机,小到手机上的嵌入式芯片都可以被称为计算机。虽然它们的外形、结构和性能都千差万别,但至少它们都有“计算”这个概念。在本书里面,我们将计算机的范围限定在最为流行、使用最广泛的PC机,更具体地讲是采用兼容x86指令集的32位CPU的个人计算机。原因很简单:因为笔者手上目前只有这种类型的计算机可供操作和实验,不过相信90%以上的读者也是,所以在这一点上我们很快能达成共识。其实选择具体哪种平台并不是最关键的,虽然各种平台的软硬件差别很多,但是本质上它们的基本概念和工作原理都是一样的,只要我们能够掌握一种平台上的技术,那么其他的平台都是大同小异的,很轻松地可以举一反三。所以我们相信,只有你能够深刻地理解x86平台下的系统软件背后的机理,当有一天你需要在MIPS指令集的嵌入式平台上做开发,或者需要为64位的Windows或tinux开发应用程序的时候,你很快就能找到它们之间的相通之处。撇开计算机硬件中纷繁复杂的各种设备、芯片及外围接口等,站在软件开发者的角度看,我们只须抓住硬件的几个关键部件。对于系统程序开发者来说,计算机多如牛毛的硬件设备中,有三个部件最为关键,它们分别是中央处理器CPU、内存和I/O控制芯片,这三个部件几乎就是计算机的核心了;对于普通应用程序开发者来说,他们似乎除了要关心CPU以外,其他的硬件细节基本不用关心,对于一些高级平台的开发者来说(如Java、.NET或脚本语言开发者),连CPU都不需要关心,因为这些平台为它们提供了一个通用的抽象的计算机,他们只要关心这个象的计算机就可以了。  ……

媒体关注与评论

这是一本深人阐述链接、装载和库等问题的优秀图书,读来让人愉悦,你从巾可以清晰地了解程序的前世今生,彻底理解敲人的代码如何变成程序任系统中运行。通读本书不管对于开发还是trouble shootin9都会很有帮助。建议每一位希望从事系统开发、或希望更实务地理解操作系统和编译器、或不满足于只写代码的优秀程序员都拥有这样一本书。         ——邹飞,趋势科技(中国)研发中心资深软件要程师本书从大处着眼,小处着手,以通俗易懂的语言,深入浅出地对系统软件的底层形成机制进行条分缕析,正合药山禅师所谓“高高山顶立,深深海底行”。循着作者的思绪一路走来,有如醍醐灌顶。畅快淋漓。非常高兴有预览此书初稿的宝贵机会,我在浏览书稿和查核相关资料的过程中,学到了很多以前未知或知之不深的内容。         ——冯亮,阿里巴巴(中国)网络技术有限公司运维部系统架构师


编辑推荐

《程序员的自我修养:链接、装载与库》深入浅出地对系统软件的底层形成机制进行条分缕析真正提升程序员的自我修养

图书封面

图书标签Tags

广告

下载页面


程序员的自我修养 PDF格式下载



这本书写得非常好。现在编程IDE的发展已经屏蔽了程序之所以为可执行文件的过程:编译、链接、装载。它分析了Unix/Linux和Windows下的不同之处,比如说so和dll的不同。我觉得难能可贵的是,它在书的最后几章重点讨论了运行库、系统调用、包装API等在Unix/Linux下和在Windows下的原理和原理的不同之处。最后一章还演示了一个自己实现的Mini CRT 示例,看了以后觉得作者功底确实很深厚,不得不推荐一下这本书。

另外,三位作者的语言使用很得当,解释枯燥的原理时经常会有幽默性的语句出现,插图比喻也显得很生活化。从这点来看,我能在一个星期内读完这本书,几位作者对文字的驾驭也起到了很大的作用。

读完后关闭书卷,作者们为我剖析的操作系统、运行库、链接、装载、运行库 等一系列概念如一副副立体画一样,展现在眼前。虽然在大学的时候计算机类教材很枯燥,幸亏工作后能遇到这种好书,为我等程序员们归纳知识提供了很大的便利。<程序员的自我修养>这个标题名至实归。


书本身解释的还是不错的,同时买了《操作系统:精髓与设计原理》和《程序员的自我修养—链接、装载与库》两本都不错,个人感觉后一本更好一些。


以最快的速度看完了这本书,对动态库的装载链接原理有了更深的认识,尤其是对在工作中碰到的相关问题处理起来更加得心应手。


将链接编译,运行库,可执行文件等基础讲的很清楚,真不错。


C到底怎么运行、操作系统如何装载,这本书是从操作系统的角度剖析一段代码如何运行,属于硬基本功,当然啃起来很吃力,但是心里很满足


是一本学习链接、装载和库的好书。值得珍藏


链接、装载与库——正是自己想要的,希望看完能有所收获


这本书让我了解了在编译、链接过程中是怎样执行的,这对于想深入研究嵌入式是很有帮助的,还有书中后面关于库的一些我还没有去了解,相信会和前半部分一样会有更加深刻的理解的。


一个程序从代码一直到运行这个过程是怎样的?这本书里面有很多我想知道的答案,而且深入程度适中,我觉得这本书适合大部分想了解不多不少底层运作知识的程序员。


对于编译,链接和加载,之前只是一知半解,看了这本书全明白了,由于其中对于动态库&amp;amp;ldquo;全局符号介入&amp;amp;rdquo;的问题,项目上需要注意啊!


从操作系统和编译链接角度让开发人员更理解自己所写的代码会发生哪些变化,如何维护和编写更高效的代码,绝对是本好书,但不适合初学者。


作者深入剖析了程序的装载与链接的过程,很有启发意义


这本书对链接、库介绍说明的比较详细,我是初学者,某些地方看起来还是有点晕,不过通过学习还是可以理解的


一本深入学习链接库的好书


工作几年了却一直是在做应用层系统。每当遇到一些底层的问题时,总是不得其法。说不懂,其实也了解一些,但也说不出所以然。这本书我还没有读完,目前的理解是:它是一本关于程序“本质”的书——程序从我们写的高级语言代码,到底层的机器码,中间的过程是如何进行的。读完之后相信我会对这个过程有个更系统更深入的理解。当然它不一定适合所有的人。想我这样对于系统底层理解不够深刻的菜鸟,需要结合看一些操作系统的书,并反复学习。总之学无止境啊。


操作系统底层的一些东东,对了解软件运行很有帮助


个人觉得真正的程序员是应该对底层底层的东西有必要的了解的,正所谓本书所强调的程序员的自我修养。若想了解程序的是怎么加载运行的,那么这本书是你所需要的!强烈推荐!


这本书关于程序从编写到运行的机制


书很好,内容很不错,不过一直没有时间看完,在看的过程中,补了很计算机基础的东西,想深入学习下程序运行的原理的同学可以读一下,收获挺大的


学习编程的人看了会有很大的帮助。能理解程序运行的内层原理。


从代码到16进制数,很棒的书~优秀的程序员必须了解自己程序的每个字符~这就是自我修养


把编译和运行这个阶段的事情,阐述的很清楚,对提高对系统的理解、排错能力很有好处。


很少又讲连接正在与库的书,经典


嘿嘿,拿到手中迫不及待的读完了,受益匪浅,原来对连接、库等很模糊的概念,读完书后清晰了,强烈推荐给大家


国内经典的计算机书籍不多,这本可谓是很有深度,尤其是对于那些喜欢钻研,喜欢了解底层的家伙来说,我阅读这本书已经是第二遍了,从电子书,到从图书馆借来的书,再到自己去买。每次读都有新的收获,尤其是边看代码,边读书。


深入浅出,对链接、加载有较清晰的讲解


可以让读者了解代码如何转换成可执行程序的一本好书,易懂,目前看了一半,值得推荐


之前看了别人写的链接脚本不懂,所以买来看看,看了再评书的好坏。。。


对链接等原理讲述得比较详细。


1,很喜欢
2,原因是这本书就像是一把钥匙,打开了一扇正确的门,对于任何想深入了解系统方面知识的程序员,这本书绝对是入门的好书
3,作者得写作态度非常端正,尊重读者的作者同样会获得读者的尊重


我的数据库老师在课上曾经推荐过这本书,这本书的作者我也认识,现在作者已经开了公司,干得还不错。最近重读这本书,感觉作者对连接这部分讲解的不错,但是装载处理的不是很好,可能和这部分细节不多吧


这本书很不错。是我目前见过的关于C编程的比较出色的一本,对程序的实现有了很好的讲解,有助于对编程的理解。


写得非常不错,的确是一本国内不多见的优秀原创书。大家都抄来抄去,能有这么一本好书不容易,我们要爱护。我一口气读了100多页,是位年轻的作者。尽管他打着潘爱民的旗号,但是作者的探索精神,“打破砂锅纹(问)到底”的精神,都超过了潘爱民。该书适合各路人士(新手和老手)。非常希望作者能对这本书的文字和布局再仔细锤炼一下,不要赶时髦,仅保留重要的内容,以书名阐述的“修养”的严谨态度,剃除原文中那些“博克”习气的文字,文字再精炼些,修正一些编辑性错误。还有,补充书中各种论点的参考文献和阅读书目,提高可信行。那样,我觉得每位学习计算机专业的人都该在案头备这么一本书,这本书有望成长为一本该领域的圣经。各位,先睹为快!


这本书不会让你的编程水平突飞猛进, 但是对底层数据模型更加了解的人会对代码更加有发言权


对想了解一些底层技术和原理实现的很有帮助,写的也很清晰,易读,读后收获不小,虽然我的电子版的,但还是买一本


难得看到的国人写的一本计算机的好参考书。这本书虽然内容不多,一两天可以看完,但是让我感觉把很多知识都复习了一遍,颇有神清气爽的感觉~

一个小细节是书里的示意图绘图质量都很高,这种细节上认真的态度我感觉很难得——好吧,我只是个普通读者,不是特别的什么粉或者什么黑什么的——前段时间看了《C语言深度解剖--解开程序员面试笔试的秘密》,觉得水平和态度都比这本书差不少=,=


这本书太赞了!!! 内容非常 具体深入 是学习程序开发的人 值得推荐的


内容很丰富,是程序员提高自身编程素质的一剂良药,很实用,力荐!!!


书籍以linux讲解为主,windows平台为铺。总体不错。


这本书真的很好,解释了我所有的疑惑(--夸张了?)云风推荐的我觉得很值


这本书是一个程序员真正需要的东西。不要等到用到的时候再去看


作为程序员以及IT技术人员确实应该好好读一读


系统的梳理了整个编译过程,把以前零散的知识点串了起来


很棒,很精彩,即使不需要精通,了解一下也还是必要到的,适合所有没有系统了解过这方面的人


作者对系统下层很熟,我学到了不少东西。很少能看到这样的好书。


推荐程序员阅读,提高自身修养


这是本非常不错的书,看了之后就不会问编译之类的问题了,对程序的执行过程讲的非常好,使编程知其然,也知知其所以然


对于想了解底层一点的东西而基础又不是很好的人非常适合。力荐!


作为一个程序员有必要了解一下。


讲的原理很多,还有实例。


看过电子档,感觉太好了,就买下了,很同学一起买了两本。学嵌入式的,尤其是基于linux的,特别有用。


程序员非常经典的一本书,不可不读。程序员以后发展非常有好处。


很好的一本书,很适合程序员读


本书的讲解很详细,又很精练,信息收集得很全面,解惑相当到位。推荐购买,尤其是想了解内部原理的编程者。现在还只看了前面的几章,就感觉非常不错。


看了电子版的,再看实物,比想象中厚很多啊,很给力


涉及到了我们学习中的不少困惑之处,很多教科书都不展开阐述的一些内容,被作者写的很生动,便于理解。读起来一气呵成。可惜后半部分的文笔差了一大截,读起来有点拗口,并且思维跳跃性太大。估计是两个作者的缘故吧。


知识点深入剖析,令人豁然开朗~


程序员练级精品。提高内功好帮手。


好书自然要推荐,程序员必看。


书的质量还是很好的,内容还没怎么看。但是拿在手上沉甸甸的。印刷质量很好,对于C++程序员的一些底层的困惑,解释的很清楚。期待后续版


书保证是正品这是坚持一直在当当买书的原因,这本书是同事让帮忙买的,具体内容还没看,先给个物流和当当的服务给个好评先


这本书看了好久了,价格有点高,不错内容很不错,最后狠心自己买了,以后要认真看。


扩充知识面,提高自身修养


修养之途,历练!


这本书真的很不错,之前是在图书馆看到的,稍微浏览了一下,书讲的很通俗,但是很深入


书非常好 ,公司工程师看的。


好书,值得深入研究。


绝对的经典啊,了解编译pe文件等的不二选择


借别人的看过一遍,感觉不错,就自己买一本,双十一,第二天就到了,物流还是很给力的


我认识这本书的主要作者,
正如作者的性格一样,这本书有扎实的功底、清晰的思路、睿智又不失风趣
拜读此书,受益匪浅。


自我修炼的好书


已买待看再待分享


刚买到书,还没来得及看。稍后再上评论


很底层的一本书,前辈们推荐,细细品尝中……


对书中的很多细节还是不理解,学习了编程好几年,从来没想过底层的方面~~


想买这本书已经很久了,今天终于到了,虽然到的有点晚,催了几次,但书确实是好书。


这本书非常好!可以帮助很好理解底层方面的知识!


之前找别人结果这本书看,觉得相当不错,所以自己也买一本啊


很不错的一本书,需要慢慢看


如果你想了解底层,那么非常建议您看这本书


很不错的一本书,买过了,等着看


非常不错的一本书,还没看,不过已经是经典了。


很好的一本书,值得慢慢品味!


是本好书,目前国内书市上也就这本书可以了


看到这本书居然是本科生写的,确实有点震惊,不过书确实写的不错


以前陆陆续续看了很多书,这本书能将看过的联系到一起来
作者很清楚初学者所缺乏的知识点,比较推荐功底还不是很深的人细看,如果搭配其他的书就更牛了


这本书在网上初看了一下,挺好的,值得珍藏!


发货挺快,物流也挺好的。书是朋友推荐的,很好的一本书~


对于日常编程可能没注意或来不及思考的问题,这本书可能会让你思考得更远。


当我拿起这本书的时候,有一种莫名的激动


这本书不错,讲得比较低层


没想到是学生写的。。真的不容易。。非常的好。。。鼓励鼓励。。


非常好看的书,研究底层知识的人值得一看。


感觉很不错,值得学习参悟


非常基础的书,从底层学习


国人写的书,很少有我觉得不错的!这书确实不错,值得学习和推荐!!


书内容很新,书很好,适合想学习的


书很好,得好好看


书没得说,经典好书,包装要是好点就好了


老师推荐,买了看看,感觉不错,不过一直没看完


相关图书