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

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

个人背景

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

疑惑

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

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

27757 次点击
所在节点    程序员
72 条回复
qwertty01
2017-12-26 09:56:05 +08:00
@jimzhong 程序员一般都是在现代处理器进行开发吧,当然不排除个别做嵌入式的是在标量处理器上进行开发。
我来说一下我对优化程序那个章节为什么印象特别深刻。当年的我作为一个 C 小白,在读这本书的时候经历前四章包括不限于 Int/Double 的底层表示,汇编语言各种“无用东西”的学习之后,终于能在第五章可以学到我能在实际编码中能用上并立即产生效果的东西,那种感觉我至今都没有忘。
所以你告诉我第五章可以跳过是我所不能理解的。
当然每个人的技术背景不同,学习心路更是各异。到此为止吧
zhaogaz
2017-12-26 10:50:31 +08:00
哦,楼主说的这个书,我前一阵子也在看。

我也是 16 届毕业,非科班的。

我个人的想法是这样的,这本书的最大意义,在于理解计算机整体的发展和构造,了解一些可以迁移的知识。

前人的很多开发和设计经验都是在前前人基础上进行的。

如:你在开发一个功能的时候,突然想起来,这个东西的实现思路,和以前计算机中 xxx 的实现思路类似。然后你起名字的时候,就会写借用 xxx 的名字,来实现这个功能。等到别人看你开发的这个功能,看到你的名字,就会看到 xxx 这个名字。然后就知道了你这个要干什么了。

当然以上这个例子是理想情况。

做题什么的,就算了啊。

看书,不做题,看 1 天,记 5 天。看书,做题,看 3 天,记 10 天。

以上两种方式没什么本质区别,最终都是忘了。

所以,经过以上讨论,我认为最合适的方式是,先随便看看,等干活干一阵子之后,隔一阵子翻一翻这种书,指不定就会有惊喜发生。
Poarry
2017-12-26 12:04:27 +08:00
不错不错
学习学习
shaco
2017-12-26 12:30:50 +08:00
@zhaogaz 我并不同意看 1 记 5,看 3 记 10 这种说法,我觉得做题收获的并不是让记忆保持更长久,而是让理解更加深刻,理解这种东西是最有裨益的,也是最难忘的...
safeoy
2017-12-26 14:47:58 +08:00
最近也在看 CSAPP,刚开始大致翻了一下整本书,感觉前几章比较底层,于是从第二部分第七章链接开始看,看了 4 天才看完这章。总体来说对我这种非 CS 科班出身的码畜来说确实难度很大,但是收获也很大
tinylcy
2017-12-26 18:28:37 +08:00
去年对其中的两个 Lab 做了总结,写了博客,可供参考。
* [CSAPP: Bomb Lab]( http://tinylcy.me/2017/CSAPP-Bomb-Lab/)
* [CSAPP: Attack Lab]( http://tinylcy.me/2017/CSAPP-Attack-Lab/)

另外,我还对 CSAPP 网络编程一章实现的 Web Server 进行了扩展,造了一个轮子 [Vino]( https://github.com/tinylcy/vino),同时也有总结:[如何实现一个 Web Server]( http://tinylcy.me/2017/%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AAWeb-Server/)。

希望对你有帮助。
zhaogaz
2017-12-26 21:15:06 +08:00
@shaco 兄弟啊,现实一点。你看看理解深刻的人多少是做题做出来的,常用才能深刻理解啊。。。

当然你要觉得做题理解深刻也行的啊,慢慢看呗。。。
myk502
2018-11-12 19:27:07 +08:00
这本书真的很难吗?
我花了大概 2 个月时间,把前十章全部看完了,配套 lab 也做完了,无非每天看 8-10h。每天 1-2h 是不够的,刚进入状态就结束了。
去官网搜一下他们上课的视频和 ppt,有一部分内容挺好的。
shaco
2018-11-13 18:18:30 +08:00
@myk502 厉害!我觉得可能是因为我看的时候没有建立起整个计算机课程体系的概念,也就是说如果有一些课程(比如操作系统,组成原理这些)如果先看过的话,看起来应该会轻松很多,
oooolongtea
2020-05-02 14:41:09 +08:00
@shaco csapp 这本书你看完了吗?
levelworm
2020-05-26 07:25:29 +08:00
刚看到第二章,看的好慢啊。。。主要是不是每天都有时间看。不过的确不难就是了,就是东西多。
levelworm
2020-06-01 10:11:47 +08:00
目前看完 2.3 了,接下来就是第二章最后一节浮点数。说实话我也不知道看了有啥用,这辈子可能也做不了 CS 的活,大概就是看着玩儿吧。。。目前还不知道课后习题难度如何,要是难的话大概率劝退。。。Lab 倒是希望难一些。还是更喜欢具体的编程写代码。

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

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

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

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

© 2021 V2EX