acm-header
登录

ACM通信

新闻

人工智能改写代码


数据表、插图

来源:Media Whale Stock

计算机代码几乎与现代生活的方方面面都有交集。它管理工厂,控制交通网络,并定义了我们与个人设备交互的方式。据估计,仅在过去20年里,就有大约2.8万亿行代码被编写出来。一个

然而,人们很容易忽略一个基本事实:人们必须编写软件,而这通常是一个漫长、乏味且容易出错的过程。尽管低代码和无代码环境简化了事情,甚至允许非数据科学家通过拖放界面构建软件,但它们仍然需要相当多的时间和精力。

人工智能(AI)应运而生。在过去的几年中,出现了各种可以自动化代码生成的系统和框架。例如,Amazon开发了CodeWhisperer,这是一种编码助手工具,可以自动使用Python、Java和JavaScript进行编码。GitHub的Copilot通过自然语言自动生成代码,IBM的Project Wisdom专注于构建一个允许计算机编程的框架。

卡耐基梅隆大学(Carnegie Mellon University)助理研究教授鲁本·马丁斯(Ruben Martins)表示:“随着软件变得越来越复杂,并进入非开发人员和非数据科学家的领域,人们需要能够简化和自动化编码任务的系统。”Akkio是一家提供人工智能辅助编码工具的公司,其联合创始人兼首席执行官亚伯拉罕·帕兰吉补充说:“人们已经研究这些工具很多年了。突然,轨道垂直了。”

尽管人工智能不太可能很快消除开发人员的工作,但它已准备好彻底改变软件创建的方式。例如,OpenAI推出了dall - e2,这是一种通过自然语言生成逼真图像和艺术的工具。此外,OpenAI Codex使用十多种编程语言构建软件,包括Python、Perl、Ruby和PHP。

IBM研究院首席科学家Ruchir Puri说:“计算机编写代码的能力,甚至是为其他计算机编程的能力,有可能从根本上重塑我们的工作和生活方式。”

回到顶部

抽象代码

自动化编码任务的想法并不新鲜,也不是特别具有革命性。从穿孔卡片到今天庞大的开放源代码库,从零开始构建软件的需求已经稳步下降。近年来,低代码和无代码环境(通常允许人们拖放表示预先建立的任务或功能的元素)极大地简化了软件开发,同时扩大了生产软件的人员范围。

然而,新兴的人工智能工具让这一概念更加强大。在某些情况下,这些平台预测任务并建议代码块——类似于应用程序现在自动预测电子邮件和其他文档中的单词和短语。在其他情况下,它们实际上会根据自然语言输入生成图像、函数和整个网站,或者根据人工智能认为接下来应该发生的事情建议编码动作。

例如,Akkio的平台允许人类构建机器学习和其他AI模型,用于预测、文本分类和领先评分等事情,而无需与代码交互。这是一个简单的拖放工具或应用程序的主张。帕兰吉解释说:“这使得没有编码知识的人可以完成各种相当复杂的任务,并在没有过去可怕障碍的情况下编写代码。”

亚马逊的CodeWhisperer也被设计为软件开发人员的机器学习驱动的编码伙伴。它分析现有的代码结构,以及驻留在集成开发环境(IDE)中的标准书面注释,并一次生成最多15行代码。这包括整个函数和逻辑块。

GitHub的Copilot通过Visual Studio code、Visual Studio、Neovim和JetBrains等IDE平台自动生成代码。它可以对数十种编程语言提供建议。

还有IBM的Project Wisdom,其目标是超越10或15行自动生成代码,构建一个人工智能框架,可以在几小时内生成整个组件、服务和应用程序,而不是几天或几周。它通过自然语言界面在红帽Ansible平台上自动生成YAML代码。普里说,我们的目标是“超越结构化规则和机械流程,开发一个能够理解机器语言的人工智能框架。”

回到顶部

维护镜像

然而,人工智能生成代码的最引人注目的例子来自OpenAI。在DALL-E应用程序中输入几个字——从“法国河边的逼真城堡”到“坐在海滩上的女人毕加索风格的画作”——应用程序就会弹出看起来像是由天才艺术家或摄影师制作的图像。该平台巧妙地结合概念、属性和样式来创建图像。

OpenAI Codex也在推动传统软件开发的边界。它可以根据自然语言命令构建简单的应用程序。例如,软件设计人员可能会用简单的英语指示系统编写一个应用程序,该应用程序可以处理产品退货并发出标签。在提供基本参数和所需图形、菜单和按钮的描述之后,OpenAI Codex可以生成代码。尽管该系统并不完美,但通常可以由人来检查结果,并在需要的地方进行一些小的修复。


普里说,他们的目标是“开发一个能够理解机器语言的人工智能框架。”


与此同时,其他各种公司,包括微软、Diffblue和DeepMind(2014年被谷歌收购),继续探索和开发人工智能编码,作为其平台或离散人工智能引擎的一部分。以微软为例,它有自己的工具Power Platform,但它也帮助资助了GitHub的Copilot,以及私人项目OpenAI。“我们可以输入神经网络的大量数据已经改变了竞争环境。我们看到的平台可以从简单的自然语言模型中生成代码,”马丁斯解释道。

由此产生的无监督深度学习框架推动了这场革命。例如,Amazon使用开源和Amazon提供的数据的大型语言模型(LLM)训练CodeWhisperer。OpenAI法典源自从网络和其他来源收集的超过700g的数据。IBM最初插入了大约三分之一千兆字节的Ansible信息技术中心数据,以及它自己的GitHub和Yammer数据;数据源的总大小大约为10 gb。

不过,人工智能编码并非没有挑战和争议。虽然没有人特别担心开发人员、网站设计师和其他人很快就会加入失业大军——这些平台目前只是辅助工具——但在10年或20年内,它们开始在许多任务上取代人类并非不可能。机器对自然语言以及产生软件的语义和逻辑序列的掌握越来越令人印象深刻。

回到顶部

AI编码并不完美

更大的担忧在于这些系统生成的代码的质量,以及无法窥视许多这些AI模型并完全理解它们是如何构建的。使用预测工具向开发人员建议代码是一回事;完全把任务交给计算机完全是另一回事。在许多情况下,比如控制飞机、医疗设备或自动驾驶汽车的软件,编码错误可能是危险的,甚至是致命的。在银行或医疗保健系统中,自动编码错误可能导致重大中断。

然而,由于人工智能并不能真正掌握事物的意义——它可以生成自然语言文本,甚至包含逻辑、语法和其他错误的计算机代码——缺乏密切的人工审查会增加风险。正如哈佛大学计算机科学教授Stuart M. Shieber, James O. Welch, Jr. and Virginia B. Welch所说,“没有意识或感知。它只是一台做出极有可能预测的机器。”事实上,AI可能会导致绑定、操作变量和一致性方面的错误。更重要的是,即使使用相同的输入或请求,也不能确定程序会随着时间的推移产生相同的代码。因此,在可预见的未来,在关键情况下部署许多这样的系统是不完全值得信赖的,如果不是有风险的话。

事实上,尽管人们对这项技术充满热情,“人工智能编码仍然有很多限制,还有很长的路要走,”马丁斯说。“它仍然会犯很多错误,包括严重的错误。”最棘手的错误之一是发现人类不容易发现的语法异常。就像一个人或人工智能系统可能会忽略用“throw”代替“through”或用“witch”代替“which”一样,计算机可能会在代码中包含错误,有时会带来严重的后果。

因此,Martins将他的研究重点放在开发一个框架上,该框架可以通过一种称为程序合成的技术发现和修复问题。它依赖于包含结构元素和语义模式的高级验证工具。b“验证过程使用形式化方法和数学,”马丁斯解释道。尽管该方法在人类代码和人工智能生成的代码上都能很好地工作,并且在构建修复框架方面表现出了很大的希望,但目前它一次只能检查不到100行代码。


“没有意识或感觉。它只是一台做出极有可能的预测的机器。”


另一个问题是人工智能编码系统引入的模糊法律和道德界限。由于这些深度学习系统通常是基于大量包含公开可用和受版权保护内容的数据源构建的,因此可能会出现问题。例如,DALL-E系统生成创作者风格的人造图像的能力已经引起了当代艺术家的愤怒,他们说他们的作品和作品集——可能需要数年的时间来创作——因为模仿图像而瞬间减少了。c

回到顶部

模糊的线

当受版权保护的材料——包括从互联网上抓取的公开源代码——被输入一个构建实际软件应用程序的深度学习模型时,事情变得更加复杂。例如,在2022年10月,软件开发人员兼设计师马修·巴特里克(Matthew Butterick)指控GitHub用他的知识产权和其他人的版权作品不正当地训练副驾驶。随后,他威胁要提起诉讼。d这项指控也让微软陷入了困境,微软为该项目提供了部分资金,并推广了该工具。e

可以肯定的是,许多问题仍未得到解答,包括是否有可能达到不需要编程语言的地步。与此同时,很明显,自动化AI编码将在开发人员、数据科学家和普通人创建软件和其他内容的方式中发挥越来越重要的作用。Akkio的Parangi说:“人工智能编码注定会变得更加强大和有影响力。”“我们已经在构建非常强大的人工智能代码生成模型,这些模型正在产生明显的影响。”

*进一步的阅读

萨卡尔,A.,戈登,A.,内格里努,C.,珀利茨,C.,拉加文,s.s.,佐恩,B.。
用人工智能编程是什么感觉?33届会议记录理查德·道金斯编程心理学兴趣小组年会(PPIG 2022)2022年8月12日。https://arxiv.org/abs/2208.06213

陈,M.等。
评估基于代码训练的大型语言模型,2021年7月7日。康奈尔大学。https://arxiv.org/abs/2107.03374

Li, Yi等。
竞赛级别的代码生成与AlphaCode。2022年3月16日。DeepMind。https://arxiv.org/pdf/2203.07814.pdf

冯,Y.,马丁斯,R.,巴斯塔尼,O.和迪利格,I.。
使用冲突驱动学习的程序综合,ACM SIGPLAN公告,第53卷,第4期,2018年4月,第420-435页。https://dl.acm.org/doi/abs/10.1145/3296979.3192382

Vasconcelos, H., Gansal, G., Fourney, A., Liao, Q.V.和Vaughan, J.W.
生成概率还不够:改进AI代码建议的错误突出显示,2022年。https://helenavasc.com/static/HCAI_NeurIPS_2022.pdf

回到顶部

作者

塞缪尔·格林加德他是一名作家和记者,居住在美国俄勒冈州西林。

回到顶部

脚注

一个。http://bit.ly/410gmwl

b。https://dl.acm.org/doi/10.1145/3192366.3192382

c。https://www.msn.com/en-us/news/technology/artists-say-ai-image-generators-are-copying-their-style-to-make-thousands-of-new-images-e2-80-94-and-its-completely-out-of-their-control/ar-AA130QBL

d。http://bit.ly/3Ked0zW

e。http://bit.ly/3I4KttO


©2023 acm 0001-0782/23/04

本论文部分或全部的电子版或硬拷贝供个人或课堂使用的许可是免费的,前提是副本不是为了盈利或商业利益而制作或分发的,并且副本的第一页上必须有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有署名的摘要。以其他方式复制,重新发布,在服务器上发布,或重新分发到列表,需要事先特定的许可和/或费用。请求发布权限permissions@acm.org或传真(212)869-0481。

数字图书馆是由计算机协会出版的。版权所有©2023 ACM, Inc.


没有找到条目

登录全面存取
忘记密码? »创建ACM Web帐户
文章内容:
Baidu
map