翻译:与语言无关的编程:为什么你可能仍然需要代码

以下是 Joaquim Rocha 博客文章《Language Agnostic Programming: Why you may still need code》的中文翻译(保留原文结构与技术细节):


与语言无关的编程:为什么你可能仍然需要代码

作者:Joaquim Rocha

声明 我通常不会写这种推测性的文章。然而,随着人工智能正在迅速改变我们构建软件的方式,我一直在思考这一切可能的发展方向。所以这既不是预测,也不是宣言,只是我一直在思考的一些想法。


在我的职业生涯中,我有幸(有时也痛苦地)使用过多种编程语言与范式。而最近,像所有人一样,我也越来越多地借助大型语言模型(LLMs)及其用户界面工具(如 GitHub Copilot、Cursor、Claude Code 等)来提升产出效率。然而,当看到类似「英语将成为你唯一需要的编程语言」这类断言时,我仍会心生怀疑------尤其是其中那个"唯一"和"永远"的措辞:如果 AI 能把我们的英文描述准确转化为可运行的代码,我们是否就真的不再需要编程语言了?

诚然,AI 在将自然语言翻译为代码方面表现惊人;而且,如果你能用英语(或其他任何自然语言)清晰表达意图,确实可以完成大量工作------我自己也常这样做!

但即便如此,我认为编程中仍有某个方面是不可或缺的:调试 。无论 AI 生成代码的能力有多强,甚至它在自动调试方面表现得多好,当程序行为不符合预期时,我们依然需要理解代码实际做了什么。而要做到这一点,我们就仍需依赖编程语言------未必是为了最初编写代码,而是为了阅读、跟踪与推理那些出问题的代码。


当自然语言无法满足需求时

我弟弟特别喜欢一则经典笑话:一位软件工程师的伴侣让他去商店买牛奶,并补充了一句:"如果店里有鸡蛋,就带十二个回来。"结果工程师带回了十二瓶牛奶。问他为何如此,他回答:"因为他们有鸡蛋。"

这类歧义对人类(大多数时候)可通过语境与常识轻松化解,但计算机却要求指令绝对无歧义。在编程中,类似的歧义可能导致灾难性故障,而非仅仅是幽默的误会。

编程语言正是为此而设计:它通过语法消除了歧义。例如,当我们写下:

c 复制代码
for (int i = 0; i < 10; ++i) {
    printf("%d\n", i);
}

其含义毫无模糊空间(暂且忽略 C 语言中诸如"未定义行为"这样有趣的例外)。相比之下,用自然语言描述相同逻辑的方式可能有几十种,每一种都可能因措辞不同而引发歧义。


编程语言选择的困境

暂且假设我们认同这样一个前提:LLM 负责全部代码生成,而编程语言仍为理解和调试所必需。那么问题来了------这也是软件工程师长久以来的困扰:你该学哪门语言?

"英语即唯一编程语言"这一愿景背后的热情,不仅在于简化编程或降低门槛,更在于它似乎消解了"为 Web 学 JavaScript""为系统编程学 C"这类认知负担。

语言的选择从来不只是个人口味问题;它会实质性地影响开发流程。习惯使用 Python 或 JavaScript 等高级语言的开发者,无需掌握 C 的手动内存管理或 Rust 的所有权模型;反之,若被迫在一门不熟悉的语言代码库中工作,效率可能大打折扣。


一种新的可能性:与语言无关的编程

LLM 或许能开启一种引人入胜的可能性:如果它们能无缝且准确地翻译不同编程语言,那么调试(甚至更广义的代码理解)是否可彻底脱离特定语言的束缚?

试想这样一种未来:程序由 LLM 用一门高度严谨的语言(如 Rust------其显式的类型系统与所有权机制确保了内存安全、线程安全与错误处理的精确性)生成并"存储",但程序员在阅读或调试时,却可按偏好将其"视图"切换为任意语言:

  • 我想看 Go?可以。
  • 你更习惯 Python?也行。
  • 同事偏爱 TypeScript?没问题。

底层程序保持同一份(精确且无歧义),而每个人通过自己最熟悉的"语言界面"与其交互

当然,技术挑战是存在的:

  • Rust 的所有权模型如何优雅表达为 Python?
  • C++ 的模板元编程或 Python 的动态类型,在其他语言中可能找不到直接对应;
  • 如何处理语言特有的惯用法与标准库?

但许多问题可通过精心设计与工具支持缓解------例如,无法良好映射到高层语言的模块仍可保留为 Rust 源码,或辅以注释说明其设计意图;而 LLM 的核心职责是确保语义一致性:无论你在哪种语言界面中修改,翻译回底层语言后行为不变。

目前,我们已能对 GitHub Copilot 说"用 Python 重写这个模块"或"把这个函数转成 JavaScript"。但要使上述设想真正高效落地,LLM 必须做到极快 (理想情况下比打开 Emacs 还快)且高度精确。这虽是极高要求,但在 AI 飞速演进的背景下,并非天方夜谭。


未来的模型

在此模型中:

  • 人工智能系统能够根据自然语言描述直接生成代码,生成精确、安全且快速的编程语言。
  • 需要阅读或调试代码的程序员可以选择他们偏好的编程语言接口。
  • 人工智能负责底层代码与各种语言接口之间的转换,确保语义在所有视图中保持一致。

这种方法可以进一步普及编程,并促进团队间的交流与协作,因为它允许程序员使用他们最熟悉的语言进行编程,而无需考虑底层实现方式。

当然,这只是一种理论,我并不确定它最终会如何发展。我甚至不确定我是否希望它如此发展!但是,鉴于人工智能和编程之间的关系仍在快速演变,我们可能会看到完全不同的范式出现,所以这种情况也并非不可能。


相关推荐
云心雨禅2 小时前
AI训练成本优化,腾讯云GPU实例选型
人工智能·云计算·腾讯云
聚梦小课堂2 小时前
2025年11月11日 AI快讯
人工智能·新闻资讯·ai大事件
taxunjishu2 小时前
Modbus RTU 转 Modbus TCP:借助数据采集提升罗克韦尔PLC工艺参数反馈实时性案例
人工智能·物联网·tcp/ip·工业物联网·工业自动化·总线协议
IT考试认证2 小时前
微软AI-900考试认证题库
人工智能·microsoft
Mintopia2 小时前
🧠 可定制化 AIGC:Web 用户个性化模型训练的技术门槛正在塌缩!
前端·人工智能·trae
打码人的日常分享2 小时前
智慧楼宇资料合集,智慧城市智慧社区智慧园区
大数据·网络·人工智能
月下倩影时2 小时前
视觉进阶篇—— PyTorch 安装
人工智能·pytorch·python
ThreeS_tones2 小时前
ppo爬坡代码及解释
人工智能·深度学习
OpenBayes2 小时前
教程上新丨Deepseek-OCR 以极少视觉 token 数在端到端模型中实现 SOTA
人工智能·深度学习·机器学习·ocr·大语言模型·文本处理·deepseek