acm-header
登录

ACM通信

研究突出了

技术角度:软件是自然的


查看所附文件,请访问doi.acm.org/10.1145/2902362

一只Galápagos乌龟的平均寿命为150年,而在短短一半的时间里,高级编程语言就诞生了,并经历了一个显著的转变。早期的高级语言形式使得表述数学表达式比机器代码更容易,但不久之后,人们认识到,语言需要超越数学计算,表达业务问题的解决方案。针对这一需求而设计的语言之一是Cobol,它明确表示希望最大限度地使用简单的英语短语。从那时起,在编程语言中混合使用基于自然语言短语的关键字和结构变得越来越普遍。结合程序员使用语义上有意义的标记来声明变量名的能力,以及在自然语言中嵌入解释代码的注释的能力,编程语言继续简化了在软件中表达复杂思想的过程。

更容易表达程序的能力使软件的创造能够解决复杂的问题。这个软件本身通常又大又复杂。为了理解、扩展和解决这个复杂软件中的问题,软件工程师需要工具。已经创建了许多工具,从指出软件表达在哪些地方不符合语言的语法规则的工具,到缺陷预测器的工具,这些预测器旨在指出软件中哪些地方可能潜伏着bug,以及在这些bug影响到软件用户之前,应该在哪些地方努力消除这些bug。绝大多数用来帮助软件工程师使用编程语言的深度知识的工具,通常需要针对每种编程语言进行特定的工作,并且通常需要大量的开发工作。

Hindle等人的以下工作采用了一种全新的方法来提供工具来帮助构建软件。作者展示了用于表达软件的短语通常是重复的和可预测的,类似于自然语言(如英语)在实践中的使用。鉴于这些相似性,现在应用于自然语言的基于语料库的统计严格方法在帮助理解和构建软件时也可能有用。


下面的文章采用了一种全新的方法来提供工具来帮助构建软件。


通过采用这种方法,作者展示了软件的一些迷人特性。例如,人类表达软件的方式比人类用英语表达文本的方式更有规律。乍一看,这个结果似乎并不那么令人惊讶;毕竟,编程语言(如Java)要求程序员在许多关键字和语法结构的框架中表达所需的软件。然而,作者表明这种规律性不是语法的结果,而是由于项目和应用领域的程序正在表示。作者表明,这种规律不仅适用于Java,也适用于其他编程语言。

通过为自然语言构建的统计方法来处理软件,为构建灵活的工具来帮助开发软件提供了许多可能性。例如,其他研究人员现在使用统计语言建模来开发从一种编程语言的API到另一种编程语言的API的翻译工具,其基础是谷歌为其翻译服务使用的现有技术。

这篇论文的一个令人兴奋的方面是统计语言模型对软件的潜在应用范围。例如,该方法可以无缝地应用于代码和与代码相关的自然语言文档,无论它们是bug报告、提交消息、设计文档还是基于web的问答站点。这个无缝的应用程序支持使用将一系列文档与代码关联的方法,支持建议代码使用给定的自然语言描述的工具,或反之,为给定的代码段建议文档。更令人激动的是,作者描述了如何使用整体方法来创建可伸缩的近似,以确定通常昂贵的程序属性,例如关于协议的挖掘规则,或关于程序执行时如何访问或可能访问哪些存储的事实。

改变一个领域进程的研究并不多见。作者证明软件是自然的,统计语言模型的应用从根本上为创建可伸缩的、有用的软件开发工具开辟了新途径。

回到顶部

作者

盖尔·c·墨菲murphy@science.ubc.ca)是加拿大BC省温哥华英属哥伦比亚大学的计算机科学教授。


版权归作者所有。

数字图书馆是由计算机协会出版的。版权所有©2016 ACM股份有限公司


没有发现记录

登录为完全访问
»忘记密码? *创建ACM Web帐户
文章内容:
Baidu
map