【51CTO.com快译】一批新兴的工具正使用机器学习及其他方法使软件开发过程的一部分实现自动化。比如说,GitHub上个月推出了这样一个工具:可以在程序员开发代码时给出建议。亚马逊也创建了CodeGuru,这种工具有助于自动查找软件中的性能瓶颈。Facebook则有Aroma,它也可以提供代码方面的建议。我自己在英特尔实验室的团队则构建了一款工具(目前仅供我们内部使用),可以自动检测代码中的错误。
这种自动化编程被称为“机器编程”。它最有趣的功能之一是“代码语义相似性”,试图自动确定两个代码片段是否表现出相似的特征或实现相似的目标。由于计算领域的进步、可访问“大代码数据”(比如IBM/MIT新的CodeNet 项目,包含约1400万个代码样本)以及新的机器学习算法,这在最近成为了可能。
通过利用代码语义相似性的力量,业界得以开发出自动化系统,帮助CIO们确保开发团队在软硬件复杂性增加的情况下仍保持同样水平的生产力,同时解决软件开发人才短缺、应对职场倦怠。
支持语言到语言的转换
代码语义相似性还可用于编程语言之间进行转换的工具(即转译器)。在过去,将程序的源代码从一种编程语言转换成另一种编程语言的软件系统遥不可及。然而,对于历来使用更专业的传统语言进行编程的大型全球组织而言,转译方面的最新进展可能意义重大。
想象一下这样一个世界:无需花费数年时间即可将整个组织的代码库从COBOL手动转换成 Python,机器编程系统可以为您完成所有工作——只需几天时间。这类系统的雏形早已存在,甚至如今就已用在一些科技公司中,比如Adobe。比如说,据我所知,Adobe Photoshop使用验证提升(verified lifting),将C/C++转换成当前版本的Halide。
机器推断代码相似性(MISIM)之类的代码语义相似性系统不仅可以帮助组织更新整个代码系统,还将扩大人才库。随着更多的开发者熟悉这些新语言(比如,从FORTRAN迁移到Python),将组织的代码库从当今软件开发者不太了解的旧式遗留语言更新为现代编程语言将使人员招聘变得更容易。CIO们甚至可能看到编程错误减少,因为新时代的语言往往更容易上手,更容易在内部处理大部分系统复杂性。
提升新手开发者,有助于填补开发者空白
代码语义相似性系统还可以建议代码。比如说,前面提到的GitHub Co-Pilot旨在了解某个软件的意图,然后建议改进(或更完整)的版本以帮助开发者。
如果充分发挥潜力,这类代码建议系统有望通过为新手开发者和专家开发者提供改进的替代方案,以提高软件质量和生产力。最终,这将帮助CIO及其IT部门跟上软件需求,无需雇用额外员工或花钱在新资源上。这些代码建议系统的最终愿景是提高所有开发者的生产力。
语义相似性系统还可以与开发者协同工作,自动检测代码中的错误。
结束语
由于软硬件具有的异构性,软件开发领域变得日益复杂。预计开发团队也会越来越快地开发软件。对于CIO及其监督的软件开发而言,机器编程可能是唯一经济上可行的方法。因此,现在正是开始试用新兴机器编程工具,了解如何在贵组织中最有效地实施它们的合适时机。
原文标题:Why machine programming should be the next technology you invest in,作者:Justin
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】