Fwd: Python to G o 转化Pyth on源码到Go源码
Interesting idea!
See translation:
On Saturday, May 24, 2014 12:17:22 AM UTC-7, bookaa bookaa wrote:
这个工具可以简称为 Python to GoLang,把 Python 源码自动转化为 Go 源码,然后可编译为独立的可执行文件。(附:Go语言是新兴的类C可编译语言,开源) 大家一般把 Python 理解为是一个脚本语言,虽然开发效率高,但运行速度慢,解释执行,不可编译,依赖解释环境,不方便发布。 多年以来,无数先烈做了大量的努力工作,试图提高 Python 的运行速度,有 pypy,Cython 等。但结果都不理想。我认为:Python 实际上规定了一套开发规范。用这套规范,你可以快速地表达你的逻辑思想。它并没有限定必须是脚本语言, 不可编译。只不过现在只有一个用C实现的 Python 解释器,简称 CPython。于是我们就想当然地认为, Python是脚本语言,不能编译。 我认为,一个软件,不管用什么编程语言,都是表达一些逻辑。它们之间应该是可以转化的。经过几个月的努力, 就有了现在这个工具。 我的思想:Python 是开发效率最高的编程语言。无数天才的程序员都狂热地喜欢 Python 和 Go。现在有了本软件,使 Python 可编译,使 Python 可提速,Python 语言不再有缺点!从此我们再也不需要学 C 和 C++ 了!Python 获得了新生!有人问,为什么要把 Python 转为 Go ,直接用 Go 开发不就行了?首先,Python 开发效率极高,而 Go 为了简洁缺失很多有用的内容。我不建议把 Go 作为主开发语言。其次,Python 的第三方库非常丰富,而 Go 作为新兴语言,如果能把 Python 的所有库都继承下来,必大大提高 Go 的地位。本软件有两种工作方式:方式一:如果你的产品只在已安装 Python 的环境下运行,或者为了方便分析调试,可以用方式一。这时,只会转化主工程文件目录下的py文件。对于 import 的系统模块则不作转化处理。一般一行 Python 代码转化后变成 1.5 行 Go 代码。转化后代码清晰明了,基本保持原函数名,变量名, 调用关系。方便再修改优化。 方式二:全转化。这会试图把所有 import 用到的系统模块全部转化为 Go 代码。这通常会产生超过十五万行 Go 代码。优点是这样转化后编译生成的可执行文件不再需要 Python 环境,单独一个 exe 加 python27.dll 加可能的 pyd 文件就可以运行了。方便发布。有人说,你为什么需要 python27.dll ? 如果带 dll 的话,我一行 exec 就全解决了,何必这么麻烦呢?如果用exec的话,还是解释执行的。达不到提速和安全的目的。我的做法,是把每一个函数都变成一个对应的Go函数。每一个变量都变成一个对应的Go源码下的变量。 我会尽量智能识别变量类型。如果发现变量是 integer 类型,就会直接使用 go 的 int ,优化了速度。对于不能识别的变量,或 list, tuple等,则用 PyObject ,对应的操作也只能调用 python27.dll 中的对应函数。 还有,Python 的一大优势是库非常丰富。大量的库实际上都是用C编译而来的 pyd 文件。这些pyd文件实际上是dll格式,它们依赖 python27.dll。有了本软件的转化,大量的 python 库都可以在 go 下运行了。极大地丰富了 go 的功能。比如 go 至今没有好的 gui 库,现在就可以借用 Python 间接实现 gui 开发。整个项目用了我多半年时间,约3万行代码。主要编程语言用 Python,辅以一些 Go 和 C 代码。如你所想,本软件可以转化自身。本软件的转化过程中,直接面对复杂的 Python 逻辑,把每一个知识点都要细致地从 Python 源码层转化为 PyObject层,再用 go 语言实现,工作量非常大。特别是一些 Python 中有而 Go 中没有的概念,处理起来非常有难度。比如 try/exception, yield, var scope, no use var, var declare等。 本项目准备以开源形式发布。源码稍后提供。暂只支持 Python 2.7.6 不支持 Python3。已经在 Win32,Win64 平台上测试通过。相信也可以很容易地运行在所有支持 Python 和 Go 的平台。Python 是用C实现且开源,Go也是用C实现且开源,几乎可以运行于所有平台。有了这个 Python to Go ,相信将来 Python+Go 会成为主流的开发方式。 作为本转化工具的第一个样例,一个我写的英语听力小工具 http://pan.baidu.com/s/1o6x5zRk 内有 Python 源码,和转化后的 go 源码 (17万行)。 现在可以提供的服务:1。协助你把 Python 源码转化为可编译的 Go 源码。方便部署,更安全,运行速度更快。2。协助你对 Python 项目优化提速。3。演讲,传达我的思想。刘涛涛 *****@qq.com
← Funny horse ...
If you've seen all of them, you are old enough →
- Funny youtube cover picture
- 2014 Internet Trend
- Fastest 911 Response: Beijing Fire Station caught Fire!!!
- NOW: AWS connectivity issue for Amazon Elastic Compute Cloud (N. California)
- If you've seen all of them, you are old enough
- Fwd: Python to G o 转化Pyth on源码到Go源码
- Funny horse ...
- Cute twins dancing
- Bill Gates published an academic paper in 1979 ...
- Amazon 1997~2014 share holder letters
- Amazon 1997 Letter to Shareholders