← 最新论文
💻 computer science

Specification-Driven Code Translation Powered by Large Language Models: How Far Are We?

本文研究了将自然语言规范作为中间表示用于大语言模型代码翻译,发现虽然将其与源代码结合能提升特定语言对(如 Python 和 C++)的表现,但该方法并未带来持续的整体性能提升。

原作者: Soumit Kanti Saha, Fazle Rabbi, Song Wang, Jinqiu Yang

发布于 2026-05-05
📖 1 分钟阅读☕ 轻松阅读

原作者: Soumit Kanti Saha, Fazle Rabbi, Song Wang, Jinqiu Yang

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正试图将一份复杂的食谱从一种语言(如法语)翻译成另一种语言(如日语)。你拥有原始食谱(即源代码),但你知道,有时仅凭查看法语单词还不足以让日语翻译完美无缺。你可能需要一个中间步骤:用简单、通俗的英语描述该食谱的意图(即自然语言规范)。

本文提出了一个重大问题:添加这个“通俗英语”中间步骤,是否真的能帮助大语言模型(LLM)更好地翻译代码?

以下是他们研究发现的分解,使用了日常类比:

设置:三种翻译方式

研究人员测试了三种不同的方式,要求 AI 翻译代码:

  1. 直接方法:“这是法语食谱。将其翻译成日语。”(仅源代码)
  2. 摘要方法:“这是食谱的通俗英语摘要。现在写出日语版本。”(仅自然语言规范)
  3. 混合方法:“这是法语食谱,以及通俗英语摘要。将其翻译成日语。”(源代码 + 自然语言规范)

他们用许多不同的“语言”(Python、C++、Java 等)和不同的 AI 模型进行了测试。

大惊喜:中间人并不总是有帮助

你可能会认为,拥有一个清晰、简单的摘要总会带来帮助。事实并非如此。

  • “仅摘要”陷阱:当 AI 尝试根据通俗英语摘要(而未查看原始代码)进行翻译时,它经常失败。这就像试图仅凭口头描述重建一台复杂的机器;你会丢失具体细节(如螺丝的确切尺寸或操作顺序)。AI 失去了正确完成所需的“结构上下文”。
  • “混合”最佳点:将摘要原始代码一起添加,在某些特定情况下有所帮助,但并非所有情况。
    • 何时有效:这就像一位乐于助人的导游。对于复杂、混乱的代码(尤其是PythonC++),摘要充当了“去噪过滤器”。它帮助 AI 忽略令人困惑的语法,专注于主要思想。
    • 何时失效:对于非常严格或冗长的语言(如CJava),摘要往往会丢弃关键的底层细节(如内存管理)。在这些情况下,摘要实际上使翻译变得更糟,因为它隐藏了重要规则。

结论:“直接方法”(仅源代码)实际上在整体上最为可靠。摘要是一个“补充信号”——它有助于解决特定问题,但它并非适用于所有情况的灵丹妙药。

“垃圾进,垃圾出”问题

研究人员发现,翻译的质量完全取决于摘要的质量。

  • 良好场景:如果 AI 生成了完美、准确的摘要,翻译质量就会提高。
  • 糟糕场景:如果 AI 在摘要中犯了一个小错误(例如算错了一个数学步骤),该错误就会被固化到最终代码中。AI 会忠实地遵循错误的指令,就像厨师遵循有缺陷的食谱一样。

“维修店”

研究的一个重要部分是修复错误。他们发现,许多翻译失败仅仅是“拼写错误”或小语法错误(例如缺少分号)。

  • 他们构建了一个系统,充当代码的拼写检查器。如果翻译无法编译,AI 会被要求修复特定错误。
  • 结果:这个简单的“修复步骤”修复了大量错误(将准确率提高了约 6–8%)。这表明 AI 通常理解逻辑,但只是在语法上出错。

质量检查(SonarQube)

最后,他们使用名为 SonarQube 的工具检查了翻译代码的“卫生状况”(该工具扫描安全漏洞和不良实践)。

  • 发现:翻译方法并没有显著改变代码的“整洁”程度。
  • C 语言激增:然而,他们注意到,翻译为 C 语言会导致显著更多的安全警告(如不安全的内存访问)。似乎无论是否使用摘要,AI 都难以遵循 C 语言严格的安全规则。

面向普通受众的总结

将这项研究想象成测试一个机器人团队的翻译新策略。

  • 旧方法:机器人查看原始文本并猜测翻译。
  • 新方法:机器人先阅读摘要,然后进行翻译。
  • 结论:当原始文本令人困惑时,摘要有用,但当文本非常技术性或精确时,它往往有害。最佳策略通常是坚持使用原始文本,但将摘要作为棘手之处的备用方案。而且,就像人类编辑一样,机器人需要在最后进行“拼写检查”步骤,以捕捉他们的小错误。

该论文得出结论,虽然使用自然语言摘要是一个有趣的想法,但它并不能取代对原始代码的需求。它是一个有用的工具,但只有在谨慎使用并应用于正确情境时才有效。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →