Python的亲戚们 (之二)

来源:互联网 发布:淘宝板鞋什么牌子好 编辑:程序博客网 时间:2024/04/28 02:37

 

【转载请注明出处 http://blog.csdn.net/IDisposable

首先我们来看看Python在.NET平台上的实现IronPython。

1. IronPython是什么

我们先来看看IronPython的自我介绍(来自http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython):

IronPython is a new implementation of the Python programming language running on .NET. It supports an interactive console with fully dynamic compilation. It is well integrated with the rest of the .NET Framework and makes all .NET libraries easily available to Python programmers, while maintaining full compatibility with the Python language.

这个自我介绍带有很强烈的MS味道,因为微软为了显示.NET平台对动态语言(如python, Ruby之类)的良好支持,已经将IronPython“收编”了。

这样我们可以认为IronPython是出自.NET,并为.NET服务的了。有人会说这样IronPython就不如CPython那样有优秀的跨平台能力了,嗯,但是难道.NET不是一个更强大的平台吗?借助MS .NET或Mono,IronPython就象是站在巨人的肩膀上能够发挥更大的威力。

2. IronPython能做什么

为了证明IronPython并不仅仅是实验室里培育的玩具,微软提供了一些例子来说服用户。例子可以从这里下载:

http://www.codeplex.com/IronPython/Wiki/View.aspx?title=Samples&referringTitle=Home

随便列举几个:

a. Windows Forms and Map Point 体现了IronPython创建WinForm程序及开发web service客户端的能力;

b. IronTunes 使用的技术有DirectX, COM Interop, WPF

c. Pyc 如果你用过CPython,对pyc肯定不陌生 - 这个例子的意图也很明显:由IronPython的脚本文件生成.NET的可执行文件。个人觉得这是个比较好的特性。(p.s. 你是不是想起了py2exe呢?呵呵)

d. IPPowerShell 这个例子展示了在IronPython的脚本中通过直接调用PowerShell APIs来使用PowerShell的命令。PowerShell和IronPython的关系很耐人寻味,后边还会讲到。

 

3. IronPython的优点和缺点

靠上了微软这座大山,IronPython的前景很明朗:有足够的资源维护它的开发,能够吸引足够的眼球;以庞大的.NET为基础,它可以快速地被使用其他.NET语言的开发人员接受,也能够(按照微软的意图)将一些Python开发者过渡到.NET平台上。习惯跟代码打交道的我们也许并不很关心这些,但是有一点值得一提,就是IronPython的性能。Python常常为人所诟病的一点就是性能比较差,尽管Python 2.4以及最新的Python 3000都在提升性能方面做了很大努力。但是IronPython的性能整体比CPython要好。(注: 这里没有准确的数据,以后如果能够找到我会补上。IronPython 0.5 beta的性能是Python 2.3的1.7倍,但是IronPython 1.0由于侧重于开发功能,速度大大落后于Python)

至于缺点呢,呵呵,因为和微软的关系,很多开发者对IronPython都是有些犹豫的 - 虽然IronPython是开源的,但是它的发展方向很可能由微软主导而不是社区(看看昨天的Managed C++、今天的C++/CLI是不是能想象IronPython的明天?)。另外看到很多人抱怨IronPython的GC,说这个GC跟CPython, Jython相比是最差的一个。这个也许不是很客观,但是另外的一个问题是著名的”del”问题 - 大家知道Python中del语句用来介绍对象的生命周期,但是由于.NET的不确定性析构,实现del是个技术上的大难题。但是有太多的python脚本依赖del,如果这个问题不能解决很多现有的Python程序无法在IronPython上正常运行。

p.s. 不知道Jython中是不是有类似的问题,如何解决的呢?

 

4. 前景展望

个人的一点点想法:微软推出的PowerShell也许会让IronPython很尴尬。正如这个名字一样,PowerShell很强大,也能够直接使用.NET framework。这对于IronPython这些后妈生的孩子来说真不见得是什么好事体。另外,象Boo这样的语言也可能对IronPython带来冲击。

 

5. 相关链接:

a. 下载 IronPython 1.1.2 (2008年8月8号发布的,可是黄道吉日哦。如果是在中国可能算是奥运版了)

b. IronPython的IDE - IronPython Studio 真的感谢微软,临博涕零!

    这个IDE是在Visual Studio 2008 Shell上开发的,最大的好处就是熟悉的环境不需要学习,UI designer也不错。