机器学习有了新的用武之地:修复代码缺陷
作者简介:Katherine Noyes自在古老的TRS-80上首次完成Pyramid of Doom游戏通关之后,就成了个狂热的极客。如今,她跟踪分析形形色色的企业软件,着重关注Linux和开源软件。
麻省理工学院(MIT)的研究人员表示,一种新的代码缺陷(bug)自动修复系统修复错误的速度是之前其他系统的10倍。
麻省理工学院(MIT)表示,它开发的一种机器学习系统可以修复的代码错误是其他系统的10倍。
这是机器学习的另一种新的应用:麻省理工学院(MIT)开发出了一种系统,用来修复饱受bug困扰的代码存在的错误。
新的机器学习系统由麻省理工学院的研究人员开发;研究人员表示,它修复的错误数量是之前其他系统的大致10倍。他们在上个月的编程语言原则(Principles of ProgrammingLanguages)研讨会上介绍了描述这种新系统的论文,该系统名为“先知”(Prophet)。
实际上,该系统的工作原理如下:研究过去已经为开源计算机程序打上的补丁,以便了解它们的一般属性。Prophet被赋予了存储于在线代码库GitHub上的八个常见开源应用程序中的777个错误和修正(fix)。
然后,该系统运用这种知识,为一组不同的程序中存在的新bug拿出新的修正办法。
Fan Long是电气工程和计算机学系的研究生,他是这篇论文的作者之一。他之前实际上已研制出一种算法,通过有系统地修改程序代码,试图通过修复程序缺陷。唯一的问题是,可能需要的时间长得吓人。
这个新的机器学习系统与那个较早问世的算法协同运行,但是可以根据正确的概率,给可能的补丁排序,然后对它们进行耗费时间的测试。
研究人员针对出现在八个常见开源程序中的一组(69个)实际错误,测试了系统。之前的错误修复系统能够修复一两个缺陷,而新系统能够修复的缺陷却在15个至18个之间,具体取决于它是选用发现的第一种解决方法,还是被允许运行更长的时间。
Martin Rinard是电气工程和计算机学系教授,他也是这篇论文的作者之一。据他声称,这当然很有用,不过由此带来的影响可能更大。
Rinard解释:“这项研究最引人注目的方面之一是,我们发现,你确实可以从一组应用程序当中了解正确代码的普遍属性,然后运用到另一组应用程序。如果你能识别正确的代码,这给所有软件工程带来了巨大的影响。我们希望那是一种全新、神奇的方法,修复代码错误仅仅是它的第一种应用。”
云头条编译|未经授权谢绝转载