近日,Reddit 上有网友放出了一张疑似 Google 翻译添加了能让编程语言间互相转换的图片,立即引发数千名程序员网友的跟帖热议。图片显示,Google 翻译中添加了编程语言进行“互译”,输入Python 语言【print("Hello")】就可翻译成 Java 语言【 System.out.println("Hello");】。
“Java 语言对于大型编程项目来说实在是复杂且冗长了,天哪,急需这样一款工具。”消息一出,网友们兴奋极了。
让程序员们群情激昂的造假图
这当然是假的。不过图片实在太真实了,乍一看,难分真假,很多人都被骗了,在评论里嗷嗷尖叫,以为 Google 终于又来拯救他们了,很多人都可能兴冲冲跑到 Google 翻译去试了一遍。如果你在 Google 翻译里输入了 Python 语句,你得到的还是那个相同的输出语句。
能骗过很多程序员,说明“造假者”的造假功力不浅。很多人问,为什么不用截图骗人,而是放一张看上去像是用相机拍的照片,这不多此一举吗?
你知道,如果用的是截图,一般了解套路的程序员很快就能发现图片是假的,因为很容易怀疑这张图是通过开发工具编辑 HTML 而成。但这位“造假者”显然没有这么做,实际上,“像素级”的模糊照片增加了真实性,而这恰恰是他的高明之处。
网友@schludy评论说,“真正的神级程序员都太聪明以至于都不会使用截图......”,当然,也不会麻烦到使用 P 图软件。
这幅图正是编辑 HTML 后的截图
不过,程序员的狂热期待,也说明一款优秀的编程语言转译工具(transpiler,是以某种编程语言的程序源代码作为输入,生成以另一种编程语言构成的等效源代码的转译器。)对他们来说确实是迫切需求。
那到底有没有实用的转译工具?
目前还没有成熟的转译器供程序员们使用,很多都还在初级开发阶段,比如这款叫 voc 的转译工具,能将 Python 字节码(bytecode)转换为 Java 字节码,然后在 Java 虚拟机上运行。
voc 工具提供两个重要功能:
将 Python 3.4+ 源文件编译为 Java 类文件,使你能够在 JVM(包括 Android 的VM)上运行 Python 代码。
提供一个 API 让你以编程方式创建 Java 类文件。
不过官网指出,voc 工具还不能完全兼容 Python 3.4,并且只有一个简单的标准库实现,目前仍然需要实现一些语言特性(比如非本地函数和一些内置函数)。但是,voc 工具可以转换简单的 Python 程序,甚至可以编写简单的 Android 应用。
根据程序员的使用体验来看,“时好时坏”,这个转译工具目前的状况有点像 Google 翻译。
编程语言转换器可行吗?
在程序员群体中,一款好的编程语言转译器意味着有更好的生产工具,但像这样有着强需求的工具为什么到现在都没出现?
显然,编程语言转译器不是那么好做,可能需要花费大量的时间和精力,要不然像 Google 这样的企业可能早做出来了。
Reddit 上的程序员网友也对编程语言转译工具建言献策:
网友@merc08 指出应该根据 Google 翻译常规语言的做法来做:可以用语言来做转译,而每个单词有多种不同的含义。编程语言对每个命令都有固定的含义,所以它可能会是一个非常简单的查找表,只要它仅限于一种命令,做起来就不会那么难。
这位网友的想法简单来说就是,人们会接受 Google 翻译在常规语言翻译中出现的一些错误,这可能并不妨碍沟通,而在编程语言转译工具中,也会让你通过适当关键字来进行匹配搜索正确的转译格式。
有人反驳,编程语法不仅仅由查找表中的关键字组成,可能要比这复杂得多。比如面临如何设计简单的算法来进行转译、内存管理这些问题。
还有人提到,理论上讲,任何两种图灵完备语言都是可行的,只需将一种语言程序通过图灵机(Turing Machine)就可以翻译成另一种语言程序,当然还需要考虑更难的跨范式(cross-paradigm)翻译,如 prologinto 转译成 basic 或 javascriptinto 转译成 Haskell。
但考虑到 Google 翻译目前对常规语言的翻译都不是那么准确,而对准确性要求更高的编程语言来说,现在编程语言转译工具的实用性可能更鸡肋,很多网友表达了悲观态度。
总的来说,这幅“造假”图片能引起程序员群情亢奋,说明了对这一工具需求的迫切性——当然,排除那些对各种编程语言非常熟练的“大神级”程序员,他们可能对转译工具不屑一顾。科技改变生活,为了更快的改变大众生活,就应该先提升程序员们手中的生产工具。
期待有一款好用的转译工具来拯救程序员。大声告诉这个世界,你需要它!
原文地址:https://blog.51cto.com/14226273/2368158