在正式开始之前,我想先说说我自己的犹豫。
这个代码课堂做到现在,我常被一个问题缠住:未来真的需要每个人都读代码吗?
我越想越觉得,这个问题不能轻易回答。因为我们已经见过许多曾经重要、后来更多交给工具或专业人员的技能。最早,人们对着二进制机器码编程;后来,汇编把机器指令变成助记符;再后来,高级语言把内存、寄存器、指令集一层层藏到身后。今天,大多数开发者不再需要逐行翻译机器码,也不必在每次开发时追到所有底层细节。那么,今天我们逐行阅读的代码,会不会也只是下一代人的“汇编”?如果 AI 已经能生成、解释、重构代码,我们还有必要让人一行一行去读吗?
有一阵子,我甚至怀疑:我教的这些东西,是不是正在被时代悄悄搬走?
但后来我发现,我可能把问题问窄了。真正的问题不仅是“未来还需不需要代码”,也是“未来还需不需要有人理解系统”。抽象替我们承担了越来越多的细节,也让一些关键过程离我们的视线越来越远。多数时候,我们可以依靠它的承诺前进;但当承诺失效,或者后果足够重要时,我们需要知道怎样追问下去。
好的抽象也会帮助我们理解。它让我们不必同时盯住所有细节,能够在清楚的边界上合作。我们要练习的,是判断什么时候需要打开黑盒、打开哪一层,以及获得什么证据以后可以暂时停止。
如果未来自然语言就能生成软件,这种判断仍然重要。总得有人能打开黑盒,哪怕只是打开一条缝,去看清楚:它到底在做什么,为什么这样做,边界在哪里,代价是什么,出了错谁负责。AI 可以生成代码,但责任不能生成。
所以,我慢慢不再把“读代码”理解成读那些字符。读代码,是在读一种逻辑:一件事如何被拆解,数据如何流动,条件如何分支,错误如何暴露,系统如何被信任。语法会变化,语言会更替,框架会兴衰;理解、验证和说明边界的能力,更有机会跨越这些变化。它们的方法也需要不断改进,不能靠一句“永远不过时”来保证。
这个课堂,因此不打算押注某一种语言,也不承诺你学会一套永远不过时的语法。我更想做的,是和你一起练习一种更底层的能力:面对一个陌生系统,不害怕;看到一段逻辑,愿意追问;遇到一个结论,知道怎么验证;面对一个黑盒,至少能判断它在什么条件下值得信任。
我仍然不知道,未来是不是每个人都需要读代码。也许不需要。也许它会更像一种基础素养,而不是一项职业技能;也许它会变成少数人的专业,同时变成更多人的常识。但我知道,面对不确定,仍然愿意理解、验证和负责,这件事值得继续练习。
所以,这个课堂还是开始了。不是因为我确信自己握住了未来,而是因为我想和你一起,在抽象越来越高的时代,保留一种把东西看清楚的能力。
我们开始吧。