在 AI 编程的今天,学好数据结构等基础还有必要吗?
这两年,一个疑惑越来越常见。
既然 AI 已经能写函数、补代码、改 bug,很多时候还做得比人更快、更像样,那么数据结构、算法、操作系统这些基础,到底还有没有必要学?
这种疑惑并不奇怪。因为 AI 最容易制造出来的一种感觉,就是很多过去必须自己翻过去的坎,现在似乎都可以直接绕过去了。不会写,问它;看不懂,问它;一时想不明白,还是问它。结果来得很快,代码能跑,页面能动,报错也像被处理掉了。于是人很容易继续往前滑:既然答案已经可以这样快速地得到,那么中间那些难而慢的东西,是不是也就没那么重要了?
可问题恰恰在这里。
会得到结果,和会判断结果,从来不是一回事。
基础知识真正重要的地方,从来不只是让你能手写一个链表,或者在面试里默出某种排序。它更深一层的作用,是让你慢慢成长出一种判断:什么是合理的,什么是危险的;什么只是暂时跑通了,什么才是真正站得住;什么看上去优雅,什么其实只是在悄悄积累代价。
以写文为例:你当然可以找一个很会写的人替你写,也可以让系统瞬间生成一篇看上去完整、流畅、甚至颇像那么回事的文章。可如果你自己并不识字,也不知道一篇文章是怎么组织起来的,不知道一句话为什么成立,一段论述为什么空了、虚了、偷换了概念,那么你其实并没有能力判断它到底写得好不好,你交上去得了满分,也不知道为什么。
编程也是一样。AI 可以替你生成很多东西,但数据结构、算法、系统基础这些内容,本质上更像“识字”。它们未必每一次都会直接变成眼前那几十行代码,却决定了你有没有能力看懂一段实现背后的代价,能不能意识到一个方案的问题,到底出在复杂度、状态管理、资源约束,还是抽象本身就错了(当然我不是说学了数据结构就有了这些能力,但这些能力往往是通过基础知识一步一步长出来的)。
而更麻烦的,还不只是“要不要学基础”这件事本身。
更深一层的问题在于,AI 和这个时代几乎所有成功的工具一样,都在把人往同一个方向推:**更低的摩擦,更快的反馈,更少的等待。**只要提问,就立刻有答案;只要描述,就立刻有一版实现;时间一长,人就会越来越不适应那些没有即时回报的学习过程。
可真正重要的基础,偏偏大多不是即时反馈的。
学数据结构,常常是枯燥的;学操作系统、网络、编译原理,也往往很难立刻看到产出。你得反复推,反复想,反复卡住,甚至长时间处在一种“我好像知道了一点,但其实还没真正懂”的状态里。这个过程本来就不轻松。而一旦人习惯了快速得到答案,思考本身的迟缓、痛苦和不确定,就会显得格外沉重。慢慢地,人不是失去了聪明,而是越来越难以忍受“尚未理解”。
这才是更值得警惕的地方。
因为解决复杂问题的能力,从来不是轻易习得的。一个人如果太早习惯了浅层反馈、粗略理解和快速闭环,后面再遇到真正需要耐心、需要推演、需要长期停留的问题,就很容易本能地想跳过去,想尽快拿到一个“差不多”的答案。可很多重要的问题,往往不能靠“差不多”解决。
今天我们常说,不必再死记那么多细节,更重要的是理解原理。这话当然没错,但也很容易被说偏,仿佛只要会讲原理,就不必再进入那些具体而困难的细节了。可很多时候,真正的理解,恰恰就是在研究细节的过程中长出来的。
记住和理解,并不等同。
前者只是知道一个结论,后者则是知道它为什么成立,又会在什么地方失效。所谓:“人教人学不会,事教人能学会”,你不去碰那些痛点,难点,不经历长期思考而无果的煎熬,就很难真正理解那些原理和结论,甚至于很难记住。
所以回到最开始那个问题:在 AI 编程的今天,学好数据结构等基础还有必要吗?
我的回答还是:要学。
不是因为以后所有代码都还得你一行一行手搓,也不是因为旧时代那套学习方式必须原封不动地保留下来,而是因为如果这些基础都不在你脑子里,你面对 AI 时,得到的就只会是一种“看起来很厉害的结果”。你可以调用它,使用它,甚至依赖它,但你很难真正判断它,怀疑它,修正它。
而更重要的是,学这些基础,保住的也不只是一些知识点。
保住的还是一种能力:在没有即时反馈的时候继续想,在细节里继续钻,在暂时想不明白的时候,不急着把问题交出去。说到底,AI 可以代替你干活,但不要让它代替你的思考。
这些年我也一直在反复想这些问题,顺手把一些和 AI 编程有关的思考慢慢整理成了一本开源小书,放在 GitHub 上持续更新。若你也对这些变化感兴趣,或者也正处在这种转变里,也许可以一起看看:AI-programming-book