内容字号:默认大号超大号

段落设置:取消段首缩进段首缩进

字体设置:切换到微软雅黑切换到宋体

业界
软件
手机
数码
电脑
学院
测评
图赏
视频
游戏
原创
直播
 AI
5G
苹果
微软
iPhone
Win10
精准搜索请尝试:精确搜索

Facebook 发布神经编译器 TransCoder AI:可在 Java、Python、C++ 之间转换代码

2020/6/15 22:21:04来源:作者:白开水不加糖责编:骑士评论:

Facebook 研究人员表示,他们已经开发出了一种名为   的 “神经编译器” ,该系统可以将代码从一种高级编程语言(如 C ++、Java 和 Python)转换为另一种。

将现有的代码库迁移到更现代或更高效的语言需要大量的资源,包括财务和人力。譬如,澳大利亚联邦银行在 5 年的时间里花费了大约 7.5 亿澳元,将其平台从 COBOL 转换为 Java。而从理论上讲,转编译器可以则帮助消除从头重写代码所需的费用。但是,由于源语言和目标语言都具有不同的语法、变量类型、标准库函数和平台 API,因此这个在实践中其实很难构建。

据介绍,Facebook 的 TransCoder AI  则采用了一种无监督的学习方法来应对这些挑战。它可以在无人监督的情况下不受监督地运行,从而在没有标签的情况下在数据集中找到未检测到的模式,比基于规则数据集的模型要高效得多。

无论使用哪种编程语言,神经编译器都可以将代表相同指令的代码段映射到相同代码段。一位共同作者写道:“ TransCoder 可以轻松地推广到任何编程语言,不需要任何专业知识就可以将代码从一种编程语言转换为另一种编程语言,并且在很大程度上优于商业解决方案。我们的结果表明,通过向解码器添加简单的约束以确保生成的函数在语法上是正确的,或者通过使用专用架构,可以轻松解决该模型所犯的许多错误。”

TransCoder AI 的准确性

Facebook 研究人员在超过 280 万个开源存储库中的公开代码上对 TransCoder AI 进行了训练,以专注于功能级别的代码转换。

为了评估 TransCoder AI 的性能,他们从 GeeksforGeeks 中选择了 852 个 C ++、Java 和 Python 并行函数。GeeksforGeeks 是一个 在线平台,用于收集编写代码时的问题,并提供多种编程语言的解决方案。

利用以上两个数据,他们开发了一个名为 " 计算精度(computational accuracy)" 的新指标,用于检查翻译后的函数在输入相同的情况下是否会产生与源语言相同的输出。

结果

这是 AI 从以下位置转换代码时获得的结果的准确性水平:

  • C++ to Java: 74.8%

  • C++ to Python: 67.2%

  • Java to C++: 91.6%

  • Java to Python: 68.7%

  • Python to Java: 56.1%

  • Python to C++: 57.8%

研究人员表示,TransCoder AI 已经展示出对每种语言(Java、Python 和 C ++)的语法及其数据结构的理解。它甚至能够正确地调整每种语言的库,同时适应小的修改 -- 例如,重命名输入中的一个变量。尽管 Transcoder 并非十分完美,无法在代码生成过程中考虑某些变量类型。但是,它的性能确实优于已有的利用专家知识手动构建的框架。

完整论文地址:

相关文章

关键词:编译器Facebook

IT之家,软媒旗下科技门户网站 - 爱科技,爱这里。

Copyright (C)RuanMei.com, All Rights Reserved.

软媒公司版权所有    

德江县大唐广告制作中心 安般太极拳 衣购网 广州市鸿诗凯广告有限公司 盐城铸阳暖通服务有限公司 大连文润轴承有限公司 深圳市港澳信联国际旅行社有限公司 东莞市盛家橡塑科技有限公司 焦点刀具英 贵州佳亮宏机电设备有限公司 献县科宇高铁仪器设备厂 戴云大酒店 饰妮十字绣 六安新手游网络科技有限公司 贵阳和昌顺有限公司 深圳市宝联兴科技有限公司 郑州山丘文化传播有限公司 安徽信尔达通信技术有限公司 深圳市宝福汽车服务股份有限公司 潼南县梓潼街道商会 红棉小学 滁州硬笔书法家协会 成都天使之家社会工作服务中心 淄博宝森商贸有限公司 浦东机场停车场 河南中德塑钢型材有限公司 西安维度装饰设计有限公司 石家庄问道 海外购 房屋过户网 金沙县 刑侦推理有声小说 广西南宁文峻广告有限公司 深圳泰和门诊部 火热剧集站 佛山市南海中藤家具厂 厦门固得塑胶有限公司 北京中北亚汽车贸易有限公司 鹤壁华辰重工机械有限公司 北京兵润恒通汽车销售有限公司 ppnba直播吧飞飞CMS官网论道网洋创支付吧