Python和Ruby应用程序将如何受.NET影响?

时间:2009-01-21 20:43:41

标签: .net python ruby ironpython ironruby

我很好奇.NET将如何影响Python和Ruby应用程序。

使用IronPython / IronRuby编写的应用程序是否会特定于.NET环境,它们本质上将成为特定于平台的?

如果他们不使用任何.NET功能,那么IronPython / IronRuby相对于非.NET版本的优势是什么?

7 个答案:

答案 0 :(得分:5)

我不能说IronRuby,但大多数python实现(如IronPython,Jython和PyPy)都试图尽可能真实地实现CPython。 IronPython很快就会成为这方面最好的之一,并且Planet Python上有很多关于它的流量。

将鼓励开发人员编写与他们在CPython中编写的代码不同的主要内容是缺少像NumPy这样的C扩展模块(这也是Jython和PyPy中的一个问题)。

一个值得关注的有趣项目是IronClad,它可以让你从IronPython中调用C扩展模块。这最终意味着您可以使用您喜欢的任何模块在CPython下开发代码,并且它将在IronPython上不加修改地运行。

http://www.resolversystems.com/documentation/index.php/Ironclad

所以回答你的问题:

编写适用于CPython的IronPython应用程序应该很容易,但我可能会反过来说:CPython程序也适用于IronPython。这样,如果它不起作用,那么它更可能成为已知解决方案的已知错误。

IronPython等现有的优势在于它们提供了该语言的替代实现,这些实现有时可用于发现CPython中的错误。它们还提供了部署Python应用程序的替代方法,如果由于某种原因您发现自己处于某种情况(如silverlight),那么在您的应用程序中分发CPython实现是不合适的。

答案 1 :(得分:2)

  

使用IronPython / IronRuby编写的应用程序是否会特定于.NET环境,它们将基本上变为特定于平台?

IronRuby目前附带了大部分核心ruby标准库,并支持ruby gem。

这意味着它将支持几乎所有不依赖于C扩展的原生ruby应用程序 另一方面,可以在IronRuby中编写不依赖于CLR的原生ruby应用程序,并且这些应用程序可以移植到MRI。

人们是否选择使用CLR为其应用创建或使用扩展程序与人们是否为MRI创建或使用C扩展相同的问题 - 一个不比另一个更便携。

有一个侧面问题,因为在C#中创建IronRuby扩展比在C中创建CRuby扩展要容易得多,人们会创建扩展,他们应该坚持使用本机ruby代码吗? “,但这完全是主观的。

总的来说,我认为任何使创建扩展更容易的事情都是一个巨大的胜利。


  

如果他们不使用任何.NET功能,那么IronPython / IronRuby相对于非.NET版本的优势是什么?

  1. 性能:IronRuby在大多数情况下已经比MRI 1.8更快,并且距离MRI 1.9不远,事情只会在未来有所改善。我认为python在这方面是相似的。

  2. 部署:正如人们所提到的,在IIS中运行本机ruby跨平台rails应用程序对一些基于Windows的开发人员来说是一个有吸引力的主张,因为它可以让他们更好地与现有服务器/管理基础架构/等集成/ p>

  3. 稳定性:虽然MRI 1.9比1.8好得多,但我认为没有人会不同意CLR比C ruby​​有更好的垃圾收集器和基本运行时间。

答案 2 :(得分:1)

IronPython / IronRuby可以在.net虚拟机上运行,​​因此它们就像你说的那样基本上是特定于平台的。

显然,只要您不在程序中使用任何.net框架,它们就与Python和Ruby兼容。

答案 3 :(得分:1)

如果您创建库或框架,人们可以在.NET上使用它们的.NET代码。这对他们来说非常酷,对你而言!

在开发应用程序时,如果您放弃使用.NET的设施,那么您将失去“跨平台性”,这并不总是一个问题。

如果使用内部API包装这些用法,您可以稍后使用pure-Python,包装C(对于CPython)或Java(对于Jython)替换.NET实现。

答案 4 :(得分:1)

根据Mono页面,IronPython与Mono的.Net运行时实现兼容,因此可执行文件应该可以在Windows和Linux上运行。

答案 5 :(得分:0)

你用第二个问题回答你的第一个问题,如果你不使用.Net中的任何东西,只使用语言实现提供的原始文库,你可以用另一个实现解释你的* .py或* .rb文件它应该工作。

优点是如果您的.Net商店通常需要在客户端机器上安装正确的框架等......如果您需要python或ruby代码,那么您现在需要支持另一个“框架”需要分发安装,处理版本问题等...所以有2个优点,在另一种语言中使用.Net框架功能+尽可能简化分发/维护。

答案 6 :(得分:0)

在IIS下运行Rails / Django而不是Apache / Mongrel类型的解决方案

会很酷