作者 | 若名

出品 | AI科技大本营(ID:rgznai100)

近日,Reddit 上有网友放出了一张疑似 Google 翻译添加了能让编程语言间互相转换的图片,立即引发数千名程序员网友的跟帖热议。图片显示,Google 翻译中添加了编程语言进行“互译”,输入Python 语言【print("Hello")】就可翻译成 Java 语言【 System.out.println("Hello");】。

“Java 语言对于大型编程项目来说实在是复杂且冗长了,天哪,急需这样一款工具。”消息一出,网友们兴奋极了。

让程序员们群情激昂的造假图

这当然是假的。不过图片实在太真实了,乍一看,难分真假,很多人都被骗了,在评论里嗷嗷尖叫,以为 Google 终于又来拯救他们了,很多人都可能兴冲冲跑到 Google 翻译去试了一遍。如果你在 Google 翻译里输入了 Python 语句,你得到的还是那个相同的输出语句。

能骗过很多程序员,说明“造假者”的造假功力不浅。很多人问,为什么不用截图骗人,而是放一张看上去像是用相机拍的照片,这不多此一举吗?

你知道,如果用的是截图,一般了解套路的程序员很快就能发现图片是假的,因为很容易怀疑这张图是通过开发工具编辑 HTML 而成。但这位“造假者”显然没有这么做,实际上,“像素级”的模糊照片增加了真实性,而这恰恰是他的高明之处。

网友@schludy评论说,“真正的神级程序员都太聪明以至于都不会使用截图......”,当然,也不会麻烦到使用 P 图软件。

这幅图正是编辑 HTML 后的截图

不过,程序员的狂热期待,也说明一款优秀的编程语言转译工具(transpiler,是以某种编程语言的程序源代码作为输入,生成以另一种编程语言构成的等效源代码的转译器。)对他们来说确实是迫切需求。

那到底有没有实用的转译工具?

目前还没有成熟的转译器供程序员们使用,很多都还在初级开发阶段,比如这款叫 voc 的转译工具(https://github.com/pybee/voc),能将 Python 字节码(bytecode)转换为 Java 字节码,然后在 Java 虚拟机上运行。(链接:https://pybee.org/project/projects/bridges/voc/)

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 翻译目前对常规语言的翻译都不是那么准确,而对准确性要求更高的编程语言来说,现在编程语言转译工具的实用性可能更鸡肋,很多网友表达了悲观态度。

总的来说,这幅“造假”图片能引起程序员群情亢奋,说明了对这一工具需求的迫切性——当然,排除那些对各种编程语言非常熟练的“大神级”程序员,他们可能对转译工具不屑一顾。科技改变生活,为了更快的改变大众生活,就应该先提升程序员们手中的生产工具。

期待有一款好用的转译工具来拯救程序员。大声告诉这个世界,你需要它!

(本文为 AI科技大本营原创文章,转载请微信联系 1092722531)

公开课预告

今晚8点直播

如何用AI技术为黑白老照片上色?本次公开课中,百度高级研发工程师李超将讲述对抗生成网络相关,学术界的研究现状和应用场景,以及GAN在百度视觉+百度PR+新华社合作的焕彩项目中的应用。

推荐阅读

  • 熬夜写代码,不如换女装入GitHub获上千Star?

  • 春节停车难?用Python找空车位

  • Python告诉你:为何年终奖多发一元,到手却少两千多?

  • 送你一份春节看片攻略~

  • 加班的程序员:996 没有未来

  • 滴滴回应顺风车重新上线;苹果推 iPhone 新政策;便利蜂“高数裁员”引争议? | 极客头条

  • 微服务架构下静态数据通用缓存机制

  • 打破区块链不可能三角!2 华人专家论文将登 NSDI 2019 计算机顶会

  • 女程序员:我敲代码养家,老公负责貌美如花!

java html转图片_Python一键转Java?“Google翻译”你别闹相关推荐

  1. Python一键转Java?“Google翻译”你别闹

    作者 | 若名 出品 | AI科技大本营(ID:rgznai100) 近日,Reddit 上有网友放出了一张疑似 Google 翻译添加了能让编程语言间互相转换的图片,立即引发数千名程序员网友的跟帖热 ...

  2. Python 一键转 Java?“Google 翻译”你别闹

    作者 | 若名 出品 | AI科技大本营(ID: rgznai100) 近日,Reddit 上有网友放出了一张疑似 Google 翻译添加了能让编程语言间互相转换的图片,立即引发数千名程序员网友的跟帖 ...

  3. 怎么在java中引用图片_如何使用Java(读/写)读取复制和粘贴图片?

    在Java语言编程中,如何使用Java(读/写)读取复制和粘贴图片? 注意:需要访问网址:http://book2s.com/java/jar/o/opencv/download-opencv-3.2 ...

  4. python语法与java语法的区别_Python语言与java语法的异同之处

    本文主要向大家介绍了Python语言与java语法的异同之处,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.变量 java中定义变量,int a=0;而python中为 a= ...

  5. java对话框背景图片插入_关于java编程窗体加背景图片的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 给一个登录界面加背景图片,一直加不上,同学给了一套代码,加上去也不行,彻底跪了,求大神指点一下.ps:窗体的大小和图片大小一样.只把有用的部分代码贴了出来 ...

  6. java点击图片发出声音_[Java教程]点击放大图片

    [Java教程]点击放大图片 0 2017-11-18 22:00:06 body{ text-align:center} div{ margin:50px auto} function clik(t ...

  7. java 微信开发图片发送,微信开发?Java上传Base64图片

    class="java">import org.apache.commons.codec.binary.Base64; import org.apache.log4j.Log ...

  8. java 浏览器访问图片不显示_[Java教程]重新上传图片后 地址不变 浏览器加载不到的问题...

    [Java教程]重新上传图片后 地址不变 浏览器加载不到的问题 0 2016-05-27 07:00:50 做项目的时候遇到一个问题: 上传文件以后,相同的地址,第一次加载没有问题,当你操作次数过快, ...

  9. java muti实现图片上传_MutiFileUpload.java 多文件上传

    package app.other.commons.file; import java.io.UnsupportedEncodingException; ..... / ^v^ **  * @vers ...

最新文章

  1. 翻译:AKKA笔记 - Actor消息 -1(二)
  2. Win32 控件篇(3)
  3. VC++程序中用PlaySound函数加入自定义声音
  4. mqtt 一对多_MQTT协议简要分析
  5. Maya mayapy.exe 安装 Cython,编译 pyd
  6. 解析 react、vue等路由参数的库 path-to-regexp
  7. 微信小程序定义全局变量_微信小程序第二天学习内容分享
  8. (ヒトコト)一个挺有趣的东西!作为一个动漫宅,游戏宅来说还是一个挺有趣的接口!banner上面就是...
  9. 21岁还可以学php开发吗,PHP已经21岁了!
  10. delete指针的含义
  11. python项目代码总结
  12. java实现物体下落效果_手撸一个物体下落的控件,实现雪花飘落效果
  13. Json.Net学习笔记(十) 保持对象引用
  14. 文件分片_文件分片上传原理解析
  15. Centos:更换为网易镜像源
  16. WPF应用无法使用Snoop分析的解决办法
  17. react 控制台 Maximum call stack size exceeded 如何解决
  18. 蓝牙耳机音质变差或许该注意这些问题,学生党什么牌子蓝牙耳机性价比高?
  19. Ubuntu 安装sogo 输入法
  20. 《缠中说禅108课》49:利润率最大的操作模式

热门文章

  1. new一个对象的过程中发生了什么
  2. 深入理解DDD中的聚合
  3. shell中四大循环介绍及使用
  4. 依赖注入[2]: 基于IoC的设计模式
  5. SSM项目中配置问题
  6. 数据结构6——回文树
  7. Firefox已阻止此网站安装未经验证的附加组件的解决办法
  8. LED植物照明原理、推广难题与研究进展-徐志刚
  9. 【日本語勉強】日本語四級文法突撃(11~20)
  10. Ant部署测试出错(关键字:Ant NoClassDefFoundError xml-apis/jar)