对于绝大多数人来说,编写代码类似于学习一门新语言-但来自英特尔和麻省理工学院的研究人员正肩负着改变这一点的使命。他们提出的解决方案是构建代码…。会编程的人。
被称为机器编程,研究人员关注的领域是自动化软件开发。该团队刚刚公布了一种新工具,它使开发人员离有一天拥有可以自我编程的机器的前景又近了一步。
机器推断代码相似性(MISIM)是由英特尔和麻省理工学院的实验室发明的一项新技术,它有效地研究了代码片段,以理解软件的意图。然后,该系统可以建立数据库,在该数据库中,具有相似结果的软件代码被给予相似性分数。
基于这个预先存在的代码目录,MISIM可以了解新算法背后的意图,并通过建议其他编程方式或提供更正和选项来帮助从事软件工作的工程师提高代码的效率。
目前,英特尔计划在内部使用该工具,以帮助开发人员完成诸如调试等平凡的任务,目前据信这会占用多达一半的程序员的时间。因此,当MISIM开始部署时,该公司预计开发者会感到巨大的兴奋也就不足为奇了。
英特尔实验室的科学家瑞安·马库斯(Ryan Marcus)告诉ZDNet:我们MISIM的目标是帮助开发人员做出具体的选择,比如什么是使用这个API最有效的方式,或者我如何正确地验证这个输入。这应该会让工程师们有更多的时间专注于他们工作中真正产生现实影响的要素。
作为代码相似性系统,支撑MISIM的原则并不新鲜:尝试确定一段代码是否与另一段代码相似的技术已经存在,并且被开发人员广泛用于从其他现有程序中获得洞察力。
例如,facebook使用一种名为aroma的代码推荐系统,它与自动文本非常相似,它会推荐对工程师已经编写的代码片段进行扩展,这是基于程序员经常编写与已经编写的代码相似的代码的假设。
但是大多数现有的系统关注的是代码是如何编写的,以便与其他程序建立相似性。另一方面,MISIM查看代码片段的意图,而不考虑它的设计方式。这意味着即使使用不同的语言、数据结构和算法来执行相同的计算,MISIM仍然可以建立相似性。
该工具使用了一种名为上下文感知语义结构(CASS)的新技术,它可以让MISIM在更高的层次上解释代码--不仅是程序的结构,还包括它的意图。当它与代码一起出现时,算法会将其翻译成代表软件功能的形式,而不是如何编写的;然后,MISIM会将它为代码找到的结果与从在线存储库中提取的数百万个其他程序的结果进行比较。
一旦它建立了与其他代码片段的链接,MISIM就可以作为工程师的推荐系统,通过建议执行相同计算的替代方法,这可能会更快、更高效。
英特尔机器编程研究团队负责人贾斯汀·戈特施利希(Justin Gottschlich)告诉ZDNet,随着软件开发变得越来越复杂,MISIM可能会对生产率产生巨大影响。
他表示:我们重新引入高级开发人员的速度跟不上我们重新引入新芯片架构和软件复杂性的速度。随着当今异构硬件-CPU、GPU、FPGA、ASIC、神经形态芯片,以及不久之后的量子芯片-要找到能够正确、高效和安全地在所有这些硬件上编程的开发人员将变得困难,甚至是不可能的。
但机器编程的长期目标比目前的协助软件开发更进一步。毕竟,如果一项技术可以评估意图并提出相应的代码片段作为回应,那么想象有一天这种算法可以被任何有好软件想法的普通公众使用,似乎并不牵强。
例如,与自然语言处理相结合,MISIM在理论上可以对语言线索做出反应,有朝一日让人们只需通过描述它们就可以编写程序。换句话说,这是一种Alexa,但用于软件开发。
Gottschlich解释说,软件创作目前仅限于全球2700万会编程的人。机器编程的最终目标是扩大这一数字,有朝一日,让人们用代码以外的其他方式表达他们的想法--可以是自然语言、视觉图表,甚至是手势。
这个想法是否完全认可了开发人员的角色?“别那么快,”戈特施利希说。机器编程总是需要一些代码形式的数据,并且需要专业人员来管理更专业的编程方面。然而,不同之处在于,将有数百万人尝试创建软件-如果说有什么不同的话,那就是为传统程序员创造更多的工作。
Gottschlich说,当机器编程完全实现时,我们相信它不会消除就业机会,反而会创造就业机会--可能会创造数百万个就业机会。
MISIM背后的团队所设想的自动化软件开发还有很长的路要走。但就像许多创新一样,现在就想知道这项技术可能产生的影响,无论是好是坏,都不为时过早。
英特尔和麻省理工学院的实验室正在研究这些哲学和伦理问题,同时解决机器编程带来的技术挑战。减轻这项技术的负面使用的谈判已经在进行中,而且研究人员不太可能在短期内耗尽可供辩论的话题。