可爱的 Python:JPython 和 Python for .NET内幕
2007-03-29 12:07:40 来源:WEB开发网例如,如果 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 中的那样。
更多精彩
赞助商链接