当前位置: 首页 > 编程日记 > 正文

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

640?wx_fmt=jpeg


作者 | 若名

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


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


640?wx_fmt=png


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


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


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


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


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


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


640?wx_fmt=jpeg

这幅图正是编辑 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+新华社合作的焕彩项目中的应用。


640?wx_fmt=png


推荐阅读

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

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

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

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

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

  • 极客头条

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

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

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

640?wx_fmt=png

相关文章:

我所感兴趣的iOS10新特性

###SiriKit Siri API 的开放自然是 iOS 10 SDK 中最激动人心也是亮眼的特性。SiriKit 为我们提供一全套从语音识别到代码处理,最后向用户展示结果的流程。Apple 加入了一套全新的框架 Intents.framework 来表示 Siri 获取并解析的结果。你的应用需要提供一些关键字表…

如何将三万行代码从Flow移植到TypeScript?

作者 | David Gomes译者 | 弯月责编 | 郭芮来源 | CSDN(ID:CSDNnews)【编者按】在内存安全中,类型安全是很重要的一个命题。为了确保JavaScript项目运行的类型安全,本文的作者介绍了2016年时使用Flow的经历&#xff1…

CRM——插件流程回顾

1. Django项目启动 自动加载文件 制作启动文件1. 注册strak 在apps.py 类里面增加如下 def ready(self):from django.utils.module_loading import autodiscover_modulesautodiscover_modules("stark")2. 在已经注册的app中创建stark.py文件 加载2. 在stark中模仿Adm…

Linux驱动:TI达芬奇系列kernel中cup类型的判断,以cpu_is_ti81xx()为例

cpu_is_ti81xx() 为真 cpu.h (arch\arm\plat-omap\include\plat) 1、 # define cpu_is_ti81xx() is_ti81xx() # define cpu_is_ti814x() is_ti814x() 2、 #define IS_TI_CLASS(class, id) \ static inline int is…

IT人请注意你的身体![转]

IT人请注意你的身体![转]IT一直是很多人的梦想,外行的无数人挤破了脑袋想进这个圈子,在一般人看来,他们是时代的宠儿,他们可以不修边幅,他们工作时间可以身着便装,他们可以不受早九晚五的束缚,他…

WF4.0实战(六):控制WPF动画

这个例子改造了王晓冬老师的:用WF流程控制WPF动画。 本文用一个小例子演示了在WF中定义两个操作步骤,用来控制WPF页面元素的动画。王冬老师当时使用的是WF3.0,现在我改成WF4.0。 先看效果: 活动: 流程: 实现:实现很简单…

嵌入式学习:存储器总结

1、nor flash:NOR采用的并行接口,其特点读取的速度比之NAND快乐很多倍,其程序可以直接在NOR里面运行。但是它的擦除速度比较慢,集成度低,成本高的。现在的NOR的容量一般在2M左右,一般是用在代码量小的嵌入式…

10门必看的机器学习免费课程

整理 | 琥珀出品 | AI科技大本营(ID: rgznai100)文本将介绍来自全球10所著名学府的机器学习和数据科学领域的免费公开课程,范围涉及从入门机器学习到自然语言处理等。1、机器学习华盛顿大学链接:https://courses.cs.washington.ed…

golang实现给图片加水印

2019独角兽企业重金招聘Python工程师标准>>> 最近跟在写golang图片加水印的方法,这里用的是一些基本的功能。 package mainimport ("fmt""image""image/draw""image/jpeg""image/png""os" …

编译android不再需要jdk1.5

2019独角兽企业重金招聘Python工程师标准>>> 今天编译Android的时候发现jdk不是1.5都可以通过。 转载于:https://my.oschina.net/zengsai/blog/4103

来自程序员的福利!用Python做一款翻译软件

来源 | Ahab杂货铺(ID:PythonLearningCamp)前两天吃了平哥的一波狗粮,他给女朋友写了一个翻译软件,自己真真切切的感受到了程序员的浪漫。在学习requests请求的时候做过类似的Demo,给百度翻译发送一个post请…

海思3536:osdrv编译过程中报错及解决方法

1、安装交叉编译工具 1.1 cd toolchain/arm-hisiv300-linux/ 1.2 tar -xvf arm-hisiv300-linux.tar.bz2 1.3 修改cross.install:使用bash 1.4 sudo ./cross.instal 1.5 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了 2…

Vmware linux 无法上网

流程如下: 1)点击 VM->Settings Hardware选项卡下面 2)点击Network Adapter 设置如下图所示,首先我们在虚拟机中将网络配置设置成NAT, 3、进入Windows操作系统,然后右键点击我们的电脑,进入到管理界面 …

编程25年后,现实将我打回菜鸟程序员的起点

在从事了 25 年的编程工作后,我却发现自己没有什么具体的东西可以展示给大家。我需要克服完美主义思想和对被批评的恐惧,向大家展示真实的自己。作者 | DeChamp译者 | 苏本如责编 | 仲培艺出品 | CSDN(ID:CSDNNews)下面…

MOSS 2010:Visual Studio 2010开发体验(14)——列表开发之事件接收器

通过前面几篇,我们已经完成了内容类型,列表定义,列表实例的开发。本篇继续讲解列表中的一个重要环节——事件接收器开发。 我们的场景是:我希望之前做好的订单列表这个内容类型自动地具有某些事件特征,例如当用户在添加…

海思3536:kernel编译和mpp_single编译过程报错及解决方法

### 1、编译kernel 1.1 cd kernel/linux-3.10.y 1.2 cp arch/arm/configs/hi3536_full_defconfig.config 1.3 make ARCHarmCROSS_COMPILEarm-hisiv300-linux- menuconfig 1.4 make ARCHarmCROSS_COMPILEarm-hisiv300-linux- uImage 1.4.1 弹出选择板子型号:39&…

026——VUE中事件修饰符之使用$event与$prevent修饰符操作表单

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>事件修饰符之使用$event与$prevent修饰符操作表单</title><script src"vue.js"></script> </head> <body> &…

Linux shell脚本基础学习

Linux shell脚本基础学习这里我们先来第一讲&#xff0c;介绍shell的语法基础&#xff0c;开头、注释、变量和 环境变量&#xff0c;向大家做一个基础的介绍&#xff0c;虽然不涉及具体东西&#xff0c;但是打好基础是以后学习轻松地前提。1. Linux 脚本编写基础◆1.1 语法基本…

海思3536:PC客户端编译过程报错及解决方法

1、Hi3536V100R001C02SPC040版本编译出错 --------- 错误 4 error LNK2001: 无法解析的外部符号 _IveOpenFile D:\share\Hi3536V100R001C02SPC040\01.software\pc\IVE_CLIB\HiIVE_PC_V2.0.0.7\sample\ive_samples_2.0\Integ\ive_clib_2.0.lib(ive_clib.obj) 错误 5 error LNK20…

百度15篇论文被AAAI 2019收录

1月27日&#xff0c;第33届 AAAI&#xff08;AAAI 2019&#xff09;在美国夏威夷召开&#xff0c;其中百度共有15篇论文被收录。AAAI于1979年成立&#xff0c;是国际人工智能领域的顶级国际会议。这一协会如今在全球已有超过6000名的会员&#xff0c;汇集了全球最顶尖的人工智能…

使用 xcworkspace 管理 iOS 工程

首先创建目标工程 创建工作空间xcworkspace文件&#xff0c;并将创建的*.xcworkspace文件放到刚创建的目标工程同级目录下 关闭刚刚创建的目标工程&#xff0c;打开*.xcworkspace文件&#xff0c;把刚刚创建的目标工程添加到工作空间中来 如果要添加一些框架&#xff0c;则将目…

Windows 2008 部署服务之Windows 7 应答文件创建

——————————————————————————————Windows 2008 部署服务八步走&#xff1a;1、Windows 2008 部署服务之WDS概述 2、Windows 2008 部署服务之WDS安装及配置 3、Windows 2008 部署服务之添加启动映像 4、Windows 2008 部署服务之Windows XP应答文件…

DotNetCore跨平台~System.DrawingCore部署Linux需要注意的

回到目录 你在windows上使用图像组件没有任务问题&#xff0c;但部署到linux之后&#xff0c;将注意以下几点&#xff1a; 安装nuget包ZKWeb.System.Drawing项目里还是引用System.DrawingCore&#xff0c;这点不用改安装gdiplus插件&#xff0c;这个需要根据linux类型不同&…

iPhone曝严重漏洞,用户接听FaceTime前或被“监听”!

作者 | 琥珀 出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09; 近日&#xff0c;据 9to5Mac 等多家外媒报道&#xff0c;苹果手机 FaceTime 一项重大漏洞被曝光&#xff0c;该漏洞可以让用户通过 FaceTime 群聊功能&#xff08;Group FaceTime&#xff09;打电话给任…

海思3536:交叉编译Qt4.8.4

一、交叉编译qt 1、下载Qt源码包qt-everywhere-opensource-src-4.8.4.tar.gz; 2、解压Qt源码包tar -xvfzqt-everywhere-opensource-src-4.8.4.tar.gz 3、创建qmake.conf 3.1在qt-everywhere-opensource-src-4.8.4/mkspecs/qws/下创建linux-hisiv400-g++; 3.2将qt-everyw…

理解LoadRunner中的局部变量和全局变量

以下内容均选自个人作品&#xff1a;《精通软件性能测试与LoadRunner实战》在C语言中&#xff0c;变量有效性的范围称变量的作用域。不仅对于形参变量&#xff0c;&#xff23;语言中所有的量都有自己的作用域&#xff0c;按作用域范围不同&#xff0c;可分为局部变量和全局变量…

TI-DM8127:MCFW、ISS中对sensor的驱动和控制

1、sensor生命周期 mcfw的bios6层调用iss接口Iss_platformDeviceInit()&#xff0c;该接口调用sensor&#xff08;以IMX185为例&#xff09;初始化Iss_Imx185Init()&#xff0c;通过HDVPSS提供的FVID2接口FVID2_registerDriver去注册一个FVID2设备&#xff0c;bios6再创建一个…

小米开源FALSR算法:快速精确轻量级的超分辨率模型

作者 | 周强&#xff08;我爱计算机视觉&#xff09;、刘畅编辑 | Jane出品 | AI科技大本营这是来自小米最新出炉的论文&#xff0c;使用神经架构搜索技术自动确定超分辨率网络模型&#xff0c;取得了又快又好的效果&#xff0c;模型已开源&#xff0c;非常赞&#xff01;摘要深…

Node.js服务器启用Gzip压缩

Gzip是什么 复制大神们的解释吧&#xff1a; GZIP最早由Jean-loup Gailly和Mark Adler创建&#xff0c;用于UNIX系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件&#xff0c;它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式&#xff0c;或…

【bzoj1251】序列终结者(伸展树)

【bzoj1251】序列终结者&#xff08;伸展树&#xff09; Description 网上有许多题&#xff0c;就是给定一个序列&#xff0c;要你支持几种操作&#xff1a;A、B、C、D。一看另一道题&#xff0c;又是一个序列 要支持几种操作&#xff1a;D、C、B、A。尤其是我们这里的某人&…