每日一书丨不管你基础如何,我都推荐你好好看一遍CSAPP这本好书
Posted 《新程序员》编辑部
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一书丨不管你基础如何,我都推荐你好好看一遍CSAPP这本好书相关的知识,希望对你有一定的参考价值。
一个人如果真的读完了一本好书,会自发地写读后感,这不是老师布置的作业哦~
大概是去年十月末,我受够了《深入理解java虚拟机》的折磨,又想到我那零碎又不成体系的计算机基础知识,决定整本书看。从同学那里借来的,几乎全新的CSAPP。
虽然听过机械工业出版的黑皮书的名气,但是以前觉得这种理论知识,看什么书都一样,还不如把408生啃几遍,不过令人头疼的大学教材逼得我只能换一条路走,借名书看!
这一看,才让我明白黑皮书——特别是CSAPP为什么让人熟知!
首先导语部分让我认识到了作者和他的同事牛气满满!
第一部分(第1-6章),主讲机组,从底层剖析
第1章 漫游
讲到的处理器,编译系统,操作系统,虚拟内存,并发这些知识,都是以前接触过,但都没有深入了解的部分,心想终于能好好理解一遍了(以为是个缩小版的408)
第2章 信息表示处理
进制转换,整数和浮点数的表示,还有一直不太清楚的无符号数有符号数,以及没有接触过的大小端法,逻辑运算,移位运算,讲的浅到深位次分明,再搭配作者每一节布置的练习题,可以说以前没有哪本教材或者博客能带给我的学习体验,我当场和我同学说,我请你吃晚饭,这本书这学期归我了
第3章 程序的机器级表示
这一章说实话是前期比较难读的一章,在有汇编基础的情况下,我还是感觉力不从心,但想到刚破费请吃饭,就继续坚持下去了,回头来看这一章可能劝退了不少人,不过收获还是有的,寄存器的种类,操作数操作码,条件控制条件转移,逐步加深的汇编语法,还有初步形成的出入栈概念,这一章100页左右花了大概一个星期。
第4章 处理器体系结构
带给我没有玩过的全新版本,硬件可以讲的这么通俗易懂,这一章只需要基本的数电基础即可学会。处理器架构,SEQ阶段,指令周期执行概念,流水线设计,虽然有些地方还是抽象了一点,但是CPU分支预测那里真是让我惊到,感叹硬件的神奇,以后有空打算看《计算机组成与设计:硬件/软件接口》再补补硬件知识。
第5章 优化程序性能
这一章虽然比较短,但是带来的意义还是很大的。过程调用,渐近低效率,不必要的内存引用都让我认识到以前的代码写的有多烂,循环展开,并行,分支预测和处罚,让我也对自己的代码有了规划和优化意识。
第6章 存储器层次结构
此章解开了我对缓存困惑已久的难题,难怪访问同一个文件速度也有快慢,感叹计算机的存储结构设计的合理,高速缓存是一个需要关注的要点。
第二部分(第7-9章),主讲操作系统
第7章 链接
短小精悍,知识层面的转换让我花了一段时间来适应,此章开始我查博客的次数开始快速增加,符号表,重定位,静态动态链接,目标文件,共享库,可以说没有一个容易的
第8章 异常流
以我个人的角度来说,我认为这一章是最难的,也可能是我个人操作系统知识的欠缺导致的,这一章我一天只能看几页,速度慢得出奇。异常,中断,系统调用,进程,信号。读着觉得我的操作系统似乎白学了,但这一章带给我的收获也是最多的,让我清楚的明白了操作系统的概念绝不只是一个图形用户界面那么简单。
第9章 虚拟内存
领悟很多的一章,以前对内存只是有一个内存条的概念,觉得进程的运行空间就这么多,现在来看,真是……虚拟地址到物理地址的翻译,页表概念,页命中,缺页,内存映射,非常精彩的内存分配,垃圾收集,干货满满,这一章看的时候正好也是期末,感觉看书的时间就跟内存块的分配一样细碎,碎片时间导致了我花了将近快一个月在这里。
剩下的是第三部分,IO,网络,并发
第10章 I/O
老实说,我觉得这一章讲的不够精彩,只是调用了几个函数例子,所以学的也不好。所以我可能会在二周目再好好看看重新总结。
第11章 网络编程
看完这一章甚至有了去搞服务器开发的想法~经典的客户端——服务器模型,套接字的概念应该是整本书后期最难之一,服务器的种类(迭代,并发),web服务器的内容点醒梦中人,搞了那么多前后端开发,看到这里才明白自己每天在internet访问的都是什么。
第12章 并发编程
最后关头高潮迭起,我认为这一章讲的最精彩,以前听到线程两个字就恐怖,现在总算是有了感觉,主要是进程并发,IO多路复用,线程并发三个部分,最后的共享变量,信号量,线程安全,死锁,这一部分自学时没搞明白,所以读了很久,现在终于明白了线程的主要核心内容,同样的内容,为什么有的书花几页就能讲得比有些书花几章讲的好呢?
总结,CSAPP真的是计算机领域的圣经,不管你基础如何,我都会推荐你好好看一遍这本书,不知道它启发了多少计算机学子。如果不读这本书,我可能还是只会调参,crud复制粘贴,出了bug查博客的five(当然现在也是five)。我会在日后给任何想学计算机的朋友推荐它!
感谢CSAPP,感谢作者Randal E. Bryant & David R. O'Hallaron
本书将所有计算机系统相关知识融会贯通,助你成为凤毛麟角的高级程序员的必备神书。如果你研究和领会了这本书里的概念,你将开始成为极少数的“牛人”!
本书是一本将计算机软件和硬件理论结合讲述的经典教程,内容覆盖计算机导论、体系结构和处理器设计等多门课程。本书的最大优点是为程序员描述计算机系统的实现细节,通过描述程序是如何映射到系统上,以及程序是如何执行的,使读者更好地理解程序的行为,以及造成效率低下的原因。从程序员的角度来学习计算机系统是如何工作的会非常有趣。最理想的学习方法是在真正的系统上解决具体的问题,或是编写和运行程序。这个主题观念贯穿本书始终。
我们建议你用如下方式学习这本书:
- 学习一个新概念时,你应该立刻做一做紧随其后的一个或多个练习题来检验你的理解。这些练习题的解答在每章的末尾。要先尝试自己来解答每个问题,然后再查阅答案。
- 每一章后都有一组难度不同的作业题,这些题目需要的时间从十几分钟到十几个小时,但建议你尝试完成这些作业题,完成之后你会发现对系统的理解更加深入。
- 本书中有丰富的代码示例,鼓励你在系统上运行这些示例的源代码。
声明:本文转自“华章计算机”公众号。
以上是关于每日一书丨不管你基础如何,我都推荐你好好看一遍CSAPP这本好书的主要内容,如果未能解决你的问题,请参考以下文章