振动编码:鸡饲料或食物的问题

如果使用得当,大型语言模型有望彻底改变软件开发。但它们并不容易适应一些明显的企业 IT 用例

Harness 的《软件工程中的人工智能现状》报告基于 Coleman Parker 对美国、英国、法国和德国 900 名软件工程师的民意调查,发现近三分之二的受访者 (63%) 已经在使用人工智能 (AI) 工具进行代码生成,略多于一半 (51%) 的人预计人工智能工具将显着影响代码创建的速度。

人工智能被用来帮助开发人员加快编码速度。9 月,政府数字服务 (GDS) 报告了一项使用 AI 编码助手的试验结果,发现试验参与者在使用此类工具时平均每个工作日节省了 56 分钟。报告的最大影响是代码的创建和分析,平均每天节省 24 分钟。

GDS 的试验发现,超过一半的用户表示花更少的时间搜索信息或示例,更快地完成任务,更有效地解决问题,并更享受他们的工作。

但氛围编码将快速编码的能力提升到了另一个层次,允许软件工程师用自然语言指定他们想要实现的目标。它使用 Anthropic 的 Claude Code 等生成式 AI (GenAI) 工具,使人们能够使用自然语言查询来生成软件。这有望降低软件开发人员的进入门槛,使他们能够更轻松地创建应用软件。但有一些警告。

Azul Systems 副首席技术官 Simon Ritter 最近在接受《计算机周刊》采访时谈到了使用自然语言编写程序的一些挑战。

根据他的经验,程序员可能面临的第一个问题是,大多数程序都是用类似英语的确定性编程语言编写的,这意味着程序员有效地告诉计算机它需要做什么:程序员编写的代码、计算机如何解释代码以及如何将其转换为指导计算机中央处理的机器代码之间不应存在误解单位 (CPU) 该怎么做。

编译器将源代码转换为机器代码,然后可以运行。解释器实时转换并执行代码。在这两种情况下,程序员都依靠编译器和解释器来准确地转换为机器代码。

开放解释

但是,当使用自然语言来指定程序需要实现什么时,情况并非如此。

里特展示了自然语言的变幻莫测,他说:“鸡肉可以吃了。这实际上意味着什么?这是否意味着地上有一只活鸡,它现在饿了想吃?还是我从超市买了一只鸡,放进烤箱里,现在就给我吃了?

对这句话的两种解释都是有效的,但正如里特指出的那样,它们有两种截然不同的含义。“当试图明确描述你想做什么时,自然语言存在一个真正的问题,”他说。

Vibe 编码依赖于训练 AI 模型。这使得它适用于某些编程任务,但不是全部。一个应该是氛围编码的理想用例的例子是在企业软件中,其中需要创建附加功能或自定义代码来满足特定的业务需求。软件的原始开发人员可能不愿意提供这种额外的功能,或者这样做的成本过高。Vibe 编码将允许内部软件开发人员团队轻松添加所需的功能。

然而,正如 Ritter 指出的那样,人工智能驱动的代码生成器不太可能接受过需要定制的企业应用程序细节的训练。“氛围编码的问题在于,你如何专门针对你感兴趣的特定应用程序训练你的模型,并让它理解该应用程序,以便它可以做出适当的改变,”他说。

Ritter 指出,除非提供该软件的公司提供人工智能模型来使客户能够创建额外的功能,否则使用第三方人工智能工具来定制企业应用程序将非常困难。

企业计算中的另一个用例是软件集成,比如当有人需要使用两个或更多应用程序来完成工作。这是企业 IT 中另一个常见问题,也是机器人流程自动化工具试图解决的问题。但 Ritter 认为,一个 AI 通过观察和学习数百人使用不同应用程序的交互,将提供丰富的训练数据,以推动使用 vibe coding 的企业应用程序集成。

尽管它有局限性,但对 Ritter 来说,振动编码是一种创建非关键任务代码的有用技术。一些简单的用例包括创建用于简单自动化的宏,例如在电子表格中或在将数据集转化为有意义的报告时。

在一份面向政府软件开发者的指导文件中,GDS 指出,人工智能编码助手可以产生确定性和可测试的输出,这意味着通过振动编码生成的源代码可以轻松地进行测试和验证。

因此,回顾 Ritter 的鸡的例子,如果输出看起来不正确——因为 AI 误解了程序员的普通英语指令——程序员可以要求它再次尝试,直到 AI 生成可接受的代码。这意味着程序员需要承担通过振动编码产生的代码的责任。

它是政府在针对 AI 编码助手的指南中认可的内容。GDS 表示,负责任地使用 AI 编码助手需要程序员理解生成的代码,并对任何更改承担全部责任。

阅读更多关于人工智能、自动化和机器人的内容