这推荐的几本书看完啥水平,能起飞不?

2023-09-04 23:03:15 +08:00
 heheheheljxx

大家觉得这个自学指南靠谱么 https://bitgo.tech/2023/08/11/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6%E8%87%AA%E5%AD%A6%E6%8C%87%E5%8D%97-2023/

4176 次点击
所在节点    程序员
22 条回复
rsy
2023-09-04 23:12:38 +08:00
都是很经典的教材,能透彻掌握的话能起飞,但如果只是翻过就当看过的话就不一定了
amlee
2023-09-04 23:13:23 +08:00
你要是学生,推荐 https://csdiy.wiki/

你要不是,当我没说
nikenidage1
2023-09-04 23:14:24 +08:00
能全掌握的话,30k/month 不成问题
rimworld
2023-09-04 23:14:48 +08:00
同推荐 https://csdiy.wiki/
ufan0
2023-09-04 23:19:26 +08:00
先把学历拉上才能起飞。
lostberryzz
2023-09-04 23:23:09 +08:00
都是基础课,打基础很不错,起飞不至于
golangLover
2023-09-04 23:25:26 +08:00
没有用的。程序员就整天弄这点虚的,还不如刷刷题,做下业务。会这些理论知识,然而没有实践,在现在这环境大部分时候根本没用。
levelworm
2023-09-04 23:28:10 +08:00
@amlee 不是学生也没啥问题,核心课程就那六七门。就算从头学也行。不过成家有娃的的确困难。
lbprivateacc
2023-09-04 23:29:27 +08:00
点进去报错了
levelworm
2023-09-04 23:29:55 +08:00
我觉得还是得做项目,MIT 和 Berkeley 挑一些项目做做蛮好的。

工作中很难接触到真正有难度的东西,没啥意思,做的再多也没用,还不如自己 hack 一下 kernel ,或者找 cve 。

当然顶尖公司的顶尖组就当我没说,问题是都顶尖了还操心这些做啥。
pocarisweat
2023-09-04 23:52:28 +08:00
SICP 拖了好几年都没读完,但这本书真的很有意思(或者说和 Lisp 相关的那几本著名的书都很有意思),最起码来说它可以治愈一个人的 Lisp 恐惧症,以及理解「抽象」这个抽象的词(递归了这下)。

而 CSAPP 的话呢…一大作用应该是治愈很多程序员的「底层」恐惧症,即看到所谓底层相关的知识又觉得害怕,又盲目崇拜。从这个角度说,这本书当然是每个程序员都必读的(没说要读完或者全部弄懂)。

文章里面提到的操作系统教材我没有读过。但从我读过的一些操作系统书籍来看,理论背景太深厚也会导致读起来过于抽象,只适合考试。如果能够结合操作系统的若干 API ,比如创建进程线程,映射内存,会好一点。南大还是哪个大学在 B 站上有个操作系统课,那个不错。

数据库那本也没读过,当年学校用的教材是《数据库系统概念》,到今天也就记得若干 SQL 、关系代数那套理论,还有 ACID 的定义了。更进阶的一本是《数据库系统实现》,讨论了为什么数据库的索引要用 B 树,如何根据 SQL 创建查询计划等等。所以对应了两个路线的实操,一个是多写点 SQL (如果你不熟悉的话,多和聚合函数以及 HAVING 字句斗智斗勇能很快增进对关系代数的认识),一个是试着写一个数据库引擎。其实数据库实现这块知识挺有意义的,因为这可能是第一次思考内存之外的模型(比如如何优化磁盘写入),而且 CRUD 程序员很需要这个。

说到 CRUD ,后面那本《数据密集型系统设计》就更推荐了。我觉得大多数喜欢装 X 问高并发的面试官问的问题都不会超过这本书的某个子集…而且相比偏老一些的数据库教材,这本书讨论了很多 NoSQL 的内容和新的索引结构。

而学编译原理,真的不推荐龙书。《编译器设计》或者《现代编译原理》都比龙书更容易入门。或者有一本九十年代的书,叫《编译原理与实践》,这个更适合初学者。这本书国内有翻译版也有影印版,翻译翻得很垃圾。但从普通程序员的角度看,学编译原理并不代表真的要做编译器或者发明新语言(虽然这是很有意思的事),而主要是 (1) 会用编译器;(2) 了解编译器大概能做什么优化,写代码的时候心里有数;(3) 了解底层链接器、加载器、runtime 等的工作原理。1 你看编译原理书没啥用,得看你用的编译器的文档加多用; 2 的话有点用,但你也得先懂点汇编; 3 虽然做编译器都绕不开这个,但大部分编译原理的书都不会讲,CSAPP 倒是会讲,这个有用。
loading
2023-09-05 08:19:31 +08:00
站点报错,在 github 有个比较出名的,不知道是不是一样的。

https://github.com/PKUFlyingPig/cs-self-learning
chenyu0532
2023-09-05 09:32:05 +08:00
建议边工作/实践边看,另外编译原理你们真的这么推荐么,太底层了吧。。。
heheheheljxx
2023-09-05 09:49:22 +08:00
@chenyu0532
编译原理不推荐,推荐的是 Crafting Interpreters 这本,文章也说确实编译原理不适合
heheheheljxx
2023-09-05 09:51:53 +08:00
@rimworld 东西很全
mikasa1024
2023-09-05 09:52:49 +08:00
打不开的可以看原文链接,再点中文翻译

https://teachyourselfcs.com/
wangpugod2003
2023-09-05 10:01:56 +08:00
《数据库系统实现》->《 DDIA 》
做分布式工程师(偏重于数据)必读,了解从 relational DB 的 B+树结构,到 noSQL 数据库的 LSM 结构的演进;了解从 ACID 到 CAP ,不同的分布式系统的 tradeoff 。
适合有一定基础的分布式工程师,新手看了也白看,根本不理解为啥要耍这么大一摞作甚。
wangpugod2003
2023-09-05 10:03:04 +08:00
新手工程师推荐:《 21 天从入门到精通 XXX 》,边看边速成 CRUD boy~
keepRun
2023-09-05 12:34:51 +08:00
如果你是学生的话,如果是初学,建议先从实践性较强的书籍开始学,先去动手,学计算机一定要多动手。
我认为比较合适的学习一个领域的学习方法是:
前期先看实践性比较强的书籍,适合入门阶段。
后期适合看理论性相对多点的书籍,适合有一定基础后看。
看的过程中,如果某个知识点不懂,就去 CSDN 、掘金、知乎、B 站等搜索相关内容补充知识,然后继续。
与此同时,我建议刷书,针对某个领域,我一般至少挑 3 本书,遇到不懂的可以先跳过或者换本书,这样保证自己对这个领域认识比较全面。

这个学习方法我认为适合学习大部分领域。

读书最关键的是要看懂,如果一本书让你看得一点都看不懂,先得去补齐前置知识。
wei2629
2023-09-05 13:52:50 +08:00
说实话 夸夸其谈。一问都能扯到一点,一具体什么都差点。书上得来终觉浅欲知此事需躬行,直接看杀手级的应用或者中间件,存储数据库,比这强。

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

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

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

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

© 2021 V2EX