仅一周多的时间,您中的大多数人就会听说Facebook的AI研究团队(FAIR)开发了一种神经转编译器,该代码使用“无监督翻译 ” 将高级编程语言(如C ++,Python,Java,Cobol)的代码转换为另一种语言。传统的方法是标记源语言并将其转换为抽象语法树(AST),反编译器将根据定义翻译的手写规则(例如抽象或上下文)将其用于转换为所选的目标语言。没有丢失。
在过去的几十年中,神经语言翻译取得了如此重大的进步,以至于尽管只有足够的并行语料库才是唯一的限制,但是这些神经模型往往要比硬编码的手写规则好得多。
这已通过“无监督的ML翻译”方法得到了更大程度的解决,其中Facebook的研究团队使用了来自Github的不同编程语言的大量单语源代码库来训练模型。
这使许多组织感到宽慰,尤其是在保险,政府和银行部门,他们继续使用旧版应用程序,而这些应用程序几乎没有增强或微调的空间,因为它们是由真正熟练的程序员在过去的美好时光中编写的— COBOL ,Pascal,Fortran等。
尽管编程语言已经随着时间的流逝而发展,但是从一种代码库移植到更高效或更现代的语言(如Java,Swift,Ruby,python)却是真正的痛苦,因为它需要源语言和目标语言方面的专业知识。例如,有报道称,澳大利亚联邦银行花费了高达7.5亿美元,并在五年内将其核心软件从大型机上的COBOL迁移到了现代平台上。
基于规则的翻译实现起来很复杂,灵活性和解释性较差。Facebook的Transcoder可以解决长期存在的问题。
FAIR代码转换器的主要组件
FAIR转码器基于一种变压器架构,包括一个编码器和一个解码器,基于“注意就是您所需要的”论文。FAIR转码器依赖于单个模型进行编码和解码,并且基于3个原理:
屏蔽语言模型预训练
去噪自动编码
回译
1. 屏蔽语言模型预训练
掩蔽语言预训练模型基于BERT论文,该模型训练编码器从源代码中识别出掩蔽标记。训练编码器以理解编程构造,以便在屏蔽某些令牌时识别丢失的令牌并对其进行重构。
-
编程语言
+关注
关注
10文章
1942浏览量
34718 -
源代码
+关注
关注
96文章
2945浏览量
66735 -
ML
+关注
关注
0文章
149浏览量
34649
发布评论请先 登录
相关推荐
评论