Facebook的代码转换器AI将代码从一种编程语言转换为另一种编程语言

发布时间:2020-06-09 16:12:48 【来源:

Facebook研究人员说,他们已经开发了所谓的神经编译器,该系统可以将代码从一种高级编程语言(如C ++,Java和Python)转换为另一种。它是无监督的,这意味着它可以在没有标签的情况下并在最少的人工监督下查找数据集中以前未被检测到的模式,据报道,它比基于规则的基准要好得多。

将现有的代码库迁移到现代或更高效的语言(例如Java或C ++)需要源语言和目标语言方面的专业知识,而且这通常很昂贵。例如,澳大利亚联邦银行在五年内花费了约7.5亿澳元,将其平台从COBOL转换为Java。转编译器可以在理论上提供帮助-消除了从头开始重写代码的需求-但在实践中很难构建,因为不同的语言可能具有不同的语法,并且依赖于独特的平台API,标准库函数和变量类型。

Facebook的系统TransCoder可以在C ++,Java和Python之间进行转换,它采用一种无监督的学习方法来应对这一挑战。TransCoder首先使用跨语言模型预训练进行初始化,该训练将表示相同指令的代码段映射为相同的表示形式,而与编程语言无关。(源代码序列的输入流被随机屏蔽,并且TransCoder的任务是根据上下文预测被屏蔽的部分。)称为降噪自动编码的过程会训练系统生成有效的序列,即使输入了嘈杂的输入数据,反向翻译使TransCoder可以生成可用于训练的并行数据。

TransCoder的跨语言性质源于跨编程语言存在的通用标记(锚点)的数量,这些通用标记来自“ for”,“ while”,“ if”和“ try”等通用关键字以及数学数字运算符以及出现在源代码中的英文字符串。反向翻译通过将源到目标模型与并行训练的“反向”目标到源模型耦合在一起,可以提高系统的翻译质量。目标到源模型用于将目标序列翻译成源语言,产生嘈杂的源序列,而源到目标模型则有助于从噪声源重建目标序列,直到两个模型收敛。

Facebook研究人员在包含超过280万个开源存储库的公共GitHub语料库上对TransCoder进行了培训,目标是功能级别的翻译。(在编程中,函数是可重复使用的代码块,用于执行单个相关操作。)在对所有可用源代码进行TransCoder的预训练之后,仅对函数进行去噪自动编码和反向翻译组件的训练,组件,约有6,000个令牌。

为了评估TransCoder的性能,研究人员从GeeksforGeeks中提取了852个C ++,Java和Python并行函数,GeeksforGeeks是一个在线平台,可收集编码问题并以多种编程语言提供解决方案。他们使用这些公式开发了一种新的度量标准-计算精度-测试给定相同输入时假设函数是否生成与参考相同的输出。

Facebook的笔记,虽然转码的表现最佳版本并没有产生很多功能严格相同的引用,其翻译具有较高的计算精度。他们将其归因于波束搜索的结合,波束搜索是一种维护一组部分解码的序列的方法,该序列会附加到序列序列中,然后进行评分,从而使最佳序列冒泡到顶部:

从C ++转换为Java时,TransCoder的74.8%的一代返回了预期的输出。

从C ++转换为Python时,TransCoder的67.2%的一代返回了预期的输出。

从Java转换为C ++时,TransCoder的几代人中有91.6%返回了预期的输出。

从Python转换为Java时,TransCoder的56.1%的一代返回了预期的输出。

从Python转换为C ++时,TransCoder的57.8%的一代返回了预期的输出。

从Java转换为Python时,TransCoder的68.7%的一代返回了预期的输出。

根据研究人员的说法,TransCoder在实验过程中展示了对每种语言特有的语法以及语言的数据结构及其方法的理解,并且它在跨编程语言的情况下正确对齐了库,同时适应了较小的修改(例如当输入已重命名)。尽管它并不完美-例如TransCoder在生成过程中未能考虑某些变量类型-但它的性能优于框架,该框架重写了使用专家知识手动构建的规则。

共同作者写道:“ TransCoder可以轻松地推广到任何编程语言,不需要任何专业知识,并且在很大程度上优于商业解决方案。”“我们的结果表明,通过向解码器添加简单的约束以确保生成的函数在语法上是正确的,或者通过使用专用架构,可以轻松解决该模型所犯的许多错误。”

Facebook不是唯一开发代码生成AI系统的组织。在今年早些时候的Microsoft Build会议上,OpenAI演示了一个在GitHub存储库上训练的模型,该模型使用英语注释生成整个功能。两年前,赖斯大学的研究人员创建了一个系统-Bayou-该系统可以通过将公开代码背后的“意图”相关联来编写自己的软件程序。

英特尔实验室的首席科学家兼总监贾斯汀·戈茨利希(Justin Gottschlich)在最近的一次采访中对VentureBeat表示:“此类程序实际上只是在试图消除创建软件的细节。”“ [他们]可以帮助[通过]解决错误来提高生产率。[而且他们可以] [技术]中增加工作岗位,因为没有编程背景的人们将能够利用自己的直觉界面,并通过机器来捕捉他们的创造性直觉。”

中国联通:已累计开通5G基站33.2万站 到今年年底预计超过38万个
饿了么现已入驻1000所高校食堂 校园内平均20分钟送达
谷歌在西雅图附近规划新园区 在亚马逊和微软总部所在地扩大触角
我国国家顶级域名“.CN”数量超过2300万个 IPv6规模化部署提速
邬贺铨:截至8月我国IPv6活跃用户达3.65亿 占互联网用户之比达40.32%
苹果、谷歌、英特尔等公司已经加入行业组织美国“6G联盟”
微软今天正式终止Win7嵌入式系统支持 花钱可买三年补丁
OPPO将发布首款概念级应用OPPO CybeReal 针对AR领域

[ 最新资讯 ]

始祖鸟之家双面派对,设计师系列惊艳亮相

  11月24日,被誉为户外爱马仕的始祖鸟(ARC’TERYX)全新概念店——始祖鸟之家在全国顶级商圈北京国贸开业了。现场门店实拍图片   ...

曝小米显示器34寸本月最后一单出货后将暂停供应 因三星无屏供应原因

  本月初,视讯堂消息称小米的 34 寸带鱼屏显示器型号,之后可能无法再保持 1999 元的价格进行销售。今天,视讯堂发布最新消息,称小 ...

微星Stealth 15M超轻游戏本纯净白即将上架 屏幕为15.6英寸

  根据微星笔记本官方的消息,微星 Stealth 15M (纯净白)即将上架预约,这款笔记本是首款采用 11 代低压酷睿 + RTX 2060 配置的 ...

EG7今天宣布收购《机甲战士5》开发商Piranha Games 增加其游戏公司种类

  Enad Global 7(EG7)今天(11 27)宣布收购《机甲战士5》开发商Piranha Games,增加了其游戏公司的种类。  EG7已同意以2410万美元的 ...

华米将推出GTS 2 mini手表:将于12月1日发布 外观更轻薄更精致

  根据华米创始人黄汪的消息,华米将推出 GTS 2 mini 手表,外观更轻薄更精致。    根据华米微博的消息, GTS 2 mini 手表将 ...

冬季必看的小黑裤穿搭指南|九牧王男裤专家

  伴随着秋冬而来的除了购物欲还有穿搭热情,但如果你正苦于衣服少、缺乏穿搭灵感,那么,一条百搭、舒适的九牧王小黑裤,或许可以帮到你,只 ...