如今,开发人员的进入门槛比以往任何时候都更高。 重复性任务占用了大部分软件开发时间,并且容易出错。 市场上软件开发人才紧缺网页游戏 辅助 开发,团队超负荷。 许多公司无法完全掌握现有日益复杂的代码,也无法跟上新程序开发不断变化的步伐。
对于人工智能爱好者来说,推测人工智能如何改进软件开发是令人兴奋的。 人工智能能否在几天而不是几个月甚至几年内创建一个原型框架? 它会教会人类开发人员如何更好地编写代码吗? 人工智能研究的范围广阔,计算机编程的灵活性基本上是无限的,因此很难想象当智能程序可以帮助人类与代码交互时,软件开发会是什么样子。
但许多开发人员和技术经理没有意识到,在过去的几年里,人工智能对开发团队的重要性呈指数级增长。 事实上,我们现在已经达到了人工智能辅助软件开发的初级阶段。
自动化中人工智能不可或缺
所有软件开发组织都追求高效敏捷开发,自动化技术使得大规模敏捷开发成为可能。 过去十年,在进行自动化测试时,一旦代码发生变化,开发人员可以立即提供反馈并做出相应的调整,因此软件的质量得到了很大的提高。 自动化软件管道利用机器人助手生成拉取请求,以确保持续交付更新。
但许多采用这项技术的公司发现,仅靠自动化是不够的。 自动化过程仍然存在瓶颈,大多数问题发生在新代码的创建过程中。 例如,自动化可以快速完成数百或数千个单元测试,如果开发团队自己编写这些单元测试,则需要数小时甚至数周的时间。 但如果这些提交未经测试验证,自动化管道将生成垃圾。 尽管它打破了自动化流程,但在添加新代码(和新测试)时仍然需要手动工作。
人工智能编码技术
好消息是,现有的人工智能编码技术已经可以通过自动编写测试代码来验证自动化管道的其余部分,一举解决这两个问题。 此类任务过去会消耗开发人员大量时间,导致他们无法完成更有价值的工作,例如创建新功能。 在单元测试中使用人工智能可以使自动化变得更好,尽管这个过程并不容易。
正如预期的那样,人工智能创建的测试与人类编写的测试之间存在差异。 但这些测试可以在很短的时间内生成,并且在功能上是可以接受的。 如果您无法使其比人类编写的代码更好,那么请确保在出现问题时可以轻松修复代码。 正如 Martin Fowler 在他 2006 年的文章“On Continuous Integration”中总结的那样:“经常运行不完美的测试比编写完美的测试要好。”
使用人工智能帮助开发人员编写代码,开发人员和IT经理不再被时间、成本和工作质量之间无法权衡的问题所困扰。 很多开发者在刚开始开发软件时都颇具创造力,但大量的重复性工作却侵蚀了他们原有的创造力。 AI辅助开发不仅可以让开发者在不牺牲质量的情况下更快、更经济地创造新产品,还可以帮助他们快速完成重复性任务,将注意力回归到创造性任务上,让他们在工作中有更大的获得感它。
落地是关键
金融行业等高度重视代码质量的行业也开始利用人工智能辅助软件开发。 例如3D动画,为了提高软件开发效率网页游戏 辅助 开发,高盛最近开始使用人工智能来编写代码。 他们使用 AI 工具为遗留应用程序编写了 3,000 多个单元测试和 15,000 多行代码,在几个小时内创建了完整的测试套件。 与平均每次需要 30 分钟的手动编写测试相比,AI 工具编写测试的速度可以快 180 倍以上。 总体而言,该银行使用这项技术节省了一年多的开发时间。
微软还开源了 Sketch2Code,利用人工智能辅助技术帮助设计师和工程师将手绘的用户界面草图转换为可用的 HTML 代码。 设计师和工程师就设计达成一致后,他们会对草图拍照,然后手动将草图翻译成 HTML 代码。 这个翻译过程既费时又费力,也会减慢整个设计过程。 因此开发人员想象如果这些在白纸上手绘的设计草图立即反映在浏览器中会发生什么。 结果是设计师可以立即拥有一个现成的原型,经过设计师、开发人员甚至客户的集思广益后得到验证。 这可以为网站和应用程序开发节省大量时间,因此 Sketch2Code 的诞生。
使用Sketch2Code将手绘草图转换为代码的过程
Facebook 在这方面也不甘落后。 早在去年,该公司就开发了一款名为 Getafix 的工具,可以自动查找 bug 修复并提供给工程师审批。 这极大地提高了工程师和整体代码的工作效率。 优质 Getafix 不仅为工程师提供直观的修复材质材料,还使用更强大的聚类算法来分析问题代码的上下文,以找到更合适的修复。 这款AI辅助bug修复软件Getafix已部署在拥有数十亿用户的Facebook生产环境中,大大提高了应用的稳定性。
人工智能辅助发展前景广阔
值得一提的是,目前人工智能辅助发展还处于非常初级的阶段。 只能辅助开发者进行编码和自动测试,无法实现大规模的工业应用。 复杂而困难的编程必须依赖人类开发人员。 但我们仍然需要这样的AI辅助技术来帮助开发者抵御那些基础的“又粗又累的任务”,让他们有更多的时间和精力来完成更复杂的开发。
随着人工智能技术不断进步并在更多案例中成功应用,未来各行业将加大对人工智能软件开发的投入。 全球科技巨头都渴望开源各种人工智能辅助开发工具。 可见,他们想要在这个技术领域分一杯羹的野心是明确的。 为了在竞争和规模上保持领先地位,市场参与者还需要将可提高效率的新工具集成到其开发流程中。 与此同时,人工智能辅助软件开发技术正在完成第一次迭代更新,这也让我们初步了解了编码技术未来将如何发展。