0
0
0
0
博客/.../

TiDB 唐刘:AI 编程缺失的抽象层

 TiDB官方  发表于  2026-09-18

编者按:

在“AI 会不会取代程序员”的讨论声中,这篇文章提供了一个更有历史纵深的视角:AI Coding 本质上可能是计算机发展历史中又一次抽象层的升级,而我们正处在新的概念体系尚未成型、旧的抽象层已经松动的“真空期”。文章从下一代人才培养的路径断裂这一痛点切入,逐步展开对 AI 时代程序员所需素养以及未来软件工程的思考。

最近跟不少公司的研发 leader 聊 AI 时代下面人才的培养。然后大家都比较悲观,一个越来越常见的判断是:

年轻程序员可能最危险。

理由很直接。过去一个工程师通常从修 Bug、写 CRUD、补测试、做简单模块开始,慢慢建立工程经验。但今天,这些最适合 Junior Engineer 的工作,恰恰也是 AI 最容易完成的。

于是问题变成了:

如果这些入门工作都被 AI 做掉了,下一代程序员到底怎么成长?

但我越来越觉得,这并不是“AI 抢走初级岗位”这么简单。

从计算机发展史来看,这其实更像是又一次巨大的抽象层升级 。

真正特殊的是:这一次,能力已经跃迁了,但新的抽象层还没有稳定下来。

一、计算机发展的历史,本来就是不断跳过底层的历史

我们这一代程序员其实已经跳过了很多东西。

写 C、C++ 的时候,大多数人不会每天写汇编;写 Java、Go 的时候,也不会自己管理寄存器;写 Web 应用,不需要自己实现 TCP;用数据库,也不会自己实现 B+ Tree、WAL 或 Raft。

这并不意味着程序员越来越不懂计算机。

恰恰相反,这正是计算机工业进步的方式:

把已经解决的问题封装成新的抽象,让下一代从更高的位置开始。

机器码之上出现汇编,汇编之上出现 C,高级语言之上出现 Framework,服务器之上出现 VM、Cloud、Container 和 Serverless。

每一次抽象升级,都有人担心“基本功是不是没了”。但基本功其实没有消失,只是换了位置。

你不需要每天写汇编,但遇到性能问题时仍然要理解 CPU 和内存。你不需要自己实现数据库,但遇到一致性问题时仍然需要理解事务和复制。

所以真正重要的不是“是否亲手实现底层”,而是:

当抽象失效时,你能不能穿透它,理解下面发生了什么。

二、AI Coding 也是一次抽象升级

如果沿着这个逻辑看 AI Coding,它可能并不仅仅是一个更聪明的代码补全工具。

过去的编程关系更像:

人 → Programming Language → Computer

未来越来越可能变成:

人 → Intent → Agent → Programming Language → Computer

以前程序员直接操纵代码。未来越来越多的时候,我们操纵的是一个能够生成、修改、运行、测试代码的智能系统。

代码依然存在,就像汇编今天依然存在。但它可能逐渐从 the interface we operate 变成 the artifact the system generates 。

于是软件工程最重要的问题,也会从:

How do I write this code?

逐渐变成:

How do I make the system reliably produce the right software?

这其实已经不是同一种工程学。

三、今天最大的麻烦,是“AI 时代的 C 语言”还没出现

过去每一次抽象升级,最终都会形成稳定的概念体系。

Unix 有 Process、File、Pipe。数据库有 Table、Transaction、SQL。Cloud 有 VM、Object Storage、Function。Kubernetes 有 Pod、Service、Deployment。

一旦这些抽象稳定下来,围绕它们就会形成课程、工具、最佳实践和工程训练体系。

但 AI 时代目前还不是这样。

我们有 Prompt、Context、Memory、Tool、Skill、MCP、Sandbox、Workflow、Sub-agent、Harness、Agent SDK。

但到底哪些会成为未来真正稳定的一等抽象,现在没人知道。

甚至连一个最基本的问题都没有统一答案:

什么叫一个 Agent?

它是一个长期运行的 Process?一个按需启动的 Runtime?一个 Workflow?一个有 Memory 和 Tools 的 LLM?还是一个拥有 Identity、Memory、Files、Tools、Runtime 的新型计算实体?

今天整个行业都还在跑马圈地。

所以我们看到一个很特别的现象:

模型能力已经进入下一代,软件工程方法却还没有跟上。

模型可以生成几千行代码,但我们还没有很好地解决如何精确表达意图、如何管理长期 Context、如何定义权限边界、如何 Debug 非确定性系统,以及如何做 Agent 的测试、Eval 和 Observability。

所以今天程序员真正的不安,不只是 AI 太强。而是:

我们突然站到了一个还没有被定义的新抽象层上。

四、Junior Engineer 真正的问题,是旧的训练梯子断了

过去的软件行业其实存在一套非常成熟的隐性学徒制。

新人先写简单功能、修 Bug、做测试,再逐渐维护模块、处理线上问题、理解数据库和分布式系统,最后形成系统设计能力。

这些工作表面上是在创造产出,实际上也在训练工程直觉。

写很多 CRUD 的价值,不只是 CRUD 本身。在这个过程中,一个新人会逐渐理解边界条件、错误处理、接口设计、测试、线上环境,以及为什么一个看起来正确的改动也可能造成事故。

而 AI 最先自动化掉的,恰恰就是这些训练任务。

因此真正的问题不是:

Junior Engineer 还有没有工作。

而是:

如果他们不再通过这些工作积累经验,新的训练机制是什么?

这也是 AI 带来的一个悖论:

AI 降低了生产代码的门槛,却可能提高了成为优秀工程师的门槛。

五、AI 时代的“基本功”,可能会重新定义

我并不认为未来的小朋友还应该完全按照我们的路径,从底层一路重新走一遍。我们当年也没有先写几年汇编,才开始学 C。

抽象存在的意义,本来就是让下一代从更高的位置开始。但新的基本功可能会发生变化。

「Specification」

过去最大的困难是“我知道要什么,但不知道怎么写出来”。未来更大的困难可能是:你到底知不知道自己要什么。

当 Coding 越来越便宜,准确描述目标、约束、接口、不变量和验收条件,反而越来越重要。某种意义上, Spec 可能正在成为新的代码。

「Decomposition」

过去程序员主要把需求拆成函数和模块。未来还需要决定什么交给人、什么交给 Agent、什么可以并行、什么必须 deterministic、哪里设置 checkpoint、哪里必须人工审核。

过去我们设计代码的 control flow。未来可能更多是在设计 intelligence 的 control flow 。

「Verification」

AI 最大的问题不是不会生成,而是会高速生成“看起来正确”的东西。因此软件工程的瓶颈很可能会从 How to generate 转向 How to verify 。

测试、Invariant、Eval、Failure Injection、Security Boundary,这些能力反而会越来越重要。

「Context Engineering」

真正决定 Agent 表现的,不只是 Prompt,而是它在某个时刻到底看到了什么、记住了什么、拥有哪些工具和权限。

所以未来可能出现一种新的工程能力:为智能系统设计正确的 Context。

最后,底层知识仍然重要,但学习方式会变化。未来未必要求每个人都从零实现一个数据库,但你至少应该能够回答:

AI 生成的这个系统,在并发、Crash、Network Partition 下为什么会出错?

所以核心会逐渐从亲手实现所有东西 ,转向拥有足够强的 Mental Model,判断 AI 什么时候错了。

六、我们可能正处在 AI Programming 的“汇编时代”

如果一定要给今天找一个历史坐标,我觉得我们可能还处在:

AI Programming 的 Assembly Era。

今天大家疯狂研究 Prompt、Memory、Agent Loop、Tool、MCP、Sub-agent、Harness。

这些都很重要。但其中相当一部分,未来可能会被更高层的 Runtime、Framework 和 Protocol 吃掉,就像今天的大多数程序员不再关心寄存器如何分配一样。

所以真正值得关注的问题,也许不是:

哪一个 Coding Agent 最终会赢?

而是:

AI 时代的那个“C 语言”到底是什么?

它很可能不是一门传统 Programming Language。它也许是一组新的抽象:

Intent + Specification + Context + Tools + Memory + Policy + Runtime + Eval

它描述的不再只是“计算机应该执行哪些指令”,而是:

一个智能系统应该在什么约束下完成什么目标,以及我们如何知道它真的完成了。

如果这个判断成立,那么今天大家看起来是在竞争 Coding Agent、IDE、Agent Framework 和 Harness。

但更深一层看:

大家其实是在争夺下一代计算机的抽象定义权。

结语

所以,当我们说:

“AI 时代年轻程序员没有培养路径了。”

更准确的说法也许是:

旧的培养路径正在失效,而新的培养路径还没有被发明出来。

这并不是软件工程第一次经历抽象升级。从机器码到汇编,从汇编到 C,从 Server 到 Cloud,计算机历史本来就是一部不断向上抽象的历史。

AI 只是又把我们往上推了一层。

真正不同的是,这一次速度太快。快到新的抽象还没有形成,旧的抽象就已经开始松动。

所以我们第一次如此清楚地看到了:

一个新抽象层形成之前的混乱。

但这也意味着一个非常大的机会。

下一代程序员应该学什么,AI-native Software Engineering 应该长什么样,人与 Agent 应该如何分工,新的 Runtime、Context、Memory、Eval 应该如何组织,这些问题都还没有标准答案。

而最终定义这些抽象的人,很可能也会定义未来十年甚至二十年的软件工程。

0
0
0
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论