软件开发者使用计算机语言进行交流。工程师们精通命令与符号,依靠编码技能构建应用程序。如今,支持开发者的工具正在演进,使得新一代工程师更像列车调度员——依赖算法将自然语言提示转化为应用。借助 AI 反馈,这些工具承诺让软件应用的构建变得快速而简单。

这正是 GitHub 与 OpenAI 联合打造的 Copilot 的核心所在。该平台本质上是一个 AI 增强的助手,充当开发者的虚拟结对程序员。Copilot 基于公开代码库训练,目前以技术预览形式提供。

GitHub Copilot 使用 OpenAI Codex——一个基于 GPT-3 的引擎,据其官网介绍,该引擎“从注释和代码中提取上下文,并即时建议单行代码和整个函数”。

尽管 Copilot 并非唯一承诺 AI 辅助开发流程的工具,但高德纳高级研究总监 Arun Batchu 指出,它可能是向前迈进的一步,因为它能利用 GPT-3 的机器学习能力将自然语言转化为代码。在某种程度上,它可以缓解业务需求与所构建软件之间的脱节。

“这正是我对新一代工具潜力感到兴奋之处,”Batchu 说,“它们提高了标准。”

随着智能工具辅助开发,未来的软件开发者将更多聚焦于连接业务需求与技术实现。然而,预示这一转变的工具尚未达到广泛使用和信任所需的成熟度。它们必须首先确保安全性,才能被企业级广泛采用。

AI,梦想中的结对程序员?

在日益膨胀的开发者工具供应商市场中,此前已有多种解决方案提供与 GitHub 类似的功能。Tabnine、Kite 和 Codota 等提供商借助开源代码库和库,能够实时生成建议。

Info-Tech Research Group 研究总监 Usman Lakhani 表示,其他代码补全工具允许快速原型设计或创建“骨架”应用,而 Copilot 则旨在接管更多“填充”过程。“这正是 Copilot 试图切入的地方,”Lakhani 说。

据 GitHub 称,尽管 Copilot 基于现有代码库训练,但“其建议的绝大多数代码是独特生成的,从未出现过”。该公司拒绝了采访请求,但将问题指向了产品的FAQ 部分


“我仍然认为大多数公司……总体而言,尚未在软件开发周期中看到 AI 带来的显著变革。”

c26dbb7f8ae5524841267a35b6468bcbecf9efd7dcf6efba56bf278ef43ecb45.png

Nitzan Mekel-Bobrov

eBay 首席 AI 官


Copilot 的另一个市场差异在于对 GPT-3 的采用。这项技术曾撰写过一篇描述自身的文章,其能力比前代 GPT-2 高出数个量级。GPT-2 依赖 15 亿参数产生结果,而新模型可利用 1750 亿参数。

“从 AI 的角度来看,尤其是基于深度学习的新一代 AI,正如它正在提升或改变其他每项工作一样,它显然也在改变软件创建本身的工作,”Batchu 说。

AI 几乎未放过任何传统角色。在供应链领域,自动化重塑了仓库工人的操作方式。机器人进入营销领域,提供有效营销文案的示例。AI 也处理了许多原本由人类解决的客户服务查询。

像 GitHub Copilot 这样的工具利用 AI 帮助工程师“发现你需要构建的应用的形态,但它不会是完美的,”Batchu 说。

“Copilot 大约十次中有一次能猜出我想写的确切代码,其余时候它建议的东西要么相当不错,要么完全离谱,”Marmelab 首席执行官兼联合创始人 Francois Zaninotto 在Hacker News 帖子中评论道。“但当它猜对时,感觉就像在读我的心。”

技术是否已成熟?

Copilot 是更大趋势的一部分:AI 作为生成工具的潜力,正如高德纳所提出的。AI 不再袖手旁观,而是可以自主产出,无论是更高效的营销文案、新的配送路线、具有治疗潜力的新化合物,还是如 Copilot 所做的应用基础设施及其驱动代码。

“我仍然认为大多数公司,尤其是大型公司,可能也包括小型公司,总体而言,尚未在软件开发周期中看到 AI 带来的显著变革,”eBay 首席 AI 官 Nitzan Mekel-Bobrov 说。

尽管这些应用的版本早已存在,但行业仍在评估 AI 对软件开发过程的长期影响。“我认为初始应用或第一阶段,实际上是在现有流程的边缘应用 AI,而不是改变整个流程,”Mekel-Bobrov 说。


“从 AI 的角度来看,尤其是基于深度学习的新一代 AI,正如它正在提升或改变其他每项工作一样,它显然也在改变软件创建本身的工作。”

c26dbb7f8ae5524841267a35b6468bcbecf9efd7dcf6efba56bf278ef43ecb45.png

Arun Batchu

高德纳高级研究总监


至于代码输出,存在一个疑问:算法在自主生成代码时能否应用工程最佳实践。Lakhani 曾访问该产品的技术预览版,发现大部分代码不符合编码最佳实践。“我感觉,我最初是在大海捞针,”他说,“但这并不意味着它不会改进。”

如果 AI 结对程序员被广泛采用,安全性将是高管们希望审查的另一个因素。未受保护的代码进入企业应用将带来麻烦。自动生成代码的最大风险之一是“它们可能满足十分之九的良好实践,但遗漏的那一个良好实践恰恰是使公司暴露于最大风险的那个,”Lakhani 说。

在一项研究中,研究人员给 Copilot 提供了 89 个不同场景,生成了 1,692 个程序。经审查,约 40% 的代码包含网络安全漏洞,研究人员 Hammond Pearce、Baleegh Ahmad、Benjamin Tan、Brendan Dolan-Gavitt 和 Ramesh Karri 报告称。

但一些人认为 AI 工具实际上可能使软件开发更安全。使用经过验证的代码数据库构建软件,可以减少因内部新编写代码而无意中向应用添加安全漏洞的机会,Incredibuild 首席技术官 Dori Exterman 说。“作为开发者,我在某种程度上更受限于理解我生成的代码可能产生的安全漏洞,”Exterman 说。

除了安全问题,平台灵活性及其在现有编码流程中的高效集成也存疑,因为它们对计算资源需求很高。“Copilot 的问题在于你仍然需要先进的 AI 硬件,因为模型如此庞大且计算密集,”Batchu 说。

程序员的未来

成为软件开发者意味着什么?答案随着行业工具的发展而演变。“到目前为止,趋势在某种程度上是相似的,”Exterman 说。“所有软件开发生态系统都试图最小化开发者需要做的编码工作量。例如,从 30 年前的库开始,甚至更早。”


“Copilot 大约十次中有一次能猜出我想写的确切代码,其余时候它建议的东西要么相当不错,要么完全离谱。”

c26dbb7f8ae5524841267a35b6468bcbecf9efd7dcf6efba56bf278ef43ecb45.png

Francois Zaninotto

Marmelab 首席执行官兼联合创始人


几十年后,随着 AI 辅助工具的成熟,其加入软件开发过程可能对该职业产生持久影响。专家们预见,一种新型软件开发者形象将出现,并得到 AI 更多协助。“我绝对认为这是向通才而非专才的转变,”Mekel-Bobrov 说。“语言特定要求将放松或完全消失。”

像 GitHub Copilot 这样的 AI 平台,一旦准备好用于企业级部署,将弥合人类规格说明与代码执行之间的差距。这会影响企业如何看待软件工程师及其能为企业发挥的作用。“我认为它将使软件开发者更多地扮演软件设计师的角色,而不是专注于实现,”Mekel-Bobrov 说。“这将使他们有更多时间花在软件设计创意方面,而减少或完全不用做机械性任务。”

借助能将自然语言转化为代码片段甚至整个应用的 AI 工具,公司可以更快迭代。从依赖 IT 解决方案的业务部门角度看,软件开发者将演变为软件问题解决者,Batchu 说。“在许多方面,软件工艺将开始发生,”Batchu 说。