【程序员的自我修养 pdf】程序员的自我修养经典读后感10篇

发布时间:2019-10-06   来源:读后感    
字号:

【www.jxscct.com--读后感】

程序员的自我修养经典读后感10篇

  《程序员的自我修养》是一本由俞甲子 / 石凡 / 潘爱民著作,电子工业出版社出版的平装16开图书,本书定价:65.00,页数:459,文章吧小编精心整理的一些读者的读后感,希望对大家能有帮助。

  《程序员的自我修养》读后感(一):虽然有不足,但是还是不错的

扣掉一星是因为书中有些笔误,还有一些代码错误。也没记笔记,所以不能贴上勘误表,自己看的时候注意点就是,很容易发现的。
另外,对于局部变量(字符串常量、字符串数组、整形)等在堆栈上的分布讲的不是很细致,不过这些东西自己反汇编一个程序就明白了。
这本书在学校图书馆放了很久没人去借,而且去年的时候还是我向图书馆推荐的此书,几个月后一查询发现图书馆已经把书买来入库了。但是我一直没有用到书中内容,所以一直没借来看。
时间来到2015年9月6号,我把书从图书馆借来放在书架上,准备看,但是一直没看,只翻了一次,就再也没拿下来过。(看借阅记录好像此前只有一个人借过这本书,所以我借来的时候书跟全新的一样,竟然没有翻过的痕迹)
前几天,准确的说是一周前,突然需要看点ELF加载的内容,之前看过《linker and loader》,但是讲的不是很明白。于是从书架上拿下此书开始看。大约是从本周一(9月28号)开始看的吧,断断续续看了一点开头,觉得跟看小说一样,毕竟里面的内容我以前多有涉猎,看起来非常快,一开始的几章还是很简单很熟悉的。
几天后来到了国庆假期,10月1、2、3号我集中精力开始狂看此书,因为我决定速战速决,大四了还要找工作呢,不能把战线拖的太长。所以每天都看三四个小时,把我练口语的时间都挤没了。终于昨晚也就是3号晚上把我需要的章节看完了。一共看完了1、2、3、4、6、10、11章。基本上就是花了三天时间把本书读了个差不多。当然我跳过了C++的相关内容,因为我不太会C++,而且动态链接章节暂时用不到就没看。
总的来说,虽然看几页就能发现书中笔误,但是基本不影响阅读,看完后我以前最迷糊的“重定位”相关知识已经全搞明白了。说实话,我看这本书就是为了看重定位是怎么定位的。其他内容是附带着看看。不过收获还是很大,看得出作者对于底层的知识非常了解,可以想象出他们当时在没有这些参考书的情况下慢慢摸索是花了多少功夫。在此向作者致敬。
这本书的受众主要是使用C语言和C++的系统级开发者,因为讲的东西太过于底层,我也是因为要看进程部分的内核代码所以才用到,至于搞Java的朋友我认为这本书就没必要看了,而应该去看JVM虚拟机机制。
从周围室友那里我也了解了一些前端和移动开发的知识,所以我觉得这本书里的内容对于安卓开发、Web开发、IOS、Java等等一些列非底层开发来说几乎没什么用。看了也会因为用不到而忘掉。
相反,对于有志于向Linux内核提交代码的人来说,这本书非常值得一看,虽然一些知识以前都了解过,但是肯定没有这么系统的串联一次。。内核路漫漫哎,目前内核代码量已经超过1900万行了,想成为一名内核开发者真的是非常难。。。还有很长的路要走。

  《程序员的自我修养》读后感(二):错误挺多

严格来说,这并不是一本严格的书,我指的是后期的查错之类的工作。
这本书我到现在为止看了有一半了,学到的东西固然是有,但让我印象更深的还是这本书中太多的错误,轻的有用词语法错误,比如几乎每个地方的“需要”都写成了“须要”,你可能会说这又怎样,比起作者的良苦用心,这点词语上的错误算得了什么。
确实,这样的错误的确无可厚非,但还有一些令人迷惑的错误恐怕就说不过去了,比如P154第二段的第一句”由于模块A和模块B之间相互调用依赖关系“实际上应该是”由于模块A和模块B之间不存在相互调用依赖关系“。这本书我一口气读了200页,我印象里这200页里这样的错误的确还有一些。
还有一个我个人认为最大的也是最不应该的错误是P77的那张图3-6, 到底错在哪读者自己观察吧。
但是,毕竟,这本书可以说是国内鲜见的如此深入的讲解链接与装载的书籍,这些许的错误只能说是后期的审查不严格吧

  《程序员的自我修养》读后感(三):每一个程序员在他的职业生涯中某一天都会突然获得开示

每一个程序员在他的职业生涯中某一天都会突然获得开示,这种开示在通常某一个夜晚悄然降临,有时是以图灵本人托梦的形式出现。
这一开示的主要内容如下:
程序员是真正理解思维和逻辑真谛的人。非程序员是被蒙蔽的无知者。
每一个程序员对于世界上其他程序员有着不可推卸的责任。每一个程序员都必须尽力维护程序员这一高贵种族的延续,并保证世界的命运控制在程序员手中,既不被无知者淹没,也不被机器智能取代。
完成这一使命的唯一方式,是保证稳定地出产低质量,难以理解,修改和维护的代码。每一个负责任的程序员,他每一年的产出,必须为另外三个程序员制造一年的就业机会。唯此,程序员一族可生生不息,整个IT行业欣欣向荣。
图灵大神在冥冥中微笑,他的纸带机将嗒嗒作响,直至永恒。

  《程序员的自我修养》读后感(四):这本书涉及的内容基础,涉及的深度基础

零零散散看到现在,总算是看完了。
最先看的是运行库实现。这方面内容我在网上也找到两份实现,使用 LIBCTINY.LIB 为 EXE 和 DLL 文件 减肥(****://***.vckbase****/document/viewdoc/?id=1012),另一份Tiny C Runtime Library(****://***.codeproject****/KB/library/tlibc.aspx),前面一份代码实现较早2001,后面一份代码实现似乎是参考前面一份的,不过好处是有MSVC项目。而且相比本书的代码的优势之一是使用静态链接库的时候不需要包含静态链接库的函数导入声明头文件minicrt.h,因为使用了stdio.h。
前面链接、装载内容是参考着加密与解密一书看的。理论谈得比较多些,装载过程也是加密与解密一书谈得比较少的。
看完之后觉得这本书挺薄的,没多少内容,这本书分linux和windows部分,我只详细看了windows部分了,linux部分稍微翻了翻。没准以后想学习linux的时候,还会翻翻这本书。

  《程序员的自我修养》读后感(五):知其然更要知其所以然,深入才能浅出!

想读这本书,前前后后也有两次了,直到13年的年底终于下定决心买了一本。
不为别的,自己在编写以及编译调试程序的时候,难免会对其背后的机理产生好奇心,而出了问题又无可奈何的时候,更深知自己应该去了解一下幕后到底发生了什么。举个简单的例子,用gcc编译C++代码的时候,是分阶段生成代码的,且可以由我们控制,虽然平常没有分解的必要,但是了解编译器的基本工作原理还是很有益处的。而编译之后的目标文件则有链接器处理后生成可执行文件。
抽象来看,我觉得gcc手册会告诉你足够多的东西,一本翔实的操作系统书籍也会给你足够的启发,而且想真正弄清楚问题,是需要去钻研一些“鸿篇巨制“的。而至于此书会教给你什么,看一看”序言“和“目录”便基本了然。
我首先阅读了第一部分(第1章),作者们生动地把操作系统和体系结构,程序运行相关的基础核心概念表现出来。之后由于对“库和运行时”更想了解其原理,所以直接跳到了第四部分(第9-13章),这里对内存布局,运行时库的来由和基本机理,系统调用的实现机制都做了生动的描述,而在第13章,则实现了一个“麻雀虽小,五脏俱全”的C/C++运行时库。
至于剩下的第二部分,则对编译,目标文件(PE,COFF)和静态链接进行了深入的分析。第三部分讲“装载和动态链接”,需要读者对操作系统的程序加载有一定的理解,这一部分读起来对我来说比较吃力,接下来需要读一本操作系统方面的书补课。
对目前的开发者而言,虽然不是每个人都需要了解底层工具链以及支撑软件的基本原理,但是一个“合格”的程序员需要加强“自身修养”。如果总是停留在“知其然”的阶段,遇到了问题,很难既快又准地解决。而做到了“知其所以然”,便可以举一反三,处理问题的时候思路清晰。
还是那句话,“以不变应万变”,掌握了原理才是知其精髓。学习一门语言,就好比是阅读一个产品手册,教给你怎么用。而实现一门语言,才是“真正的开发者”。
废话说了一堆,我比较喜欢本书序言三“佚名”引用的那一段话!

  《程序员的自我修养》读后感(六):瞄一眼底层

拖了很久,终于浏览了一遍,之前没读完,在于这书太多Linux的内容,而我之前只玩Windows编程,读起来不容易。
四年前刚买到时读这本书的一两章,主要学到了两点:1、“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。”;2、Singleton Double Check。然后再看其它Windows相关的章节,就觉得平淡无奇了,PE文件,包括重定位表在罗云彬《琢石成器》一书上介绍得更全面(虽然我现在忘干净了-,-);DLL的各种细节知识、windows函数调用堆栈、调用约定那时候我都已经了解到了,所以后来就把这书放一边。直到最近因为学习Linux才重新拿起来。
再看,发觉以前漏掉的知识点:1、memory barrier,书里只是提了一下,到网络上找详细的资料,很有内容的知识点;2、分层思想的各种案例;3、CRT的堆是一个通用的内存池。
还有新知识:Linux的ELF格式,对应Windows的PE格式;Linux共享库的GOT、PLT、装载重定位;Linux的共享库版本;glibc是Linux版本的C运行时库,C++全局对象的构造、析构由GCC实现,Linux跟Windows共有功能在运行时库上有实现,Linux个性化的功能则需要使用系统调用。
静态库、动态库的磁盘布局、内存布局,没有细看,都是一些结构体,有需要时再查查。围绕main函数展开的知识,这块算是比较完善的复习,值得读读;p356介绍为什么要使用_beginthreadex函数而不使用CreateThread创建新线程,这块核心编程也有介绍到,复习;mini CRT(++)的实现很简洁可学,不错的例子。
有两处笔误,都是Windows下的,
p288 图下方这一段的内容,说到函数返回地址、参数1、参数2,应该都是ebp+XX,而不是减XX;一般局部变量是ebp减,参数是ebp加。
p296 图10-11在“Push1”之后,栈的内容应该是3在高处1在低处;
总的来说,这本书是很好的科普,了解到一些平常用不到的背后故事。

  《程序员的自我修养》读后感(七):程序员的内功心法(一)

此书作为一本技术类方面的书,可以说是干货满满。仔细想来,目前国内的教授、专家或者学者,鲜见有谁能写出这么“实实在在”的一本书了。所谓实在,指的是本书内容详实,且多是作者深思熟虑、实践检验后的成果,外加书中所描述的主题新颖,这在其他计算机类的图书中通常都是一笔带过的内容。相比之下,国内的很多作者却总是千篇一律地编一些类似旧时八股式的编程语言类书籍,甚至有些从时效性上来讲已经远远落后于这个社会目前正实际大规模运用的技术。可见,能读到这么一本书实在很荣幸,大有相见恨晚的感慨。
回归到书本身,由于书中所述内容在国内涉及较少,虽然嵌入式开发调试中也会时常遇到和ELF、反汇编、目标文件等打交道的机会,但多半也是蜻蜓点水,浅尝辄止,缺乏系统性,而更多的是以解决某个问题为最终目的。很多概念,如系统调用、运行库、windows API、.BSS段等等,其实日常工作中经常是处于一种混淆的状态。虽然公司发展是以产品为导向,但是个人发展还是应当立足于技术(当然前提是你立志于做技术)。这个时代已经不需要我们去造轮子了,但是轮子的基本原理还是要清楚。从系统层面上来说,链接、装载和库是最重要的一部分,它关系到程序最终在计算机上的存在以及运行时形态。如果说源代码级的程序框架是软件上面的架构,那么书中所描写的内容则可以算得上是程序和操作系统的交互架构,起着承上启下的作用。从实践中遇到的问题来看,很多系统级疑难杂症都可以从链接、装载与库这一层面上寻到蛛丝马迹,甚至有时潜藏着的尚未暴露的问题在这里也早已无处遁形。只是可惜的是,这是一块不被大多数人关注与重视的角落。
关于本书,有个令我印象深刻的情景——第一次翻开时,看到序言页上那几个“莫等用时再读书”的大字,当时隐隐有种干货满满扑面而来的感觉,现在读完后,确实深有感触。虽然不管读与不读,我的日常工作始终会围绕着业务逻辑,但是两种情况下我看代码时的心境是不一样的,至少内心会更踏实自信一点。CPU体系结构、汇编、C语言和操作系统,永远都是编程大师们的护身法宝,就如同少林寺的《易筋经》,是最为上层的武功。
莫筑高台浮沙上!

  《程序员的自我修养》读后感(八):好书, 结合CSAPP, LinuxC一站式编程来读, 就完美了

该书填补了中国书籍上Linker & Loader 空缺, 降低了难度, 而且写的非常友好.
我觉得, 如果要对编译, 链接与装载更好的了解, 结合CSAPP, LinuxC一站式编程 这方面的知识来一起读, 就完美了.
因此, 我写了篇博客, 总结了这个过程: C/C++编译链接与装载深入浅出
http://yonghaowu.github.io/2016/05/09/Linker_And_Loaders/
http://yonghaowu.github.io/2016/05/09/Relocation_Symbol_Decoration/
编译的详细过程
以hello.c的源文件为例, C/C++编译, 链接与装载的流程是
gcc -E 将hello.c预处理, 把所有的宏展开, 解析#ifndef, 删除注释等, 得到hello.i文件.
gcc -S 将hello.i编译成汇编文件hello.s
gcc -c 汇编器as将hello.s编译成成目标文件hello.o
gcc 链接器ld将hello.o链接成可执行文件a.out
最简单的汇编程序
.section .data
.section .text
.globl _start
_start:
    movl $1, %eax
    movl $77, %ebx
    int $0x80
将这个文本保存成hello.s, 再用汇编器(Assembler)把汇编程序中的助记符翻译成机器指令, 生成目标文件hello.o
$ as hello.s -o hello.o
然后用链接器(Linker, 或Link Editor)ld把目标文件hello.o链接成可执行文件hello:
$ ld hello.o -o hello
这个程序只是做了一件事: 退出.
退出状态(Exit Status)为77, 在Shell中可以用特殊变量$?得到上一条命令的退出状态
$ ./hello
$ echo $?
77
.section到ELF文件
.section会成为目标文件的Section
简单起见, 以上汇编程序只是想告诉大家, 注意以上的.section后的.data与.text
汇编程序中以.开头的名称不会被翻译成机器指令, 而是给汇编器一些特殊的指示, 称为汇编指示(Assembler Directive)或伪操作(Pseudo-operation), 由于它不是真正的指令所以加个“伪”字.
.section指示把代码划分成若干个段(Section), 程序被操作系统加载执行时, 每个段被加载到不同的地址, 具有不同的读、写、执行权限。 .data段保存程序的数据, 是可读可写的, C程序的全局变量也属于.data段. 本程序中没有定义数据, 所以.data段是空的
所以, 我们的hello.c源代码经过gcc -S 翻译后, 就得到伪操作以及一些运算指令(hello.s). 接着, 使用as hello.s根据段信息等得到目标文件hello.o, 目标文件由若干个Section组成, 我们在汇编文件中声明的.section会成为目标文件的Section, 此外汇编器会自动添加一些Section(比如符号表).
C程序编译后的执行语句都翻译成机器指令放在.text段, 已初始化的全局变量和局部静态变量放在.data段, 未初始化或者默认初始化(即是0)的全局变量和局部静态变量放在.bss的段里, 有.bss段的目的是为了节省内存空间, 因为都为0, 只需要为它们预留位置即可.
为什么不把指令跟数据全部放在一个section呢?
各个Section可以划分权限, 如.data为可读可写, .rodata与.text只可读.
指令跟数据划分得更细, 可以让缓存的命中率提高.
共享资源. 当多个相同的进程同时运行时, 可以共享.text, .rodata等. 当进程里有很大图片, 文本等资源时就可以节省大量空间.
目标文件是ELF文件
ELF(Executable and Linking Format)是一个开放标准, 各种UNIX系统的可执行文件都采用ELF格式, 它有四种不同的类型:
可重定位的目标文件(Relocatable, 或者Object File), Linux的.o, Windows的.obj
可执行文件(Executable), Linux的.out, Windows的.exe
共享库(Shared Object, 或者Shared Library), Linux的.so, Windows的.DLL
核心转储文件(Core Dump File)a, Linux下的core dump
大家想想, 当我们以前编译多个文件时, 就会有多个目标文件. 当A文件使用B文件的函数时, 两个目标文件, 是如何通信呢? 你会怎么设计呢?
下一篇我们讲解, 重定位, 重定位表, 符号等.
参考资料
本文几乎可以算是对"Linux C一站式学习", "程序员的自我修养-链接装载与库"的归纳整理.

  《程序员的自我修养》读后感(九):如果说国人都在串书,我想说,这本书串的很好

       看到这本书的时候是在2015年的4月份,当时想了解一些编译原理的东西,但是本科教材的编译原理(绿皮的那本)实在是太枯燥,以至于现在我想到编译原理还会想到词法分析器,在知乎上看到有本叫做龙书的经典书,看了一下页数,果断放弃了,入门还不能太难,然后就在图书馆发现了这本书,刚开始的时候在豆瓣上看书的评论并不好,也许是豆瓣上面大神比较多。我想说的是,这本书应该是学生串的,从最简单的程序入手,告诉读者程序是怎么跑起来的,同期出的那本《程序是怎么跑起来的》,我看了一下封面,是岛国人写的书,最近看到很多岛国人写的书。额,岔开了,继续说这本书,这本书直接拿例子来说词法语法分析,一下就能使读者学到非常直观的东西,而不是自己在大脑中去构想很多。书的后半部分讲解装入的时候,因为很多内容在《深入理解计算机系统》和《现代操作系统》中都看到过,所以就略看了一下,我觉得代码分析部分是这本书最精彩的,只是限于时间,没能完全看完。

  《程序员的自我修养》读后感(十):通往高级程序员的修真之道

      就如标题一样,真本书可以说很棒,基本上覆盖了一个程序从编译-链接-装载-到消亡的所有过程。表达清晰完整,也非常的浅显易懂。
      作者本身的理念和我的兴趣爱好和所追求的技术路线不谋而合:软件技术本身可以说是日新月异,但是都脱离不开操作系统的运筹帷幄,我们不能把程序本身生命周期当作是黑盒,亦或者是操作系统原理,编译原理书籍上的概念文字,而是要真正转化为程序员可以理解的代码。可以说这本书从这一点上做到了,也可以说增强了我们的DEBUG能力。
    本书对我最大的帮助就是解答了操作系统内存管理的原因。链接部分的本质。装载的原理。光这3点,足矣让我收益匪浅。
    同样本书也有几点不足,比如有时候介绍某一概念往往会将WINDOWS与LINUX的实现分别介绍。本来,作者的想法是打通两者的联系,更好的理解机制本身,但是在阅读中往往会搞乱,起不到应有的效果。
     在内存布局这一块,涉及到一些C/C++的反汇编实例和优化的约定,点到为止,这一方面的书籍我推荐C++反汇编与逆向分析。两者结合看或有融汇贯通之感。
   当然还有一些错别字的问题。我想在后面的几版应该会得到更正。

本文来源:https://www.jxscct.com/xxs/36566/


《【程序员的自我修养 pdf】程序员的自我修养经典读后感10篇.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

推荐阅读

智慧助老公益活动总结汇编4篇

智慧助老公益活动总结汇编4篇

下面是小编精心整理的智慧助老公益活动总结汇编4篇,仅供参考,大家一起来看看吧。
2024-04-28
社会主义核心价值观主题实践教育月活动总结汇报(合集六篇)

社会主义核心价值观主题实践教育月活动总结汇报(合集六篇)

汇报是向上级机关报告工作、反映情况、提出意见或者建议,答复上级机关的询问时使用的公文。下面是小编为大家整理的社会主义核心价值观主题实践教育月活动总结汇报(合集六篇),欢迎大家借鉴与参考,希望对大家有所帮助。
2024-04-28
小学民法典宣传月活动总结集合5篇

小学民法典宣传月活动总结集合5篇

活动总结,顾名思义,就是对所做活动进行总体归纳和全面概括的具体结论,我们可以从中获得经验。下面是小编精心整理的小学民法典宣传月活动总结集合5篇,仅供参考,大家一起来看看吧。
2024-04-28
护士节活动总结精选三篇

护士节活动总结精选三篇

活动方案指的是为某一次活动所指定的书面计划,具体行动实施办法细则,步骤等。对具体将要进行的活动进行书面的计划,对每个步骤的详细分析,研究,以确定活动的顺利,圆满进行。以下是小编整理的护士节活动总结精选三篇,仅供参考,大家一起来看看吧。
2024-04-28
劳动心得体会1000字大学生范文(精选三篇)

劳动心得体会1000字大学生范文(精选三篇)

心得体会是指一种读书、实践后所写的感受性文字。语言类读书心得同数学札记相近;体会是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字,近似于经验总结。以下是小编为大家收集的劳动心得体会1000字大学生范文(精选三篇),仅供参考,欢迎大家阅读。
2024-04-28
网站内容来自网络,如有侵权请联系我们,立即删除! Copyright © 查查通作文网 京ICP备16535803号