罗青
数十年来,计算机科学家研究了自动生成代码的方法,但是现代AI引发了对这种可能性的新兴趣。大家都熟知GPT -3之类的程序可以撰写非常流畅的文本,人们也在寻求更好的工具编写计算机代码,巴黎的一家创业公司SourceAI正在对编程工具进行微调,该工具使用人工智能根据对代码应该做什么的简短文字描述来编写代码。例如,告诉工具“将用户给定的两个数字相乘”,它将用Python编写大约12行代码来实现这一目的。
机器学习的进步使得自动执行越来越多的编码任务成为可能,从自动完成代码段和微调算法到搜索源代码和查找程前ug。自动编码可能会改变软件开发,但是现代AI的局限性和盲点可能会带来新的问题,机器学习算法的行为可能无法预测,并且除非经过仔细检查,否则机器生成的代码产生bug不可避免。
GPT-3是旧金山公司OpenAI于2020年5月发布的功能强大的AI语言程序,专注于在AI方面取得根本进展。SourceAI的创建者是最早使用GPT-3的数百人之一。OpenAI尚未发布GPT-3的代码,但是它允许某些用户通过API访问模拟,SourceAI和其他类似程序都在利用GPI,-3的优势来发挥更大的空间。
GPT-3是一个庞大的人工神经网络,它训练了从网络上刮取的大量文字。虽然没有掌握文本的含义,但可以很好地捕获语言模式,生成有关给定主题的文章。
“在测试该工具时,我们意识到它可以生成代码。”SourceAI的创始人兼首席执行官富尔坎贝克说。“那时候我们有了开发SourceAI的想法。”
他不是第一个注意到这种潜力的人,GPT-3发布后不久,一位程序员展示了它可以通过重新混合已馈入的代码片段来创建自定义Web应用程序,包括按钮、文本输入字段和颜色,另一家公司Debuild计划将该技术商业化。
SourceAI旨在让其用户以许多不同的语言生成更广泛的程序,从而帮助自动创建更多软件。“开发人员可以节省编码时间,而没有编码知识的人也可以开发应用程序。”贝克说。
一些软件巨头似乎也对此感兴趣。微软在2019年向openAI投资了10亿美元,并已同意许可GPT-3。在5月的软件巨头的Build大会上,OpnAI的共同创始人Sam Altman演示了GPT-3如何为开发人员自动完成代码。微软拒绝评论如何在其软件开发工具中使用人工智能。
纽约大学计算机科学与工程系的助理教授布伦丹.多兰.维特说,像GPT-3这样的语言模拟很可能会用于帮助人类程序员。但是使用AI生成和分析代码可能会出现问题,在今年3月份行业发表的一篇论文中,麻省理工学院的研究人员表明,通过进行一些谨慎的更改(例如替换某些变量)创建程序,可以欺骗经过训练以验证代码将安全运行的AI程序。从事这项工作的博士生沙尚克斯利康说,不应过分依赖AI模拟。他说:“这些模拟一旦投入生产,很快就会变得很讨厌。”
纽约大学的教授多兰.加维特说,用于生成编码工具的语言模拟的性质也带来了问题。他说:“我认为直接使用语言模拟可能最终会产生错误甚至不安全的代码。…‘毕竟,他们接受过人为编写的代码的培训,而这通常是错误的和不安全的。”
多兰,加维特为此创建了“此代码不存在”网站,该网站要求訪问者判断一段代码是由人类编写还是由GPT -3的专门版本编写。他现在正在开发AI生成的代码,以产生用于测试安全软件的错误。
除了初创公司,大公司Facebook也干过这类研究,他们于2019年4月发布过Aroma的详细信息,该工具使用机器学习来识别功能相似的代码片段,可以帮助开发人员更快地编写程序并避免错误。DeepMind的一个团队在2020年10月展示了一个AI程序,该程序可以设计出人类编写的算法的更有效版本。英特尔有一个名为“机器推断的代码相似性”的项目,该项目使用AI来确定一段代码的作用,这可以帮助自动构建复杂的程序。
可以判定,机器学习也已经出现,可以自动完成构建和微调其他机器学习算法所需的某些工作。SourceAI工具的实际效果如何尚待观察,尚无公开演示该技术,但创始人贝克表示,对于简单的命令,该技术在80%到90%的时间内都有效。他似乎有信心可以改变软件开发的某些方面,他打趣道:“学生将使用它来快速完成家庭作业。”