如果要问这个世界有多少种编程语言,想必我们很多人都会发懵,要么嘀咕思考一会,要么找资料查询。没几个人——或者说没一个人能清楚地罗列出现在到底有多少种编程语言。的确,计算机编程语言不仅分好几种类,而且数量繁多。一人客觉得,除了机器语言、汇编语言比较单一外,高级语言多得简直能让人看得眼睛发花,学得头皮发麻。更何况,计算机技术在发展,技术更新快,编程语言也一直在变化。

虽然说高级编程语言很多东西是相通的,学好一种编程语言,再学其他编程语言会很快入门并上手做项目。不过编程语言的不同,对太多技术人而言,还是需要下功夫努力需要付出很多时间、精力乃至金钱上的成本。毕竟,现实生活中,我们往往不可能只懂一种编程语言,而只能根据需要选择学习和使用不同的编程语言或技术。

那么在人工智能技术发展如此之快的今天,AI就不能在这个问题上帮帮我们解决一下?巧了,还真有。想必关注一人客的文章的朋友都大概知道,现在的人工智能技术,在自然语言理解、处理上已经很成熟,可以翻译自然语言了。那么AI翻译编程语言,可以不可以?可以,美国Facebook还就这么做了。

他们最近推出了TransCoder,这是一个可以翻译编程语言的AI,也就是说,这个人工智能程序可以在C++、Java、Python语言之间互译,把Java翻译成C++,把Python翻译成Java。而目前经过测试得出的结果呢,则是,翻译后的代码成功运行的通过率是80.9%。

惊讶不老铁?这么实用的AI技术要是普及开来,程序员还不得喜从天降痛哭流涕啊。天啊,终于不用劳心费力地移植代码,不用再在该死的编程语言之间切换了,只学一种编程语言就行了,用一种编程语言写代码,再翻译成其他编程语言。想变成C++,那就翻译成C++,想变成Java,就翻译成Java。

这个好有一比。你写的代码就好比你用汉字写的文章。在以前,你要给英文读者看,那你就得先学习英语,然后把你的汉语文章用英文再写一遍。你要给法国读者看,那你就得先学法语,然后再把你的汉语文章用法文写一遍。而现在呢,一个翻译软件搞定。

那么这个神一样的翻译AI软件,是什么原理呢?据了解,TransCoder利用的是无监督学习算法,充分利用了编程语言的特点,比如像for、while、if这些关键词以及通用的数学运算符。而实现这个无监督编程语言机器翻译的三个原则,则分别是:

首先,通过跨语言掩码语言模型(MLM)预处理来初始化模型,这有些类似于自然语言的填空题。其次是去噪自动编码,它能训练解码器始终生成有效序列,即使在输入有噪声的数据时也是如此,提高了编码器对输入噪声的鲁棒性。最后是反向翻译,它允许模型生成可用于训练的并行数据。每当Python转C++模型变得更好时,它就会为C++转Python模型生成更精确的数据,反之亦然。

在训练后,TransCoder这个AI成功地理解了每种语言特有的语法、数据结构、函数库和方法。而为了训练这个AI,Facebook从GitHub上找了280万个开源代码库来训练的,其中包含数百亿个token。当然就目前为止,这个翻译AI还没那么完善,而且类似的代码生成系统也不是第一个。但至少这是一个很被看好的需求方向,未来人工智能不仅会在现实生活中落地替代我们做很多事,而且会在技术上替代我们做很多工作。

相关文章