Skip to content

Facebook研究人员表示他们已经开发出了一种名为TransCoder AI的神经编译器

Facebook研究人员表示他们已经开发出了一种名为TransCoder AI的神经编译器

将现有的代码库迁移到更现代或更高效的语言需要大量的资源,包括财务和人力。譬如,澳大利亚联邦银行在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并非十分完美,无法在代码生成过程中考虑某些变量类型。但是,它的性能确实优于已有的利用专家知识手动构建的框架。

相关推荐: 新加坡消费者网购水平居东南亚之首。联邦快递宣布新增4个FICP服务市场。亚马逊印度正式启用古吉拉特邦分拣中心。

厦门商城系统开发 联邦快递宣布新增4个FICP服务市场 近日,联邦快递(FedEx Express)宣布已将FedEx® International Connect Plus (FICP,国际限时达物流服务)扩展到亚太、中东和非洲(AMEA)地区的4个市场,包…

    码刀科技(www.lekshop.cn)是国内知名企业级电商平台提供商,为企业级商家提供最佳的电商平台搭建(多种模式电商平台搭建:B2B/B2B2C/B2C/O2O/新零售/跨境等)、平台管理系统开发及互联网采购解决方案服务, 联系客服了解更多.

    电子商务网站建设的重要性和好处