计算机编程从未如此简单。最初,程序员手工编写程序,将符号写在方格纸上并打孔,以便计算机可以处理它们。如果一个标记不准确,整个过程可能需要重做。今天的程序员使用一系列强大的工具来自动化他们的大部分工作。但是一个愚蠢的bug仍然可以拖垮整个软件,而且随着系统变得越来越复杂,追踪这些bug变得越来越困难。近日,英特尔科学家与麻省理工学院(MIT)和佐治亚理工学院(GeorgiaTech)的研究人员一起推出了一种新的机器编程(MP)系统,即机器推断代码相似性(MISIM)。该系统是一个自动引擎,旨在通过研究代码的结构和分析具有相似行为的其他代码的句法差异来了解软件计划做什么。MISIM系统的性能比目前最先进的系统高出40倍,可见从代码推荐到自动错误修复的应用前景。论文地址:https://arxiv.org/pdf/2006.05265.pdfMISIM:提高开发效率,性能是最先进的相似度系统的40倍随着异构计算的兴起,软硬件系统变得越来越复杂。这种复杂性,再加上缺乏可以跨多种架构进行专家级编程的程序员,凸显了对新开发方法的日益增长的需求。自动代码生成多年来一直是研究热点。微软正在将基本代码生成构建到其广泛使用的软件开发工具中。Facebook开发了一个名为Aroma的系统,可以自动完成小程序,DeepMind开发了神经网络,可以提供比人类设计的算法更简单的算法版本。甚至OpenAI的GPT-3语言模型也可以从自然语言提示中生成简单的代码片段。机器编程是英特尔实验室和麻省理工学院在《机器编程的三大支柱》论文中提出的一个术语,旨在通过使用自动化工具来提高开发效率。这些新兴的机器编程工具中的一项关键技术是代码相似性,它可以准确高效地自动化某些软件开发过程以满足这一需求。然而,构建一个准确的代码相似度系统是一个悬而未决的问题。这些系统试图确定两个代码片段是否表现出相似的特征或旨在实现相似的目标。如果只学习源代码,这是一项艰巨的任务。因此,研究人员提出了机器推断代码相似度(MISIM),一种新颖的端到端代码相似度系统。MISIM可以准确地推断出两段代码何时执行相似的计算,即使两段代码使用不同的数据结构和算法。“这是朝着更雄心勃勃的机器编程愿景迈出的重要一步,”英特尔实验室首席科学家兼机器编程研究主管JustinGottschlich说。MISIM与现有代码相似度系统的核心区别在于其新颖的上下文感知语义结构(CASS),其目的是了解代码实际做什么,有助于从代码句法中提升语义意义。与其他现有方法不同,可以将CASS配置为特定的上下文,使其能够捕获描述更高级别代码的信息。CASS可以提供对代码功能而非方法的更具体的见解。此外,MISIM可以在不使用编译器的情况下对代码进行评级,编译器将人类可读的源代码转换为计算机可以执行的机器代码。MISIM还提供了许多优于现有系统的优势,包括能够执行开发人员当前正在编写的不完整代码段,这是推荐系统或自动错误修复的重要实用功能。MISIM系统概述MISIM提供基于神经的代码相似性评分算法,这些算法可以通过具有学习参数的各种神经网络架构来实现。一旦代码的结构被集成到CASS中,神经网络系统就会根据其设计执行的工作为代码片段提供相似度评分。换句话说,如果两段代码在结构上看起来非常不同但执行相同的功能,则神经网络会将它们评为大致相似。研究人员最终将MISIM与三个用于检测代码相似性的最先进系统进行了比较:(i)code2vec(ii)NeuralCodeComprehension(iii)Aroma通过将这些原理整合到一个统一的系统中,研究人员发现MISIM可以识别类似代码的准确度比当前最先进的系统高出40倍。从研究到演示:代码推荐,削减开发成本虽然英特尔仍在扩展MISIM的功能集,但该公司已将其工作从研究转向演示工作,目标是创建一个代码推荐引擎,帮助所有软件开发人员能够跨英特尔各种异构架构进行编程。这种类型的系统将能够识别开发人员输入的简单算法背后的意图,并提供具有改进性能的语义相似候选者。Gottschlich说:“我认为,如果可能的话,大多数开发人员会很乐意让机器为他们查找和修复错误。”这可以让雇主省去一些麻烦,更不用说帮助开发人员自己了。根据剑桥大学贾吉商学院发布的一项研究,程序员将50.1%的工作时间用于编程,一半时间用于调试。总调试成本估计为每年3120亿美元。可见,这需要耗费大量的精力和财力。英特尔机器编程实验室还与英特尔的软件组合作,了解如何将MISIM集成到他们的日常开发中。AI支持的代码推荐和审查工具(如MISIM)有望削减开发成本,同时让编码人员能够专注于更具创造性、重复性更低的任务。“如果我们在机器编程方面取得成功,最终目标之一就是让每个人都能创建软件,”Gottschlich在接受采访时说。
