“如果把初级工程师消灭了,三年后企业去哪里招高级工程师?”
出品丨奇点折射(ID:rgznai100)
在计算机编程史上,Anders Hejlsberg 是极少数能在四十年间连续缔造多个行业级工具的大师。从奠定现代 IDE 雏形的 Turbo Pascal、Delphi,到微软核心基石 C#,再到统治现代 Web 工程的 TypeScript,他被誉为“程序员中的程序员”,现任微软技术院士。

近日,前 Meta 资深工程师 Ryan Peterman 在播客《The Peterman Pod》中与 Anders 展开深度对话。此次访谈的核心背景是 TypeScript 团队正在将编译器核心从 JavaScript 移植至 Go 语言,以实现高达 10 倍的性能提升。Anders 首次披露了选择 Go 而非 Rust 的底层逻辑、利用 AI 进行大型重构的方法论,以及对"AI 将消灭初级工程师”等狂热预言的务实反驳。

要点速览
- 推倒重写 vs 代码移植:彻底重写会破坏向后兼容性,对生态有毒。TypeScript 选择语义 1:1 的代码移植,Go 凭借垃圾回收、内存安全及共享内存并发成为最佳契合语言。
- AI 重构方法论:不应直接将老代码扔给 LLM,而应让 AI 编写“转换工具”。将 AI 的随机性锁定在造工具阶段,确保工具执行结果的 100% 确定性。
- 主流语言的马太效应:AI 擅长训练集高频语言。AI 爆发不仅不会淘汰主流语言,反而将巩固 TypeScript 和 Python 的统治地位。
- 警惕“平流层架构师”:脱离一线代码无法把握产品脉搏。亲自编码才是保持技术敏锐度与职业快乐的源泉。
- 初级工程师的价值:若初级工程师消失,未来将无源产生高级工程师。无论 AI 生成多少代码,人类始终承担最终的法律与道德责任。
立足生态:自举优于强行改造
主持人:TypeScript 编译器最初为何选择用 JavaScript 编写?这违背了编译器通常使用静态语言的常规认知。
Anders Hejlsberg:早期原型确为 C 语言,但转向 JavaScript 是基于战略考量:融入目标生态系统实现自举(self-host),远胜于站在生态外强行适配。作为重度用户,团队能即时感知痛点与性能瓶颈。此外,JavaScript 的跨平台特性使其能直接在浏览器运行,这在 WebAssembly 普及前是原生代码无法实现的。
尽管 JavaScript 曾被视为缓慢,但 V8 引擎的优化已将其性能拉近原生代码 2-3 倍。决定性能的关键往往在于算法,而非单纯的运行时环境。
主持人:与 Clang 等原生编译器相比,TypeScript 编译器有何独特之处?
Anders Hejlsberg:其核心并非生成机器码,而是“转译”与类型检查。由于最终会擦除类型,类型系统纯粹服务于开发者工具链(如补全、重构、导航)。TypeScript 独特的渐进式类型系统允许混合使用有类型代码与any,这在传统编译器中极为罕见。
我们的目标不是优化运行时性能,而是提升开发者(包括 AI)的生产力。如今许多项目仅将 TypeScript 作为类型检查器,配合 esbuild 等工具完成构建。
重构策略:为何选 Go 而非推倒重来
主持人:为何现在决定用原生语言重写?为何选择 Go 而非 Rust?
Anders Hejlsberg:核心诉求有二:性能与并发。JavaScript 的单线程模型限制了多核 CPU 的利用,而摩尔定律的红利已从单核频率转向核心数量,我们需要共享内存并发机制。
关于语言选择,我们确立了“代码移植(port)”而非“推倒重写(rewrite)”的原则。彻底重写会破坏向后兼容性,对生态具有毒性。移植要求新语言必须支持垃圾回收(GC)和一等函数。Go 完美契合这些假设,且在共享内存并发上表现卓越。
Rust 虽热门,但其借用检查器(borrow checker)不支持循环引用数据结构,而这在编译器语法树中无处不在。若选 Rust,需重构大量底层逻辑,违背了“最小工作量换取最大收益”的初衷。在机器码质量与并发收益上,Go 已足够优秀。
主持人:在移植过程中如何利用 LLM?
Anders Hejlsberg:我们并未直接将数十万行代码扔给 AI 翻译,因为 AI 的非确定性(stochasticness)会导致幻觉,且审查成本极高。更优策略是:让 AI 编写一个“确定性转换工具”。将随机性留在工具生成阶段,一旦工具成型,其执行结果便是完全确定的。这大幅缩小了验证表面积,确保了迁移的可靠性。
AI 时代:主流语言的护城河更深
主持人:既然 JavaScript 语义怪异,为何依然流行?AI 会促使开发者转向更理想的语言吗?
Anders Hejlsberg:JavaScript 在函数一等公民等关键决策上非常成功,其真正的优势在于无处不在的跨平台能力。TypeScript 的成功在于改良而非颠覆 JavaScript,将其糟粕关进类型的笼子里。
关于 AI 的影响,AI 最擅长的是训练集中频率最高的语言。海量存在的 JavaScript、TypeScript 和 Python 数据,使得 AI 在这些语言上的表现远超小众语言。试图用 Prompt 教 AI 一门新语言成本高昂。因此,AI 的普及将进一步巩固主流语言的地位。目前 GitHub 上 TypeScript 的使用量已超越原生 JavaScript 和 Python。
未来,AI 生成的代码将默认包含类型注解,因为静态类型能帮助 AI 自我校验错误,无需依赖昂贵的运行时沙箱。验证 JavaScript 需运行环境,而验证 TypeScript 仅需编译器。
主持人:为何不直接在后端使用原生语言?
Anders Hejlsberg:这取决于生态契合度。在 Web 服务端,TypeScript 更多扮演编排者角色,性能瓶颈往往不在语言本身,而在 I/O 或数据库交互。盲目追求原生性能而放弃成熟的 JS/TS 生态往往得不偿失。
至于为何早年未重写?当时无法预见项目规模会膨胀至千万行代码级别,且摩尔定律停滞与单线程限制是近年才凸显的矛盾。
工程师成长:拒绝做“平流层架构师”
主持人:创造一门编程语言需要怎样的特质?
Anders Hejlsberg:这是一场持久战,任何新语言仅有 10% 是创新,其余 90% 是枯燥的基础设施构建。设计师必须精通工程实现与语言艺术,并具备长达十年的专注力。
主持人:您提到在 C# 时期曾“放手太彻底”,这对您有何启示?
Anders Hejlsberg:在 C# 项目中,我曾过度脱离一线,成为“漂浮在平流层的架构师”。虽然负责规范设计,但不再触碰底层硬核代码,这导致工作满意度下降。写代码才是每天叫醒我的动力。重返 TypeScript 一线编码让我重获快乐。即使身为技术院士,我也坚持亲自提交代码,因为只有深入细节,才能真正把握产品的脉搏,识别潜在的重构需求。
人生短暂,必须从事让自己感到最快乐的事。对我而言,那就是写代码。
AI 与未来:初级工程师不可替代
主持人:AI 是否会在一年内写出 90% 的代码,甚至取代初级工程师?
Anders Hejlsberg:AI 确实能生成大量代码,但在处理前所未有的复杂算法或特定领域专有方案时,仍力不从心。AI 本质是基于概率的记忆外推,缺乏真正的创造性理解。
关于取代初级工程师的观点更是谬误。如果消灭了初级工程师,三年后我们将无处招募高级工程师。人才梯队必须通过实践培养。虽然工作形态正从“手写代码”转向“审查 Agent 产出”,但人类依然是流程的核心主体。
更重要的是责任归属。当应用出现漏洞或法律纠纷时,承担责任的永远是人类,而非 AI。若完全放弃对代码的理解与控制,将无法履行这一责任。
主持人:您对初入行的工程师有何建议?
Anders Hejlsberg:第一,尽早学会团队协作;第二,别让别人用他们的极限来定义你的不可能。当年 Turbo Pascal 被众人断言无法实现,正是因为我“不知道它不可能”,才最终做成了它。

