【转载】程序猿如何修炼自己的《九阳神功》?

科技   2024-01-09 09:31   江苏  

【编者按】曾经的我也抱着许多“大部头”编程书籍进行翻阅,印象深刻的有《JavaScript权威指南》,几百页,我花了好久才看完,但看完之后,我觉得我对JS的基础就有了一个比较全面的了解,学习的过程是枯燥的,但这是我们的底子,基础越牢固,可能越能承受住追求更高台阶的分量。无意间在腾讯云开发者社区看到此文,深以为然,转载以以飨读者。

有人说: 计算机基础就像是张无忌修炼的《九阳神功》一样,是程序员的内功心法。
我觉得这说的一点都不为过,相信工作过一段时间的人都能够意识到计算机基础的重要性,刚开始你上手一些简单业务的时候可能是发觉不到的,可能你入门开发的时候拿着框架撸了一个外卖的页面还觉得自己挺牛X的,编程也就那么回事。
但是一旦你进入到领域的深水区,你就会发现这些计算机基础真的是无处不在,可能一些没什么科班基础的从业者鼓捣很久的东西,当他还在赞不绝口的时候,在科班的人看来,仅仅只是基本功而已,就跟走路和呼吸一样自然。
而且我一直认为,判断一个程序员是否科班出身最有力的依据,是对于计算机基础的理解水平,而并非文凭、绩点。
我这里所说的计算机基础主要指的是考研408那四门专业课:计算机组成原理操作系统计算机网络以及数据结构与算法,外加一门编译原理,一共五门
Vue的作者尤雨溪曾经说在编译原理这方面,所谓"科班出身"的人和普通人的区别,仅仅是多花了三四个月学了一门课而已,但我想说三四个月都是给面子了,很多科班的人也就比普通人多学了三四天而已。
如果你现在是计算机科班的学生,请珍惜现在学校的时光吧,好好把计算机基础打扎实,这是你们学习最宝贵的时间,以后工作了再来补真的难度要上一个量级。如果你是非计算机专业的人,也不用羡慕,更不用过于焦虑,这个行业一直都是看真才实学,好好把计算机基础学好其实比空有一张计算机相关专业的文凭要强得多。
这里是我整理的计算机基础必备的资料和书单,每一份都是我精挑细选的,每个人的时间都是有限的,如果不切实际地灌输这样庞杂的资料,那么对大部分人而言这些资料应该只有一种结果:躺灰。下面的资料虽然不多,但都足够经典,足以建立起完整的计算机知识体系,强烈推荐给大家。

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及中间代码优化等等,当时在学校学的时候还是挺痛苦的,而且学完之后对于编译原理的实际运用,还是一脸懵逼。对于这门学科,推荐一本足够经典的书。

(文章有适度编辑)

易语言自习室
致力于易语言的推广,打造自学者的编程学习乐园,扎根易语言,面向全编程!
 最新文章