终于看完了 CS:APP 😭

历时一年多一个月,终于断断续续的读完了《深入理解计算机系统》这本神书。

有缘接触这本书还是因为当时看到一堆人吹这本书有多神,想着搞一本来看看到底能好看成啥样。到了后才发现确实牛逼:sob:

这本书从底层说起,将计算机系统的各个层次由浅至深的进行说明。可以系统性的将以前零碎听到的名字给一口气串起来了解的感觉实在是太爽了!

这本书从信息的表示(位、整数、浮点数),到汇编与机器级程序,再到处理器体系结构、缓存与存储器层次,最后到链接、异常控制流、虚拟内存、系统级I/O、网络编程和并发。其中还包含各种的 labs,其中最令我印象深刻的就是 bomblab,以下节选原lab内容:

邪恶的邪恶博士在我们的班级机器上放置了大量的“二进制炸弹”。二进制炸弹是由一系列阶段组成的程序。每个阶段都要求你在 stdin 上键入一个特定的字符串。如果你输入了正确的字符串,那么这个阶段就被拆除,炸弹进入下一个阶段。否则炸弹会爆炸,并打印出 “BOOM!!!”,然后终止。当每一个阶段都被拆除时,炸弹才算拆除。

有太多炸弹要我们处理,所以我们给每个学生一个炸弹来拆除。这是你的任务,你别无选择,只能接受,就是在截止时间前拆除你的炸弹。祝你好运,欢迎加入拆弹小组!

中二的气息扑面而来,但确实学到了大量的知识:从 gdb 调试再到汇编代码的理解阅读,再到后来不由得感慨「现代的高级语言真是一个伟大的发明」:joy:

再到后面几章,就更多的是系统操作,也第一次切身的感受到 Unix 的设计哲学「Everything is a file」这句话到底意味着什么。后面还有教你如何用 c 语言写一个简易的 Web server。总之,终于理解对于这些系统操作到底是怎么工作的了,而不是人云亦云的「先调用函数 a,再调用函数 b」

总之在这纪念一下我阅读完了这本于我意义重大的书,也向各位佬友推荐一波,有机会一定要找来看看 :+1:

18 个赞

太强了佬

1 个赞

多写点心得体会:grin:

3 个赞

虽然感觉你应该已经听过了,但我感觉和平常编程更相关的可能是 OSTEP,会讲更多应用程序视角下如何向操作系统申请资源、操作系统视角下如何调度各类程序,不同程序之间是怎么通信达成协作的,Unix 的一切皆文件指什么。陈海波教授的《现代操作系统:原理与实现》也很好。

这种亲身经历整个计算机早期发展史,跟随作者面对计算机当时的瓶颈问题又见证突破的感觉确实很爽,哈哈。

放几个章节最前面的引言故事:


5 个赞

CSAPP,算法导论,计算机网络自顶向下。

当前知乎的编程必推神书系列,其余还有 SICP,TAOCP 这种,看不懂思密达。

太强了!

2 个赞

大佬多写写心得,我也是看了开头几篇,觉得神了,但是后续很难再跟上书里的内容了

当年读时最震撼的一句话:
bit + context = everything

1 个赞

收到,感谢:handshake:

其他这些和编程已经关系不大了,更多是系统性的知识补充,看楼主兴趣了。
算法导论和计算机网络两本书属于知识点确实有不少,但写的容易让人犯困(
SICP讲的是编程语言本身的设计,适合编程入门看,入完门之后收益就比较有限了。

感谢佬的推荐啦:face_blowing_a_kiss:

之前读过csapp,感觉有点枯燥,看了几章节就没继续看了……

感觉可以放 读书成诗 板块 :face_savoring_food:

1 个赞

实验做完快半年了我现在还对bomb lab印象深刻。cache lab也是能很好的了解缓存的概念。确实是好课。包括做完6s081之后来自己写一个简单的bash也是很有趣的体验

一开始考虑过的啦 但是觉得这个帖子没啥干货,就还是当吹水贴了(

这个 lab 我印象也特别深,可以说直到做完这个 lab 我才真正分清 Terminal 和 Shell 的区别。。。

两年前写过csapp的几个lab,质量非常高,后面从cache开始就没开始写了,不过cache也用verilog在开发板上实现过。后续我又花了点时间把xv6写了,还放在了简历上。
个人体会是,底层开发这一块目前AI的效果还不太好,在某大厂做网卡开发的主力还是40多岁的程序员。只可惜不知道我以后还有没有机会搞底层开发了……

请问佬友计算机网络推荐哪本书呀(也是黑皮的那一个系列吗)? 半路出家的数学牛马诚心请教、之前看过点图解计网/tcpip但是好像还是有点浮在表面~

1 个赞

很早之前就知道csapp了,也学了一两章,学的时候就感受到写的精妙,但可惜没坚持下去,现在的cs功力很浅薄

:joy: 我过了两年, 没复习都忘光了