人工智能可以用来理解计算机代码的上下文并编写自己的代码吗? 在这个方向上已经取得了令人瞩目的进展,承诺使开发人员和使用低代码/无代码平台的非开发人员的工作更有效率,并且更专注于手头的业务。
去年,英特尔与麻省理工学院和佐治亚理工学院合作,宣布创建一个自动化引擎,旨在通过研究代码结构和分析其他代码的句法差异来了解软件的意图 具有类似的行为。 英特尔首席科学家 Justin Gottschlich 表示,这项工作的目标“是使软件的创建民主化”。 “当完全实现时,机器编程将使每个人都能够通过以最适合他们的方式表达他们的意图来创建软件,无论是代码、自然语言还是其他东西。”
OpenAI GPT-3 (Generative Pre-trained Transformer) 也可以用来自动生成计算机代码。 开发经理可以“使用具有 GPT-3 功能的工具来构建应用程序的基础来开始项目,”Vincent Tabora 在 Becoming Human 中写道。 “我的意思是构建应用程序其余部分的框架。经理只需输入他们的要求,该工具就会生成经理想要的东西。这节省了额外员工的项目需求,否则他们将负责构建 初始应用程序。生成骨架后,更高级的开发人员可以带着其余的项目需求来完成应用程序。”
除了创建新的应用程序之外,用于编码的 AI 还可以为将应用程序和系统迁移到现代平台铺平道路。 在最近的一次采访中,该公司 Watson 研究中心的 IBM 院士 Maja Vuković 解释了客户如何处理数百万行代码,而她的团队如何能够使用 AI 来协助将代码迁移到新平台。 “他们的关键任务应用程序已经膨胀到超过 150 万行代码,”她说。 “数十年的添加迁移结合不同的系统。此外,代码的这种演变是由多个开发团队发生的,其中一些团队转移到不同的角色,或者甚至不再在组织中。甚至可能没有任何文档留下。 “
Vuković 说,公司的 IT 团队花了两年多的时间与遗留代码作斗争,但没有任何结果。 “那是为什么?好吧,作为人类,我们并不是为了浏览 150 万行代码并了解其中隐藏的业务功能而生的。”
输入人工智能。 “我们建立了一个人工智能模型,帮助我们在很短的时间内梳理了这个应用程序中的所有代码,”她解释说。“人工智能模型帮助我们确定代码的哪些部分已经过时或不再使用 在使用中,代码的哪些部分是冗余的,以及代码的哪些部分可以分组为更易于管理的代码组——或者更确切地说,微服务。”
AI 不仅帮助 IBM 团队推荐合适的业务功能驱动的微服务,“我们还可以使用 AI 帮助为目标微服务生成代码,进一步简化时间,”她继续说道。“它为开发人员节省了时间和精力 . 它还可以告诉您差距在哪里,还需要做什么才能使这些微服务完全可执行。 这极大地简化并加速了整个应用程序重构过程——我们的客户在他们的产品组合中拥有数以千计的应用程序。”
Vuković 强调说,这个演示项目针对的是一个包含 150 万行代码的应用程序,需要两年的时间才能手动完成。 “想象一下,如果您必须对数以千计的应用程序进行现代化改造。您想将这段时间从多年的努力压缩到几个月或几周内就可以完成的事情。”
她说,沿着这些思路,IBM 发起了一项名为 CodeNet 的计划,旨在促进人工智能在代码片段中的应用。 她的团队正在制作超过 1400 万个代码样本,作为 GitHub 上可用的开源数据集的一部分。 该项目旨在提供代码,ImageNet 及其 1400 万张图像的数据库为开发人员和研究人员提供已识别图像。 “我们的团队提取了最具代表性的代码样本,可以帮助我们或帮助 AI 训练,更好地帮助开发人员编写软件。我们的 AI for code 技术将从根本上改变我们对编码的看法,”Vuković 预测道。