太后知后觉了,连CSAPP出了第二版都不知道

        只要读过的就一定知道它的价值,我囿于自身知识结构的原因,跳过了第一版的第四章和第八章等,相对浅显的网络编程以及并发章节也未细看,而很精华的第二章的浮点数部分也是自己糊弄过去的,这次正好是个重温的机会。
        网址还是不变,上次第一版的时候最先是拿着2001年的draft电子版看的,效果还行,这次似乎没找到,但student site还是料很足,有志深入计算机学科(特别是非科班出身的)的不容错过。真希望能早点引进,原先的影印版我做的笔记都要烂了。
        觉得这博文也太短了,还是加点料,转述下第二版的修订和自己的简短评价:
        第一章:没说做没做修订,其实本书和 计算机网络的第一章都是那种很高瞻远瞩的介绍,不过本书的介绍倾向于解释为什么是"Programmer's Perspective",而计算机网络一书的介绍更有启发性。
        第二章:表现和操作信息。非常有用非常基础的一章,看过它就应该不会对莫名其妙的整数溢出等有疑问了,而且从bit层面了解数据,对写出高效的程序是很有益处的,可悲的是我跳过了浮点数,也一直没有看完 What Every Computer Scientist Should Know About Floating-Point,这次想克服自己的惰性攻克浮点数。修订内容大致是增加了文章的可理解性,把一些理论性材料转移到aside部分,还增述了一些因算数益处而导致的安全问题,整体来说没太大改变。
        第三章:程序的机器层面表示。本书的精华之一,目标不是让读者可以写出可运行的汇编程序,而是要求可以看懂简单的汇编代码,并用于诊断优化程序,非常务实的态度。修订主要是增加了x86-64的内容,使用更新的gcc来生成代码,增加了缓冲区溢出的篇幅(是不是过于重视了?),在线辅助里有两套浮点数指令集(啥?),用一种更加奇妙的视角去看待编译器在更高层面上进行优化的转变(到底是啥?)。
        第四章:处理器架构。据说也是本书精华之一,我可悲的跳过了所以没法进行评价,就说一下修订吧:在处理器设计中添加了一个更加细致的异常检测及处理的讲解,添加了一个将本书的处理器设计映射到Verilog(这啥?)的在线辅助,使之可以整合到运转的硬件上。
        第五章:优化程序效率。毫无疑问的精华部分,从计算机的种种特性及程序员的角度讲述了优化原则和技巧,同时也指出了可能极大降低效率的错误实践。修订极大地更改了关于乱序处理器的操作描述,还创建了一种基于程序的数据流图路径的简单手法来分析程序性能。在线辅助描述了c程序员如何利用SIMD指令在近期的x86处理器上写程序。
        第六章:存储器层次。还是精华部分(说了好多遍了),把上一章讲到的种种特性直接以接近硬件层面的角度阐述,而且也确实说到了一些硬件知识,当然我也是确实跳过哪些部分的。修订增加了SSD的材料,还更新了基于i7处理器的存储层次的表述。
        第七章:链接。没什么好说的,也几乎没作修订。有兴趣的可以看两本扩展读物, 程序员的自我修养以及 链接器和加载器,后一本很有名,据说做全世界做链接器的人就有半数审校过该书,无疑的权威作品,前一本也是以链接和加载为主,还实现了一个简单的c++运行库,在某种程度上也是一本很不错的计算机基础教材,比如我就从此书中了解了所谓的c语言的可移植性到底是怎么一回事。
        第八章:异常控制流。我没怎么看,还是没法评价。修订增加了处理器模型是如何引入一些并发的基础概念比如不确定性(nondeterminism)的讨论。
        第九章:虚拟内存。精华章节,但我印象真不深了,回去再翻翻书吧。修订更新了64bit的i7处理器的内存系统学习案例。还更新了简单的malloc实现使之可以在32bit和64bit上都可以运转。
        第十章:系统级I/O。没什么印象,也几乎未作修订。
        第十一章:网络编程。不太有趣,实现了个简单的http服务器,以程序员的角度如果真有兴趣还是看 UNIX网络编程吧。几乎未作修订。
        第十二章:并发编程。也忘光光了,就是里面那个冲突图示影响很深。修订增加了并发的通用原则的篇幅,讲解程序员如何使用线程级别的并行操作来加快程序在多核机器上的实行效率。
        原第九章:测度程序执行时间。被砍了,我对此印象也不深。
        原附录:一些简单的包装函数,比较乏味。
        写完的感受有两个,第一:我的外语真他妈的烂啊,虽然自己读的时候可以糊弄过去,但是要写出来简直就是驴头不对马嘴,千万别把我上面的文章当真,否则绝对被误导。第二:其实也没更新多少内容嘛,相比 Computer Architecture的巨大变革只能说是聊胜于无。一开始还兴冲冲的,现在几乎完全冷静了,自己也可能不会继续购买第二版,但对没读过第一版的程序员还是强烈推荐。

你可能感兴趣的:(编程,C++,c,虚拟机,gcc)