计算机科学自诞生以来,对整个世界产生了巨大而深远的影响。可以预见的是,在未来很长一段时间内,这门学科的重要性会持续上升。然而,与影响力一同增长的,是技术与知识体系的爆炸式扩张,各种语言、系统、框架、理论层出不穷,更新速度极快。

这直接带来了一个非常现实的问题:学习计算机科学的门槛越来越高,成本越来越大,学习路径也越来越容易让人困惑。“如何学习计算机科学”变成一个当下非常重要的问题。

基于我个人的教学与科研经验,尝试总结一些在计算机学科学习中常见、但往往被忽视的认识与方法。

1 一个非常常见和危险的误区

我们先从澄清一个误区开始。

很多人在学习计算机时,内心都会有这样一种信念:

  • “我要掌握所有的知识”
  • “我要把每一个细节都搞清楚”
  • “我绝对不能有任何遗漏”
  • “只要有一个点没弄懂,我就学得不扎实”
  • “如果我没掌握每个知识点,那就是我不够虔诚”

这种学习观念并非凭空产生。从小学到大学,我们所接受的教育长期是考试导向的:知识点是有限的、评分标准是确定的,那么“遗漏一个点,就会被扣分”。 在这种环境下,特别容易培养成一种习惯:死扣细节、追求“全覆盖”。这对于考试来说,是非常合理的,也是必要的。

但问题在于,这种学习方式并不适用于真实的计算机科学世界!

原因至少有以下几点:

  • 现实任务中,不会的东西永远比会的多

    无论是写一个系统,还是开展一项科研工作,几乎不可能“先学完再开始”。如果要求自己把所有相关知识提前补齐,效率会极其低下,甚至根本无法开始。

  • 计算机知识规模已经远超个人可完全掌握的范围

    操作系统、编译器、网络、安全、数据库、AI……每一个方向都有太多值得钻研的内容,试图“掌握所有细节”,在今天,已经是不现实的幻想

2 一些有意思的观察

其实,有一个非常反直觉的事实就是,很多计算机专业毕业生,在工作几年后,早已记不清课本里的推导和算法细节;很多科研人员,也并不随时记得所有公式、接口或实现技巧。但这并不妨碍他们持续产出和推进,把工作做得漂漂亮亮。

为什么?

因为他们真正掌握的,并不是“所有知识点”,而是下面这两件事:

  • 知道去哪里找知识、找文档、找论文、找代码
  • 在思维上不固执,遇到不会的东西,无所谓,就现学、现查、现补

所以,真正的事实是,即使忘掉了大量知识细节,依然可以把工作和研究做好。

3 对计算机学习方式的一个根本转变

如果用一句话概括计算机科学的学习方式,那就是:

计算机科学不是“记忆型学科”,而是“问题驱动型学科”

我们根本就不需要提前准备好所有答案,而是需要具备一种能力,就是“当我们面对问题时,能不断找寻答案”的能力。

这要求我们在学习观念上完成一次转变:

  • 从“必须全部学会”转向“随时学会当前最需要的那部分”
  • 从“我现在不懂说明我基础不扎实”转向“不懂是常态,能不能快速补上才是关键”

4 一些更现实、也更可行的学习方法

4-1 思维上:不要难为自己

不要因为一页没看懂、一段代码没理解、一个细节没想清楚,就否定整个学习过程。“暂时不懂”并不是失败,而是日常状态:

  • 跳过暂时看不懂的细节
  • 带着模糊理解继续往前
  • 最后,再反复回头,补起来

理解是可以分阶段完成的,而不是一次性完成的。

4-2 行动上:刷起来

一份材料往往不是短时间就能学会的,通常需要反复学习:

  • 第一步:一开始了解基本概念
  • 第二步:接下来,是搞清楚有几部分,每一部分都是做什么,这几大块都是怎么连接起来的
  • 第三部:搞清楚每一块的实现原理
  • 第四部:从第二步或第三步开始,就可以结合阅读或编写代码来推进了,碰到不会的,再返回第二步、第三步,重新学习、思考、推演

由浅入深由上到下,一遍遍地刷起来,直到完全明白为止。

4-3 最重要的能力:解决问题的能力

计算机科学中,最重要的能力是自学和解决问题的能力,体现在几方面:

  • 能否快速定位问题
  • 能否明白如何寻找和阅读并筛选文档、论文、源码
  • 能否在实践中逐步修正自己的认知

技术会过时,工具会变化,语言会被替代。但解决问题的能力是常伴吾身的。

5 总结

计算机科学在最底层仍然依赖于严谨的数学推导,但是对于当前大部分层次来说,不需要像属性一样严谨地推导。我们所做的往往是转变思维,从“必须全部学会”转向“随时补充”,最终变成“碰到问题解决问题”。

6 补充

现在AI技术发展很快,尤其是大模型。AI非常擅长做一些知识的梳理和归纳,非常适合做为百科全书来使用。所以,一定要把AI作为助手使用起来。它可以把学习的门槛降到最低,提高效率,让整个学习曲线变得平缓。