脸书利用深度学习技术开发源码翻译器TransCoder

脸书开发了一个称为TransCoder的自我监督神经源码翻译器(Transcompiler),可以将程序代码转换成为另一种程序语言的程序代码,这样将使得程序代码移植更加简单快速。

脸书举例,要把像是COBOL这类较旧的程序语言,搬迁到Java和C++等较现代的语言,并非一件简单的任务,需要付出大量的时间与劳力,而且还同时需要具备来源语言以及目标语言的专业,目前许多企业和政府部门的大型主机系统仍广泛使用COBOL,并且继续维护老旧的程序代码库。

而脸书开发的这个源码翻译器,有望能够让老旧程序代码移植工作变得简单,TransCoder使用完全自我监督的神经网络开发而成,脸书表示,TransCoder是第一个不需要平行资料训练的人工智能系统,就可以将程序代码从一种语言,转换到另外一种语言,现在TransCoder能将函数程序代码,在C++、Java以及Python 3三个语言间转换。

经脸书评估,TransCoder比当前开源和商业基于规则的转换程序,性能都还要好。TransCoder将Java函数翻译成C++的正确率达90%,将C++函数翻译成为Java的正确率为74.8%,而市售工具将将C++函数翻译成为Java的正确率为61%,而开源工具将Java函数翻译成C++的正确率仅有38.3%。

脸书提到,自我监督训练对于程序语言之间的翻译相当重要,传统的监督式学习法,依赖大规模平行资料的训练,但是无论是从COBOL到C++,或是C++到Python等,都没有类似的资料集。而TransCoder只需要用一种程序语言编写的程序代码,不需要使用来源语言与目标语言的相同程序代码范例,因此能够轻易的扩展支持的语言。

TransCoder或许对于将老旧的程序代码库,更新成现代程序语言可以帮上不少忙,脸书认为,自动翻译程序代码可以使企业,更容易地使用开源项目,因为通过将老旧程序代码翻译成为其他语言,就能够集成其他开源项目的程序代码,而且现代程序语言通常性能较好,也就容易维护。