现在当你在Google的搜索框中输入文字时,它能自动联想推送出你需要的内容。比如说,输入“Wi”,词条“Wikipedia”就自动联想出来;输入“Bra”,Google也能猜到你想输入“Brad Pitt”。虽然说Google自动填写的搜索内容有时候与用户本人的想法可能大相径庭,但是更多的时候,它的确能准确的猜出你想要搜索什么,为冗余的打字过程提供了便利。
现在一个政府资助的团队正在研究类似的项目,让全世界的程序员们在写代码时,计算机能够自动联想。其本质就是,计算机能够在程序员们输入代码前,就猜出他们想敲的内容。
本周,赖斯大学表示美国国防部高级研究计划局DARPA已经投资1100万美金给编程自动填写项目,用古罗马作家的名字命名代号为PLINY。赖斯大学的计算机科学学院院长、PLINY项目的主要研究人Vivek Sarkar说,“Google的文本搜索预测只是一个例子,接下来人们会用相似的方法解决更多的问题。”
在敲代码之前提前预测代码 查找漏洞
项目的参与人员来自各个机构和研究院,包括赖斯大学、德州大学奥斯汀分校、威斯康星大学以及专门制作开发者工具的GrammaTech公司。PLINY项目将会索引互联网上海量的开源代码,来搭建代码预测引擎,理论上说,PLINY也能够做到定位bug和安全漏洞。如果项目得以实现,那些致力于研发复杂软件程序的高科技公司,再也不用担心招聘不到足够人手的优秀程序员了。
PLINY并不是第一个试图解决代码自动填写的项目,微软在去年发布了Bing Developer Assistant(必应开发者助手)。Sarkar表示PLINY是一项更重大的项目,“其他大多数的项目做到的只能是机遇代码结构的简单的文本分析。”
Sarkar和他的团队尝试制作一款软件,即便是运用不同的编程语言,软件不仅能够做到分析文本,同样也能读取代码表达的意思。Sarkar希望PLINY今后可以自动填写大段长串代码,顺便检查程序员的语言错误和安全漏洞。
如何做到合理正确的预测?
对于PLINY项目而言,最困难的地方就是如何做到合理正确的预测代码。如果你曾经用过微软Office软件中的曲别针助手Clippy先生,或者自动更新博客助手,你就能体会到让计算机自动填写正确的答案是多么多么困难的事情。Google能做到的也仅仅是依据成千上万网民们的“搜索热词”,水到渠成的预测出你可能会输入的搜索内容。二代码预测可不是这样,一般来说最广泛使用的代码段并不是最好的解决方案。
Sarkar承认解决自动填写的合理正确性是PLINY项目中最棘手的挑战,但是他认为他们团队是该项目的不二之选。团队成员都有着在能源部门和医疗研究机构从事大数据分析的经验。Sarkar说赖斯大学多年来一直希望把机器学习的算法应用到软件开发的领域,Darpa给大家提供了这次珍贵的机会。
PLINY的项目从研究互联网中的开源代码开始,这些代码通常来自提供主机服务的GitHub 和Sourceforge,以及其他的开源项目例如Apache Foundation。此外PLINY希望代码自动填写项目能够开发出企业版本,用于索引大公司和企业的软件程序。
PLINY同样建立了数据库系统用来存储和分析代码,这为建立优化代码索引提供了多种的方法,提高了代码的质量。程序能够自动识别“特殊代码”,并且给予优先级别。
虽然说PLINY项目的成果会看上去和Google的联想搜索很相似,但是它将会实用的多。
文章来源:http://www.51cto.com