Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格,下面我就对Python 语言进行说明,做一下自己的解析。
他从 Mark 那里了解到一些有关微软开发的***独家新闻内幕(当然所有内容都在保密合同限制内)并从 Finn 和 Barry 那里了解到有关 JPython 和他们将要发布的 Jython 项目的一些信息。
尽管 Python 通常等同于 CPython,但它的规范曾在其它地方实现过多次,包括在用于 Java 和 .NET 的应用程序中。JPython 将 Python 源码编译成 Java 字节码,并提供了对 Java 类的透明访问。Python for .NET 是微软将要发布的交叉语言技术平台工作中的一个应用。在采访 Mark Hammond、Finn Bock 和 Barry Warsaw 的过程中。
我发现了有关 JPython 和 Python for .NET 是如何开发的更多信息,以及为未来这些替代 Python 实现进行了哪些准备。由于在 PythonWin 环境和 PythonCOM 扩展方面出色的开发,Mark Hammond 为广大 Python 程序员所熟知。出于我们钦佩 Mark 的相同原因,微软也很看重他。
他们决定在 Python for .NET 的实现上向他求助。据 Mark 称,Python for .NET 的工作版本应该很快就可得到,现在您应该已经可以从 ActiveState 获得它的 alpha 或 beta 版(请参阅 参考资料)。
David Mertz :到底什么是 Python for .NET 呢?我想我特别想知道的是 Python for .NET 与您自己对 CPython 的 PythonWin 和 PythonCOM 扩展(它们似乎能够控制 Windows 的内部)之间的关系是怎样的。
Mark Hammond :Python for .NET 是一种编译器和运行时,它在微软的 .NET 平台上实现了 Python。.NET 平台提供了一个运行时和元数据系统,它们设计成允许完整的语言互操作性,但要实现这一点,语言必须能在该运行时中使用。
例如,如果 Python 类是公用的以便 Visual Basic 程序员能够继承它,Python 类就必须以 .NET 术语而不是以 CPython 术语来实现和描述。Python .NET 的优点只是可以与 .NET 框架互操作。这里仍然有许多缺陷,主要由于实现还不成熟而导致。但这确实只是时间的问题。我们仍处于开发和调试的 beta 阶段。
Mertz :您对现在的 Python for .NET 和 CPython 之间不兼容性问题是怎么看的?Hammond :是啊,大多数模块还没有被实现,所以现有以 C 编写的模块还无法确切使用。如果您的目标不是 .NET 框架,***此时不要使用 Python .NET。Mertz :不过,Python for .NET 肯定有一些主要的优势,例如方便的语言间通信和多语言应用开发。
但为什么您说比已经有的那些 -- 例如 Python+C+SWIG 要好呢(当然是假设情况)。Hammond :就 Python+C+SWIG 目前的发展而言,应该是明显的。语言间调用永远不应该象使用 Python+C+SWIG 那样困难。但 SWIG 在许多其它方面是个了不起的产品。它揭开了 Python C 扩展编写的神秘面纱,并仅将它归到困难的行列。
将 .NET 与 COM 或 Corba 进行比较更合理一些。COM 和 Corba 都提供交叉语言调用“正适用”的解决方案,而不需要任何手工参与或编译。
.NET 将它更进了一步,并提供交叉语言继承和异常能力。这些优点非常类似于在 Java 虚拟机下的多语言实现中发现的那些。
Mertz :Python for .NET 将 Python 脚本编译成外部虚拟机的格式。对于 .NET VM 是否将支持 Stackless 和 Vyper 的某些外来特性,例如延续性、生成器、协同程序、尾递归或延缓求值,您认为会这样吗?
Hammond :是的,从理论上说它会。但微软 Beta 协议的一些条款不允许我谈论有关性能的问题。 让我们将目标只定在核心 Python 语言引用中定义的那些特性上。无用信息收集是继承的,就象在 JPython 和 JVM 中的那样。
Mertz :接下来谈谈政策主题,您认为微软为什么正在进行 Python for .NET 的开发工作呢?Hammond :这样选择目标 .NET 的人就可使用 Python 了,无用信息收集是继承的,就象在 JPython 和 JVM 中的那样。
微软很早就确定要参与到 Python 和其它许多语言中,以确保他们的 VM 确实是不懂语言也能够使用的。根据来自各种语言实现者的反馈意见,现在他们已经对他们的 VM 做了大量更改。
Warsaw :我们已经基于公用 JPython 1.1 发行版创建了 JPython 后继者 "Jython"。这样做是为了确保项目的长久性和稳定性。依据 CNRI 的 JPython 1.1.x 许可证实现了所有这些。我们将整个开发过程移到了 SourceForge。
并使用对 CPython 非常合适的相同开放过程管理它。Finn 和我两人无疑要参与 Jython 未来的开发;Jython 将使用 OSI 核准的 CPython 2.0 许可证发行。它与您将获得的“正式”派生很接近,所以当前的 JPython 社区应该确信 Jython 与它永远不会相差太多。我们希望它们最终都能迁移到 Jython。
现在代码仍处在试验阶段,但 Finn 和我将为 Jython 2.0 发行版(已经包含了 Finn 的勘误表)致力于建立几个技术性里程碑。CPython 2.0 具有增强的指派和扩展打印等特性(很快还将带有列表理解)。
我们已集成了免费的 Apache Jakarta OROMatcher 代码,消除了双许可证的需要,并修正了许多错误。我不知道 Jython 2.0 的***个 alpha 发行版何时出现,但当前所有代码都在 SourceForge CVS 树中获得。
【编辑推荐】