《深入理解计算机系统》在豆瓣评分高达9.7分,可以说是豆瓣上计算机相关书籍中评分最高的一本
1.
还能说什么呢?能把硬件、系统、软件系统地结合起来,构成一整个框架,这对于一名非科班的programmer了解计算机运作是一件多么美妙的事情!
2.
在一定程度上,其实它是在锻炼你的思维方式
这本书的中译名为“深入理解计算机系统”,有一定的问题。如果直译原书名,应该是类似于“以程序员的视角理解计算机系统”。可能在国内看来,这是讲系统的,用C和汇编语言的,因此很“深入”。事实上,这是一本入门级别的书,这本书其实并不“深入”,它谈论的内容还是相对比较浅的。但“浅”不代表“浅薄”,写一本面向初学者的好书往往是非常困难的,它的作者都是顶尖学府的教授,结合多年教学经验而写出来的。
CMU把这本书作为“Introduction to Computer System”课程的教材,是面向计算机专业低年级学生的“计算机系统介绍(导论)”。这些学生只是刚刚了解如何使用一门高级语言,对于计算机系统的工作方式等话题可谓一点都没有接触过,而CSAPP对读者的背景也只要求是“一些编程经验”而已。这本书的话题覆盖面很广,从计算机的基本组成,二进制数据表示方式,到机器级别的指令,CPU工作方式,存储结构和优化,操作系统的虚拟内存管理,程序运行方式,I/O,网络、到(较底层)程序性能优化和并行程序开发等等。所以,它其实覆盖了“计算机组成原理”,“操作系统”等许多课程的内容,其中的许多话题都能再次展开,继续深入,都能再变成一本,甚至N本经典。在高年级的计算机专业课程设置中,都会有更加纵向的内容出现。另外,《计算机科学前沿技术》一书对CMU中的课程体系进行了介绍,有兴趣的读者可以去看看,该书还推荐了很多其他好书,当然也包括这本书,准备按照这本书的介绍全部拿来看看。
“覆盖面广”,其实就是这本书的最大优点。它告诉我们计算机是如何设计和工作的,操作系统有哪些重点,它们的作用又是什么。CSAPP的目标其实便是要讲清楚原理,但并不会把某个话题挖掘地过于深入,过于细节。看看这本书后,我们就可以对计算机系统各组件的工作方式有了理性的认识。在一定程度上,其实它是在锻炼思维方式 -- 计算思维。
3.
陆陆续续花了2个月的时间终于把这个久负盛名的CSAPP看完了,不愧为一本名副其实的经典书籍。有种相见恨晚的感觉,以至于从不会写书评的我也情不自禁的想说点什么。
这本书的书名叫”Computer Systems: A Programmer's Perspective",从程序员的角度去理解计算机系统,也暗示了书中讲的任何内容都会和程序员所做的事情联系起来。就这点看来,书的中文名取的不好。
本书的一个目的是要把阅读者带入权威程序员行列,巧合的是我也是在阅读这本书期间升职到senior(看来真是要感谢作者)。当然和权威还差的远,但是看完这本书能让你理解整个计算机系统。以后的编程中你的思路更广,考虑的问题也会更全面。
除了书中介绍的这些内容,我想还能将计算机系统中的一些设计思想放到面向对象的设计思想中。像存储器的层次结构和虚存何尝不代表了封装的思想呢?是啊,面向对象的思想本身就是无处不在的。
4.
毋庸置疑,这是一本再好不过的书。也是我推荐的第一本书。
这本书讲的是什么?
它从你的计算机讲起,描述你的主机中有什么部件,你的主板上有什么零件,CPU、内存和硬盘之间怎么连接的。
它还描述了你写的程序是怎么从一个文本文件被编译、链接变成汇编码,又是怎么从汇编语言变成机器码,以及怎么被计算机执行的。
它还会讲到计算机网络、组成原理、进程、线程等等,从硬件讲到软件,从里讲到外。
它就像一张网,把我们整个计算机生涯中可能遇到的知识给组织起来了。
读了这本书我们有什么收获呢?
它能让我们明确我们在某一阶段欠缺什么知识。
这本书特别适合那些喜欢刨根问底的同学。
当你写完程序之后,如果你很想知道你写的代码怎么就能被计算机给执行了;
如果你不知道自己学了数据结构、操作系统等课程有什么用。
那么这本书非常适合你。
可是,这是一本对新手不友好的书。
怎么去理解呢?
本书是建立在你会使用C或者Java等高级编程语言的基础上编写的。
全书使用了大量的C程序作为例子。
所以,如果你还不会基础的C,那么这本书看起来就会比较吃力。
部分同学看到这里又觉得丧失了兴趣,因为你不会C,你可能要错过这本书了。
其实没必要着急,谁都是从不会到会学起来的。
我也是在不太会编程的时候开始看这本书的,也是慢慢去理解的。
我在大学二年级购买了这本书的第二版,去年又购买了本书第三版。
我一开始也看不懂,后来重复地翻开,断断续续看了好几年,每一次读都有新的感受。
虽然到现在我也还没看完。
这本书对得起它接近满分的评分。
学习的过程是不能急的,特别是还在上大学的朋友,你们有大把连续的时间,这就是资本。
所以,如果真的是想把编程变成自己职业的人。
你需要一本这样的书。
彻头彻尾地学习计算机的原理后,你会变成一个能去设计程序的人。
而那种一上来就直接照葫芦画瓢、不求甚解、还想去编程的同学,最后多半从事重复性的工作。
随着时间一天天过去,这两种人的差距会越来越大。
毋庸置疑,这是一本再好不过的书。也是我推荐的第一本书。
这本书讲的是什么?
它从你的计算机讲起,描述你的主机中有什么部件,你的主板上有什么零件,CPU、内存和硬盘之间怎么连接的。
它还描述了你写的程序是怎么从一个文本文件被编译、链接变成汇编码,又是怎么从汇编语言变成机器码,以及怎么被计算机执行的。
它还会讲到计算机网络、组成原理、进程、线程等等,从硬件讲到软件,从里讲到外。
它就像一张网,把我们整个计算机生涯中可能遇到的知识给组织起来了。
为什么给大家看那么多别人的对这本书的评价呢,就是要说明一点,这本书,你必须看,而且要认真仔细的看,并且弄懂它,坚定这个后,然后和我一起走下去。
有人说一年才读一本书是不是太少了。在我看来一年完整读完一本书的已经超过63%的成年人了(中国综合社会调查(CGSS)一项数据显示,在过去的一年里,我国年满18岁的成年人中有63%的人,一本书也没读过(包括纸本书和电子书)),要是专业书籍来说,读完一本书的人就更少了。而且这是一本内容如此丰富的书。很多人整天“速读,跳读,扫读”,以为自己多么有效率,其实不然,精度一本好书,远远超过十本速读书,这个在计算机专业书籍更是如此。
一年的时间我带你深度读这个书,把这个书读薄,读厚。
1. 你要有一本这个书,纸质或者电子版本的。 我使用的是第三版中文版本,最好和我一样,遇到问题,可以和我说在哪页,我也容易定位到。
2.本书总共12章,正好一年12个月,每月一章,其实有的章内容多,有的内容少,为什么我还是坚持一个月一章呢?这样好区分,这本书来说,一章内容最好的时候,一个月的时间也够学完。
3.主动学习,带你一起读懂这本书,不光是我的内容输出,也不应该是一群读者的内容消化;在这里从一开始就应该是一群人一同成长、公共进化。
很多人把书买回家其实只不过是放在书架上当摆设而已。你可以试试从二手平台买书,发现你买来的书还是新的。
你必须有所行动,你必须参与进来,你必须做很多事情……反正光看是没用。你要把你消化的内容输出出来,用不同的方式。
4.每个月大约4周,
第一周:我会给出怎么去学习这一样,会给出一些问题,你需要带着问题去阅读这一章的内容,在你读的过程去回答这些问题。
第二,三周:我会针对给出的一些问题,做解答,并给出扩展内容。
第四周:总结,对这一章内容的一个总结,会出这一章的内容的思维导图和ppt,(视频直播待定)
这是我的规划,我带你读懂这本书,最终还是需要你自己学,在上面说过,最好的学习是输出,所以对你来说,你也要输出。我提出的问题,就是要让你带着问题去学习,然后去回答这些问题,去总结。
这就是接下了一年我要走的路。你愿意和我一起走吗?