Uliweb

Limodou 写的一个开发框架 ...

↑我也要推荐

PyPy – 吞下自己尾巴的小蟒蛇

发布时间:2010-12-06 13:03:14, 关注:+5244, 赞美:+9, 不爽:+6

PyPy 项目可能会颠覆老学究和初学者的逻辑, 因为 PyPy 用 Python 语言来实现 Python 语言, 就像一只小蟒蛇吞下自己的尾巴. 也许你没见过, 但它确实存在.

你可能会疑惑, 既然已经有了 Python, 那么为什么还用 Python 来实现 Python(PyPy)? 后者到底是什么东西?

其实, 这其中的逻辑并不复杂. 比如 C 语言, C 语言的第一个编译器肯定不是用 C 语言来编写的, 但之后, C 编译器(如 GCC)就没有理由不用 C 来编写了. 所以, 用 Python 语言编写, 并用已存在的 Python 编译器(解释器, 执行环境)来做一个实现 Python 语言并没有什么奇怪.

简单地说, PyPy 是用 Python 语言写了一个工具, 将 Python 代码转成 C, .NET, Java 等语言和平台的代码. PHP 也有类似的项目 – HipHop-PHP, 把 PHP 代码转成 C++ 代码.

为什么要将一种语言转成另一种语言? 首先是目标语言可能在性能(如C语言)和/或跨平台(如 .NET, Java)等方面具有优势. 其次, 在转换的过程, 可以进行代码优化或加入新技术, 比如 PyPy 应用的 Just-in-Time(JIT) 技术, 能让 Python (事实上是转换后的目标代码)的执行速度更快.

PyPy 和许多编译器, 解释器, 翻译器不同, 它不关心 Python 代码的词法分析和语法树. 因为它是用 Python 语言写的, 所以它直接利用 Python 语言的 Code Object. Code Object 是 Python 字节码的表示. 也就是说, PyPy 直接分析 Python 代码所对应的字节码, 这些字节码即不是以字符形式也不是以某种二进制格式保存在文件中, 而在 Python 运行环境中.

越来越多的编程语言被设计成解释型, 但考虑到性能时, 几乎不约而同地想到转换成 C 语言. C 语言已经成为一个标杆, 任何编程语言都可以根据其距离 C 语言的远近来分类.

---

原文:http://www.ideawu.net/blog/archives/499.html

如果你觉得本站对你有帮助,欢迎向本站赞助 :P

使用支付宝捐赠

Copyright© Python4cn(news, jobs) simple-is-better.com, 技术驱动:powered by web.py 空间主机:Webfaction

版权申明:文章转载已注明出处,如有疑问请来信咨询。本站为 python 语言推广公益网站,与 python 官方没有任何关系。

联系/投搞/留言: en.simple.is.better@gmail.com 向本站捐赠