写点什么

Facebook 发布 TransCoder:可将代码分分钟转换为另一种编程语言

  • 2020-06-09
  • 本文字数:1658 字

    阅读完需:约 5 分钟

Facebook发布TransCoder:可将代码分分钟转换为另一种编程语言

近日,Facebook 的研究人员表示,已经开发出一种神经网络编译器,可以将代码从一种高级编程语言(如 C ++,Java 和 Python)转换为另一种。


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


为简化这一问题,Facebook 推出了TransCoder,该工具采用无监督学习,可以让代码在 C ++,Java 和 Python 之间进行转换。


论文地址:https://arxiv.org/pdf/2006.03511.pdf


TransCoder 首先使用跨语言模型预训练进行初始化,该训练将表示相同指令的代码段映射为相同的表示形式,而与编程语言无关(源代码序列的输入流被随机屏蔽,并且 TransCoder 的任务是根据上下文预测被屏蔽的部分),降噪自动编码的过程会训练系统生成有效序列,即使在输入有噪声的数据的情况下,反向编译使 TransCoder 可以生成可用于训练的并行数据。


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


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


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


Facebook 方面表示,虽然 TransCoder 表现最佳的版本并没有产生很多与预期完全相同的函数,但它的编译具有很高的计算精度。研究人员将其归因于波束搜索的结合,波束搜索是一种维护一组部分解码的序列的方法,该序列会附加到序列中,然后进行评分,从而使最佳序列冒泡到顶部:


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

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

  • 从 Java 转换为 C ++时,91.6%返回了预期的输出。

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

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

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


根据研究人员的说法,TransCoder 在实验过程中展示了对每种语言特有的语法、数据结构及其方法的理解,并且在跨编程语言的情况下正确对齐了库,同时适应了较小的修改(例如当输入已重命名)。尽管它并不完美,例如 TransCoder 在生成过程中未能考虑某些变量类型,但它的性能仍然比一些框架要优秀。


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


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


2020-06-09 11:213172
用户头像
陈思 InfoQ编辑

发布了 584 篇内容, 共 309.5 次阅读, 收获喜欢 1306 次。

关注

评论

发布
暂无评论
发现更多内容

2026年KOL营销新趋势:AI技术如何改变品牌合作模式

Wolink

跨境电商 海外社媒营销 海外营销推广 海外红人营销 品牌推广

cURL 8.17.0 发布:安全修复、功能变更与未来展望

qife122

curl 开源软件

主动出击!发挥财务管理自动化的最大潜力

智达方通

企业管理 企业管理软件 全面预算管理 财务管理

何为真正的“全球”覆盖?评估全球舆情工具的5大全球化标准

沃观Wovision

舆情分析 海外舆情监测 海外舆情平台 舆情监测平台

年省百万成本,枫清科技「AI问数」驱动金融效率革命

Fabarta

AI问数

化“痛点”为“支点”:中国重汽为煤炭运输提供高效运力解决方案

科技经济

能看清,更要看懂:MME-VideoOCR全面评估MLLM视频OCR能力

快手技术

NeurIPS 顶会论文 快手技术

闲鱼商品列表API完整指南

Datafox(数据狐)

闲鱼API 闲鱼商品数据采集 闲鱼商品列表api 闲鱼商品接口

万界星空AI产线MES:打破产线“黑箱”,迈向智能决策

万界星空科技

mes 万界星空科技mes 产线mes AI产线MES 智能化产线

项目性能优化实践:深入FMP算法原理探索|得物技术

得物技术

前端技术 前端算法 算法、

android 使用 java 编写网络连通性检查

lichong951

android Android TV

境外舆情服务的战略价值:从信息监控到商业决策的闭环服务

沃观Wovision

舆情分析 境外舆情监测 境外舆情监控 境外舆情 舆情服务

Serverless is all you need: 在亚马逊云科技上一键部署大模型API聚合管理平台OneHub

亚马逊云科技 (Amazon Web Services)

人工智能

KOL营销ROI提升秘籍:5个关键指标衡量投资回报率

Wolink

跨境贸易 出海 海外社媒营销 海外营销推广 海外红人营销

时序数据库 Apache IoTDB 在北京等你!锁定 COSCon 第十届中国开源年会

Apache IoTDB

达索 Abaqus/CST 代理商采购流程 - 认准思茂信息官方授权

思茂信息

abaqus 有限元分析 有限元仿真

鸿蒙系统 4.1.0 兼容 Android apk 如何检测兼容的 Android 系统版本是多少

lichong951

HarmonyOS HarmonyOS NEXT

AI眼镜,大厂第一战

脑极体

AI

揭秘ChatGPT广告系统:技术架构与商业化的未来

qife122

人工智能 ChatGPT

除了情感分析,优秀的海外舆情分析网站还应提供这3个关键功能

沃观Wovision

舆情分析 舆情监测 海外舆情 海外舆情监测 舆情监测平台

AI 技术在英语教育中的核心应用

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

CAD图纸如何批量打印?CAD批量打印教程来了

在路上

cad cad看图 CAD看图王

数字孪生项目开发核心技术栈

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

全球企业选型指南:引入全球舆情工具的4个阶段与避坑要点

沃观Wovision

舆情分析 舆情监测 海外舆情监测 舆情服务 舆情监测平台

超越情感正负:优秀的海外舆情分析工具必备的5个深度洞察维度

沃观Wovision

舆情监测 海外舆情监测 出海舆情 舆情监测平台 舆情监测服务

闲鱼商品详情API完整指南

Datafox(数据狐)

闲鱼API 闲鱼商品数据采集 闲鱼商品详情API 闲鱼商品接口

3D打印与平价假肢之梦:技术现状与挑战

qife122

3D打印 医疗技术

星链打击:下一代网络疑云

脑极体

AI

成功案例丨仿真+AI技术为快消包装行业赋能提速:基于 AI 的轻量化设计节省数十亿美元

Altair RapidMiner

人工智能 AI 仿真 CAE 消费品

非凸科技与九方智投达成战略合作,携手赋能广大投资者

非凸科技

AI 英语作文 App 的开发技术与功能

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

Facebook发布TransCoder:可将代码分分钟转换为另一种编程语言_架构_Kyle Wiggers_InfoQ精选文章