【编者按】曾经的我也抱着许多“大部头”编程书籍进行翻阅,印象深刻的有《JavaScript权威指南》,几百页,我花了好久才看完,但看完之后,我觉得我对JS的基础就有了一个比较全面的了解,学习的过程是枯燥的,但这是我们的底子,基础越牢固,可能越能承受住追求更高台阶的分量。无意间在腾讯云开发者社区看到此文,深以为然,转载以以飨读者。
exiroom
01
计算机组成原理
这本书真的是大名鼎鼎,学计算机的应该都有所耳闻。不过注意,这是一本教学课本,它的作者是卡内基梅隆的计算机主任,是卡内基梅隆大学计算机专业的御用教材。非常适合大家从零开始认识计算机组成原理,当然里面还也有一些操作系统的知识,总而言之,知识非常成体系,适合花整块的时间仔细精读。相信踏踏实实啃下来之后,你已经是对计算机底层工作的原理非常熟悉了。
exiroom
02
操作系统
对于操作系统这块,我推荐的核心打法是:啃下一本经典的专业书,然后造轮子巩固,并且不断复盘,形成学习闭环。
exiroom
03
计算机网络
计算机网络是CS当中非常关键的一门课,学过不久就容易忘,而且对于 TCP/HTTP这些重要的协议并没有太细致的讲解。对于计算机网络而言,我推荐的打法是: 看理论入门 + 抓包测试 + 深挖理论 + 手写轮子。
exiroom
04
数据结构和算法
我看到其他的帖子谈到数据结构和算法的学习,动不动就推荐《算法导论》这种硬核大部头著作,看的我瑟瑟发抖,原来大家都是看这本书入门算法的吗?数据结构和算法是非常注重实践的学科,看了书或者看完视频,甚至觉得自己已经理解了那些算法,这也并不代表你完全掌握了这些知识,要学好数据结构和算法,必须要反复地练习、练习、再练习,这个过程是你无法省略的。
【PS】这里插句古屋的体会,想学习数据结构和算法,我觉得最方便的就是去网上找各类算法网站,然后反复练习就行,看书其实没有实践来得快。
exiroom
05
编译原理
作为一个程序员而言,我们写的各种各样的程序,本质上都是字符串,那这些字符串如何被转换为计算机可以识别的语言并且执行的呢?这就是编译原理要解决的问题。其实广义的来说,任何一种编程语言转换到另一种规则的编程语言的过程,都可以叫做编译。拿现在的前端领域来说,编译原理已经遍地开花了,无论是浏览器解析 HTML 标签语法的过程,还是诸如 babel、ts-loader 这些工具转换 JS/TS代码的过程,都离不开编译原理。之所以说编译原理这门课硬核,是因为里面确实有很多复杂的概念理解,比如DFA、NFA、递归下降、LL/LR 分析方法、AST及中间代码优化等等,当时在学校学的时候还是挺痛苦的,而且学完之后对于编译原理的实际运用,还是一脸懵逼。对于这门学科,推荐一本足够经典的书。
(文章有适度编辑)