小规模项目中,IronPython和C#哪个更好?

8
我目前在大部分编程项目中使用Python(主要用于快速开发小程序和原型)。我希望能够投入时间学习一种语言,使我有机会在需要时使用各种Microsoft工具和API。我正在尝试在IronPython和C#之间做出决定。由于Python是我最喜欢的编程语言(主要因为它简洁而干净的语法),所以IronPython听起来像是理想的选择。然而,在了解了一些内容后,我还有一些疑问。
对于那些使用过IronPython的人,是否会有不清楚经典Python在哪里结束,.NET开始的情况?例如,在.NET库和Python标准库之间存在重叠功能,因此当我需要进行字符串操作或解析XML时,我不清楚应该使用哪个库。此外,我也不清楚何时应在代码中使用Python或.NET数据类型。例如,以下哪个是我在我的代码中使用的?
d = {} 

或者
d = System.Collections.Hashtable()

顺便说一下,似乎如果我像后者那样做很多事情,可能会失去一些简洁性,这也是我首选Python的原因。

另一个问题是微软的一些开发工具,如.NET CF和Xbox XNA,在IronPython中不可用。是否还有更多情况下,IronPython不能完全达到C#的效果?

2个回答

12

我使用IronPython绑定了C#,构建了一个大型应用程序。

它几乎完全无缝。从真正的"Python"感觉中缺少的唯一东西是基于C的库(必须使用.NET)和IDLE。

该语言与其他.NET语言交互非常流畅......特别是如果您嵌入解释器并通过引用绑定变量。

顺便说一下,在IronPython中声明哈希:

d = {}

请注意,它实际上是一个IronPython.Dict对象,而不是C#字典。 话虽如此,如果将其传递给.NET类,则转换通常会在不可见的情况下起作用,如果需要显式转换,有内置功能可以很好地完成。

总之,如果您有理由使用.NET,那么这是一种非常棒的语言。

只是提个建议:离开Visual Studio IronPython IDE像瘟疫一样。 我发现自动行完成会在空格和制表符之间弄乱缩进。 那真是一个难以追踪的错误插入到代码中。


3
我建议您看一下Boo[http://boo.codehaus.org/],这是一种基于.NET的语言,其语法受到Python启发,但提供了完整的.NET 3.5功能范围。IronPython非常适合使用.NET中心库,但由于语言类型处理的根本差异,它不适合用于创建这些库。由于Boo在编译时执行基于推断的类型处理(除非显式请求鸭子类型或用户给出特定类型),因此可以轻松构建可从C#(和其他语言)代码中方便使用的.NET中心库,而IronPython不适合;另外,由于Boo在运行时需要做更少的内省,因此编译出的代码更快。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接