<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>idea&#039;s blog &#187; PyPy</title>
	<atom:link href="http://www.ideawu.net/blog/tag/pypy/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ideawu.net/blog</link>
	<description>网络服务器架构, Linux C/C++服务器端开发, TCP/IP网络协议, PHP Web后端和Web前端开发, 网站架构.</description>
	<lastBuildDate>Thu, 12 Jan 2012 14:55:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PyPy &#8211; 吞下自己尾巴的小蟒蛇</title>
		<link>http://www.ideawu.net/blog/archives/499.html</link>
		<comments>http://www.ideawu.net/blog/archives/499.html#comments</comments>
		<pubDate>Sun, 09 May 2010 13:30:01 +0000</pubDate>
		<dc:creator>ideawu</dc:creator>
				<category><![CDATA[Computer System]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[PyPy]]></category>

		<guid isPermaLink="false">http://www.ideawu.net/blog/archives/499.html</guid>
		<description><![CDATA[<p><a href="http://www.ideawu.net/blog/wp-content/uploads/2010/05/snake-eat-itself.jpg"><img src="http://www.ideawu.net/blog/wp-content/uploads/2010/05/snake-eat-itself.jpg" alt="" title="snake-eat-itself" width="128" height="128" class="alignright size-full wp-image-498" /></a></p>
<p><a href="http://www.pypy.org/">PyPy</a> 项目可能会颠覆老学究和初学者的逻辑, 因为 PyPy 用 Python 语言来实现 <a href="http://docs.python.org/reference/">Python</a> 语言, 就像一只小蟒蛇吞下自己的尾巴. 也许你没见过, 但它确实存在.</p>
<p>你可能会疑惑, 既然已经有了 Python, 那么为什么还用 Python 来实现 Python(PyPy)? 后者到底是什么东西?</p>
<p>其实, 这其中的逻辑并不复杂. 比如 C 语言, C 语言的第一个编译器肯定不是用 C 语言来编写的, 但之后, C 编译器(如 GCC)就没有理由不用 C 来编写了. 所以, 用 Python 语言编写, 并用已存在的 Python 编译器(解释器, 执行环境)来做一个实现 Python 语言并没有什么奇怪.</p>
<p><span id="more-499"></span><a href="http://www.pypy.org/"><img src="http://pypy.org/image/pypy-logo.png" alt="[pypy-logo]" /></a></p>
<p>简单地说, PyPy 是用 Python 语言写了一个工具, 将 Python 代码转成 C, .NET, Java 等语言和平台的代码. PHP 也有类似的项目 &#8211; <a href="http://www.hiphop-php.com/">HipHop-PHP</a>, 把 PHP 代码转成 C++ 代码.</p>
<p>为什么要将一种语言转成另一种语言? 首先是目标语言可能在性能(如C语言)和/或跨平台(如 .NET, Java)等方面具有优势. 其次, 在转换的过程, 可以进行代码优化或加入新技术, 比如 PyPy 应用的 Just-in-Time(JIT) 技术, 能让 Python (事实上是转换后的目标代码)的执行速度更快.</p>
<p>PyPy 和许多编译器, 解释器, 翻译器不同, 它不关心 Python 代码的词法分析和语法树. 因为它是用 Python 语言写的, 所以它直接利用 Python 语言的 <a href="http://docs.python.org/reference/datamodel.html">Code Object</a>. Code Object 是 Python 字节码的表示. 也就是说, PyPy <a href="http://codespeak.net/pypy/trunk/pypy/doc/architecture.html#id12">直接分析 Python 代码所对应的字节码</a>, 这些字节码即不是以字符形式也不是以某种二进制格式保存在文件中, 而在 Python 运行环境中.</p>
<p>越来越多的编程语言被设计成解释型, 但考虑到性能时, 几乎不约而同地想到转换成 C 语言. C 语言已经成为一个标杆, 任何编程语言都可以根据其距离 C 语言的远近来分类.</p>


<h3>Related posts:</h3><ol><li><a href='http://www.ideawu.net/blog/archives/269.html' rel='bookmark' title='Permanent Link: 开始学习 Python'>开始学习 Python</a></li>
<li><a href='http://www.ideawu.net/blog/archives/497.html' rel='bookmark' title='Permanent Link: 用脚本语言开发网游 &#8211; C整合Python'>用脚本语言开发网游 &#8211; C整合Python</a></li>
<li><a href='http://www.ideawu.net/blog/archives/508.html' rel='bookmark' title='Permanent Link: Windows Python select标准输入输出'>Windows Python select标准输入输出</a></li>
<li><a href='http://www.ideawu.net/blog/archives/357.html' rel='bookmark' title='Permanent Link: MySQL 查询使用 Group By 的注意点'>MySQL 查询使用 Group By 的注意点</a></li>
<li><a href='http://www.ideawu.net/blog/archives/334.html' rel='bookmark' title='Permanent Link: 小巧且强大的集成开发环境(IDE) &#8211; Code::Blocks'>小巧且强大的集成开发环境(IDE) &#8211; Code::Blocks</a></li>
</ol><div><p><img src="http://www.ideawu.net/favicon.ico" /> 你现在看的文章是: <a href="http://www.ideawu.net/blog/archives/499.html" title="PyPy &#8211; 吞下自己尾巴的小蟒蛇">PyPy &#8211; 吞下自己尾巴的小蟒蛇</a></p>

<div>
	<a href="http://www.benegg.com/linode-ad.php">
		Linode VPS - 美国虚拟主机
	</a>
	|
	<a href="http://www.udpwork.com/">
		IT牛人博客聚合网站
	</a>
</div></div>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ideawu.net/blog/wp-content/uploads/2010/05/snake-eat-itself.jpg"><img src="http://www.ideawu.net/blog/wp-content/uploads/2010/05/snake-eat-itself.jpg" alt="" title="snake-eat-itself" width="128" height="128" class="alignright size-full wp-image-498" /></a></p>
<p><a href="http://www.pypy.org/">PyPy</a> 项目可能会颠覆老学究和初学者的逻辑, 因为 PyPy 用 Python 语言来实现 <a href="http://docs.python.org/reference/">Python</a> 语言, 就像一只小蟒蛇吞下自己的尾巴. 也许你没见过, 但它确实存在.</p>
<p>你可能会疑惑, 既然已经有了 Python, 那么为什么还用 Python 来实现 Python(PyPy)? 后者到底是什么东西?</p>
<p>其实, 这其中的逻辑并不复杂. 比如 C 语言, C 语言的第一个编译器肯定不是用 C 语言来编写的, 但之后, C 编译器(如 GCC)就没有理由不用 C 来编写了. 所以, 用 Python 语言编写, 并用已存在的 Python 编译器(解释器, 执行环境)来做一个实现 Python 语言并没有什么奇怪.</p>
<p><span id="more-499"></span><a href="http://www.pypy.org/"><img src="http://pypy.org/image/pypy-logo.png" alt="[pypy-logo]" /></a></p>
<p>简单地说, PyPy 是用 Python 语言写了一个工具, 将 Python 代码转成 C, .NET, Java 等语言和平台的代码. PHP 也有类似的项目 &#8211; <a href="http://www.hiphop-php.com/">HipHop-PHP</a>, 把 PHP 代码转成 C++ 代码.</p>
<p>为什么要将一种语言转成另一种语言? 首先是目标语言可能在性能(如C语言)和/或跨平台(如 .NET, Java)等方面具有优势. 其次, 在转换的过程, 可以进行代码优化或加入新技术, 比如 PyPy 应用的 Just-in-Time(JIT) 技术, 能让 Python (事实上是转换后的目标代码)的执行速度更快.</p>
<p>PyPy 和许多编译器, 解释器, 翻译器不同, 它不关心 Python 代码的词法分析和语法树. 因为它是用 Python 语言写的, 所以它直接利用 Python 语言的 <a href="http://docs.python.org/reference/datamodel.html">Code Object</a>. Code Object 是 Python 字节码的表示. 也就是说, PyPy <a href="http://codespeak.net/pypy/trunk/pypy/doc/architecture.html#id12">直接分析 Python 代码所对应的字节码</a>, 这些字节码即不是以字符形式也不是以某种二进制格式保存在文件中, 而在 Python 运行环境中.</p>
<p>越来越多的编程语言被设计成解释型, 但考虑到性能时, 几乎不约而同地想到转换成 C 语言. C 语言已经成为一个标杆, 任何编程语言都可以根据其距离 C 语言的远近来分类.</p>


<h3>Related posts:</h3><ol><li><a href='http://www.ideawu.net/blog/archives/269.html' rel='bookmark' title='Permanent Link: 开始学习 Python'>开始学习 Python</a></li>
<li><a href='http://www.ideawu.net/blog/archives/497.html' rel='bookmark' title='Permanent Link: 用脚本语言开发网游 &#8211; C整合Python'>用脚本语言开发网游 &#8211; C整合Python</a></li>
<li><a href='http://www.ideawu.net/blog/archives/508.html' rel='bookmark' title='Permanent Link: Windows Python select标准输入输出'>Windows Python select标准输入输出</a></li>
<li><a href='http://www.ideawu.net/blog/archives/357.html' rel='bookmark' title='Permanent Link: MySQL 查询使用 Group By 的注意点'>MySQL 查询使用 Group By 的注意点</a></li>
<li><a href='http://www.ideawu.net/blog/archives/334.html' rel='bookmark' title='Permanent Link: 小巧且强大的集成开发环境(IDE) &#8211; Code::Blocks'>小巧且强大的集成开发环境(IDE) &#8211; Code::Blocks</a></li>
</ol><div><p><img src="http://www.ideawu.net/favicon.ico" /> 你现在看的文章是: <a href="http://www.ideawu.net/blog/archives/499.html" title="PyPy &#8211; 吞下自己尾巴的小蟒蛇">PyPy &#8211; 吞下自己尾巴的小蟒蛇</a></p>

<div>
	<a href="http://www.benegg.com/linode-ad.php">
		Linode VPS - 美国虚拟主机
	</a>
	|
	<a href="http://www.udpwork.com/">
		IT牛人博客聚合网站
	</a>
</div></div>]]></content:encoded>
			<wfw:commentRss>http://www.ideawu.net/blog/archives/499.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

