8

我目前的大部分编程项目(主要是小程序和原型的快速开发)都使用 Python。我想花时间学习一门语言,只要有机会,我就可以灵活地使用各种 Microsoft 工具和 API。我正在尝试在 IronPython 和 C# 之间做出决定。由于 Python 是我最喜欢的编程语言(主要是因为它简洁明了的语法),IronPython 听起来像是理想的选择。然而,在阅读了一点之后,我有几个问题。

对于那些使用过 IronPython 的人来说,是否曾经不清楚经典 Python 在哪里结束而 .NET 从哪里开始?例如,.NET 库和 Python 标准库之间的功能似乎有很大的重叠,所以当我需要进行字符串操作或解析 XML 时,我不清楚应该使用哪个库。另外,我不清楚何时应该在我的代码中使用 Python 和 .NET 数据类型。例如,我将在我的代码中使用以下哪一项?

d = {} 

或者

d = System.Collections.Hashtable()

(顺便说一句,如果我做很多像后者这样的事情,我可能会失去一些简洁性,这就是为什么我首先偏爱 Python。)

另一个问题是 Microsoft 的一些开发工具,例如 .NET CF 和 Xbox XNA,在 IronPython 中不可用。是否还有更多 IronPython 无法让我充分利用 C# 的情况?

4

2 回答 2

11

我在 IronPython 中构建了一个与 C# 绑定的大型应用程序。

它几乎是完全无缝的。IronPython 中真正“python”感觉中唯一缺少的是基于 C 的库(必须使用 .NET)和 IDLE。

该语言像梦一样与其他 .NET 语言交互......特别是如果您嵌入解释器并通过引用绑定变量。

顺便说一句,在 IronPython 中声明了一个哈希:

d = {}

请注意,它实际上是 IronPython.Dict 对象,而不是 C# 字典。也就是说,如果您将转换传递给 .NET 类,转换通常是不可见的,如果您需要显式转换,则有内置函数可以很好地完成转换。

总而言之,如果你有理由的话,这是一种与 .NET 一起使用的很棒的语言。

只是一个建议:避免像瘟疫一样使用 Visual Studio IronPython IDE。我发现自动行完成在空格和制表符之间的缩进上搞砸了。现在 - 那 - 是插入到代码中的一个难以追踪的错误。

于 2009-01-31T01:15:04.487 回答
3

我建议看一下Boo [ http://boo.codehaus.org/],这是一种基于 .NET 的语言,其语法受 Python 启发,但它提供了 .NET 3.5 的全部功能。

IronPython is great for using .NET-centric libraries -- but it isn't well-suited to creating them due to underlying differences in how the languages do typing. As Boo does inference-based typing at compile time except where duck typing is explicitly requested (or a specific type is given by the user), it lets you build .NET-centric libraries easily usable from C# (and other languages') code, which IronPython isn't suitable for; also, as it has to do less introspection at runtime, Boo compiles to faster code.

于 2009-01-31T02:17:45.763 回答