最近在看深入理解计算机系统(CSAPP),感觉看得好慢啊。。

2017-12-25 10:46:05 +08:00
 shaco

个人背景

211 本科,工作一年半,后端,但是大学专业并不是计算机(很多专业课都没有学过,但是自己粗略的看过一些),所以基本上都是自学的

疑惑

最近在看 CSAPP 这本书,看到讲汇编的这一章(突然发现看得好吃力,于是回过头去看王爽的<<汇编语言>>)。想起自己好像看 CSAPP 这本书已经两个月了(每天花一到两个小时看,一遍看一遍敲,所有课后习题都做完),发现进度真的很慢,如果照这样的进度下去,我觉得看完整本书估计至少还得半年,所以请教各位有没有高效一点的方法来看这本书,或者传授一点看书 or 学习的经验与方法

PS:我指的高效的方法并不是走捷径,而是换一种方式来读这本书,比如:

27265 次点击
所在节点    程序员
72 条回复
qwertty01
2017-12-25 12:20:40 +08:00
大学时候通读过一遍,用了两个学期(中间寒假没学)。
习题不做或者挑着做,会快很多。
没记错的话,汇编部分看过王爽那本汇编学的会轻松很多,不过两本用的是不同的汇编语言。
后面的存储部分需要用的数字逻辑方面的知识。
还有一部分用的计算机系统方面的知识。
剩下的应该没压力了。
PS:现在已经忘的差不多了,当时学下来感觉啥用也没用。
bzw875
2017-12-25 12:22:06 +08:00
你好多了,我完全卡住了,大专的高等数学几乎没学上了几节课我也没怎么听
qwertty01
2017-12-25 12:24:31 +08:00
@jimzhong 为啥要跳过程序优化那个章节?当时我读的时候感觉最有用的就是程序优化部分。现在对这本书唯一的印象的就是来自程序优化中关于 C/C++内联函数优化的那部分。
qwertty01
2017-12-25 12:27:01 +08:00
@bzw875 学 CSAPP 不需要啥高等数学知识啊,除了讲 Int/Double 那部分。更需要的是汇编、数字逻辑,操作系统方面的知识。
CodeingBoy
2017-12-25 12:28:26 +08:00
最近在啃龙书,也是一样效率比较低,我阅读的方法是:
- 精读,确保大部分知识可以理解(但是过了一段时间就忘了不少)
- 不做课后习题(没时间)

到现在发现就掌握了个大概,很多知识理解得不是很透彻。比如 FIRST/FOLLOW 还有手工构造 LR 语法分析器的方法记不住,还有一些原理性的东西不能理解,跟不上作者的思路。
接下来打算结合习题重新学习一遍,现在就指望着考试别挂……
CodeingBoy
2017-12-25 12:29:22 +08:00
@CodeingBoy #25 另:从 9 月份开始到 12 月份,从龙书第一章读到了第六章结尾,速度看上去还行,但是实际上感觉没学到什么
rogerchen
2017-12-25 12:29:48 +08:00
15213 不是 CSAPP 每一页都讲的。
做题所有练习和 2 星以下作业就行。

diss 一下说能很轻松看的,除了 10,11,12 三章,其他的章节深度和实用性绝对完爆绝大多数教材。
qwertty01
2017-12-25 12:30:41 +08:00
@CodeingBoy 这就是不做课后题的后果 ( dog
zindex
2017-12-25 12:33:44 +08:00
cyspy
2017-12-25 12:34:57 +08:00
我们学校在计算机组成原理加一个实验,内容是手写汇编,把最基本的判断、跳转、寄存器弄明白,最后一课是两台机子互联,把键盘输入显示在另一台上
CodeingBoy
2017-12-25 12:39:34 +08:00
@qwertty01 #28 2333,反模式
不过我看书很多都不做课外习题的,一部分是因为有的课外习题太简单(比如编程语言基础特性的习题),一部分是没时间,还有很多书籍要阅读。
我之前读过《计算机网络:自顶向下方法》,可能是因为比较有兴趣,知识也比较简单,所以比较轻松,不过也是一样细枝末节的比如 TCP 拥塞流量控制和路由算法细节都记不得了。《现代操作系统》也是一样。
现在就想着要改变一下学习的方法,否则和死记硬背没什么两样。
alcarl
2017-12-25 12:50:21 +08:00
刚开始看不动可以先看看 编码 隐匿在计算机软硬件背后的语言 。。。。。。当然这本有些也不好懂,毕竟太底层了,其实看不懂跳过就好了,看懂了不用过两天也会忘
BiuBiuBiuX
2017-12-25 12:54:18 +08:00
看 然后在工程中 找到问题 和 CSAPP 中的东西结合

如果你没有很多编码工程实践 看了也不能理解
feather12315
2017-12-25 13:41:23 +08:00
平时用不到,看了也是记住宏观层面,细节会忘记的。
微机原理+Intel 微处理器(前半部分)这俩本书看个大概,外加计算机组成原理的大概,几小时扫完这本书没啥大问题(忽略细节)
feather12315
2017-12-25 13:44:33 +08:00
外插一楼:不明白为啥许多人特推崇这本书。感觉并不是很好的书,拓展知识范围倒可以,但对于初学者很不容易理解,对于有一点了解的就很鸡肋。
jimzhong
2017-12-25 13:46:01 +08:00
@qwertty01 程序优化涉及处理器架构(缓存,ILP 等),优化后的代码的可移植性和可读性变差,一般程序员(比如 Web 开发者)并没有太多机会使用这些优化技巧。而且,先进的编译器会自动 inline 函数,甚至还会尝试 loop unrolling.
而且,CMU 的 15-213 没有涉及 Chap 5 的程序优化。
shaco
2017-12-25 14:51:08 +08:00
@zindex 谢谢,正需要这个
shaco
2017-12-25 14:52:47 +08:00
@qwertty01 不做课后习题确实得不偿失,很快就会忘,而且理解得很浅
qwertty01
2017-12-25 15:02:32 +08:00
@jimzhong 我讨论的是这本书啊,老哥。看看章节介绍“...
5.4  消除循环的低效率 332
5.5  减少过程调用 336
5.6  消除不必要的存储器引用 336
5.7  理解现代处理器 340
5.7.1  整体操作 340
5.7.2  功能单元的性能 343
5.7.3  处理器操作的抽象模型 344
5.8  循环展开 348
5.9  提高并行性 351
5.9.1  多个累积变量 351
5.9.2  重新结合变换 354
5.10  优化合并代码的结果小结 358
...”,并没有涉及到处理器架构,缓存啊这些东西。
springsummer
2017-12-25 15:09:42 +08:00
我也是非科班的。16 届。底层目前还没有碰.... 快一年了目前还是在看 java 基础类的书。最近在读 effective java 与 设计模式。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/417357

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX