16

我们公司已经准备好将一切都转移到 Python 而不是 C#,我们是一家咨询公司,我们通常用 C# 编写小项目,我们不做大项目,我们的工作更多地基于复杂的数学模型而不是复杂的软件结构。所以我们相信 IronPython 对我们来说是一个很好的平台,因为它在 Windows 上提供了标准的 GUI 功能并可以访问所有 .Net 库。

我知道 Ironpython 工作室并不完整,事实上我很难添加我的参考资料,但我想知道是否有人可以为我们列出这次迁移的一些优缺点,考虑到 Python 代码更容易被我们的客户阅读,并且我们通常提供概念验证原型而不是功能齐全的代码,我们的客户通常会自行实施应用程序

4

3 回答 3

18

我的公司 Resolver Systems 开发了可能是迄今为止用 IronPython 编写的最大的应用程序。(它叫做 Resolver One,它是一个 Pythonic 电子表格)。我们还托管 Ironclad 项目(在 IronPython 下运行 CPython 扩展)并且进展顺利(我们计划很快发布 Resolver One 和 numpy 的测试版)。

我们选择 IronPython 的原因是 .NET 集成——我们的客户希望在 Windows 上 100% 集成,而目前最简单的方法是 .NET。

我们在 Visual Studio 中设计 GUI(无行为),将其编译为 DLL 并从 IronPython 子类化它以添加行为。

我们发现 IronPython 在某些情况下更快,而在其他情况下更慢。然而,IronPython 团队反应迅速,每当我们报告回归时,他们都会修复它,并且通常会将其反向移植到错误修复版本。如果您担心性能,您总是可以在 C# 中实现一个关键部分(我们还没有这样做)。

如果您有使用 C# 的经验,那么 IronPython 对您来说很自然,并且比 C# 更容易,尤其是对于原型。

关于 IronPython studio,我们不使用它。我们每个人都有自己选择的编辑器(TextPad、Emacs、Vim 和 Wing),一切正常。

于 2009-01-23T09:29:31.183 回答
9

你想从 C# 切换到 python 的原因有很多,我最近自己做了这个。经过大量调查,以下是我坚持使用 CPython 的原因:

  • 性能:那里有一些文章指出,ironpython 总是有较慢的情况,所以如果性能是一个问题
  • 以原文为例:许多人认为新功能等总是首先集成在 CPython 中,您必须等到它们在 Ironpython 中实现。
  • 许可:有人认为这是一颗定时炸弹:没有人知道 Ironpython/mono 的许可在不久的将来会发生怎样的变化
  • 扩展:python 的优势之一是 CPython 可以使用的数千个扩展,正如您提到的数学问题:numpy 可能是适合您的快速包,它可能无法在 IronPython 下按预期运行(尽管Ironclad
  • 尤其是在 Windows 下,你有一个带有 wxPython 的原生 GUI 工具包,它在其他几个平台下看起来也很棒,还有 pyQT 和许多其他工具包。他们有像 wxGlade 这样的优秀设计师,但这里的 VisualStudio C# Designer 更易于使用。
  • 平台独立性(如果这是一个问题):CPython 被移植到很多平台,而 Ironpython 只能在主要平台上使用(最近读到一个开发人员很伤心,他无法让 mono 在他的 AIX 下运行)

Ironpython 是一个伟大的工作,如果我有一个特殊的 .NET 库我必须使用,IronPython 可能是选择,但对于通用问题,人们似乎建议使用原始 CPython,除非 Guido 改变主意。

于 2009-01-23T09:06:35.253 回答
7

你描述事物的方式,听起来你的公司正在为了 Python 而简单地切换到 Python。您想使用 Python 有什么特定的原因吗?是否需要更动态的语言?函数式编程对你有帮助吗?如果您在 C# 中有一套非常好的工作工具,为什么还要费心切换呢?

如果您准备切换,您可能需要考虑从标准 Python 开始,除非您特别依赖于 .NET 库。您可以使用许多不同的框架(如 wxPython、pyQt 等)编写跨平台 GUI。也就是说,Visual Studio 拥有比几乎任何用于创建 Python 窗口布局的工具都要出色的 GUI 设计器。

于 2009-01-23T02:59:23.593 回答