IronPython 1.0 的发布,在邮件列表中引起了很多争论 ,有的人担心 IronPython 会污染了 CPython 标准的纯洁,也有人希望 IronPython 的兴起会给 Python 社区注入新的力量。 而在我看来,这些争论归根到底,就是一个兼容性的问题。在 .net 程序员看来,它是 IronPython 和 .net 的兼容性,和其它 .net 程序的互操作性如何;而在 python 程序员看来,它就是 IronPython 和 CPython 的兼容性了,和 其它 python 程序互操作性如何。 在 IronPython 与 CPython 2.4.3 的兼容性问题上,有这么一份详细的比较文档 官网下载 啄木鸟下载 。其中除了众多细小的区别外,在我看来比较重要的几点有:
Some CPython built-in extension modules do not exist in IronPython:
_bisect _codecs_hk audioop _multibytecodec parser array msvcrt _codecs_kr | _heapq _codecs_jp imageop mmap _subprocess _codecs_tw regex | zipimport xxsubtype _codecs_cn md5 _codecs_iso2022 rgbimg _csv | signal _hotshot sha cmath _symtable _winreg strop |
The doctest module does not run in IronPython. IronPython doesn’t support the select module. IronPython has no os.system function.
看来库的问题还是最大的,而且 CPython 中除了标准库还要那么多第三方的“事实上"的标准库!况且 .net 本身有那么一个庞大的库资源(包括官方的、第三方的等等),也没有必要非得使用 CPython 的标准库了。 不管兼容问题如何,我都不同意所谓 IronPython 污染 Python 之类的说法。是说 IronPython 会让 本来的 python 程序员转向 IronPython 从而导致 Python 社区的分离吗?不管 IronPython 和 CPython 在语法上是如何的接近,让一个不了解 .net框架的 CPython 程序员转向 IronPython ,其难度怎么也算得上是学习半个语言了。因为这就是 .net ,.net框架 对多语言支持好,但实际上众多语言写出的 .net 程序都是一个模子里出来的。 所以 python 程序员的选择应该是很明确的:如果你需要在 .net框架下工作,那 IronPython 是你的不二选择,否则,就完全没有必要使用 IronPython 了,使用 CPython 还有个跨os平台的优势,何乐而不为呢。 至于 IronPython 和 .net 之间的问题应该不大,不是很清楚,也不想做评论。
2 评论:
老大,满眼的IconPython看得眼睛疼,是IronPython啊
不好意思,谢谢提醒,已改正 :)
发表评论