26

在查看了这两个项目中的每一个之后,似乎两者都非常相似。两者都在 CLI 之上运行,都具有 Python 风格的语法,都使用 .NET 而不是标准的 Python 库。

那么,它们之间有什么区别和各自的优势呢?

4

7 回答 7

25

我看到的主要区别是 Boo 是静态类型的,这意味着变量的类型是在第一次赋值时推断出来的,并且从那里固定 - 而 IronPython 具有普通 Python 代码的“真实”动态行为。

IronPython现在由 Microsoft 正式维护,并针对 2.0 版中的新动态语言运行时。我怀疑因为它是静态类型的,所以 Boo 可能会更快。不过,我对此并没有太多“真实”经验……

IronPython 还重新实现了许多 python 标准库,因此您可以在 IronPython(例如Django)上运行许多 python 软件而无需更改。

于 2008-10-11T09:30:13.073 回答
14

Boo 是静态类型的,但有可选的鸭子类型(根据我的经验,效果相当好)。Boo 还专门设计为“手腕友好” - 换句话说,以尽量减少使用 Shift 键组合的需要。它在SharpDevelop中有很好的 IDE 支持。

很明显,Boo 从 Python 中汲取了很多灵感,但也旨在充分利用 .NET 功能。

在性能方面,Boo 感觉比 IronPython 稍微快一些,尤其是缺少 IronPython 明显的启动滞后。

Boo 仍然是一门不成熟的语言,缺乏 Python 社区。我个人对在生产中使用它有点谨慎。此外,我不同意它与 Python 的所有不同之处,例如在类中去掉显式的 self 。

于 2008-10-13T14:04:13.020 回答
11

我还没有使用 IronPython,但这是我对 Boo 的了解...

  • Boo 受到 Python 的启发,在语法上有许多相似之处。有关差异,请参阅http://boo.codehaus.org/Gotchas+for+Python+Users
  • Boo 是专门为 CLR 编写的
  • 它是静态类型的,有几个好处
    • 它可以编译成 DLL 并被 VB 和 C# 项目引用
    • 您可以在 IDE 中完成代码
  • 语言本身是否可扩展。您可以编写“语法宏”并实际向语言中添加新元素。这使它成为编写 DSL 的理想选择。
  • 它还不是 1.0,而 IronPython 是。该语言仍在经历成长的痛苦,但仍然非常有用。

我已经将 Boo 用于以下用途:

  • 编写计划作业的脚本。它是 VBScript、BAT 文件的绝佳替代品,尤其是在访问 .NET API 时。从那以后,我主要切换到 Powershell,但它是特定于操作系统的,并且语法更重,所以我仍然使用 Boo 来处理一些东西。
  • 编写单元测试
  • 嵌入式脚本语言
于 2008-10-24T03:27:55.013 回答
4

我用 Boo 和 IronPython 编写了应用程序。对我来说 IronPython 是更强大的选择,而且我在 CPython 端口中编写的大部分内容都没有更改。如果针对 .Net Framework,所有最近的项目都是纯 IronPython。

自从 Jim “叛逃”到 Microsoft 后,IronPython 已被提升为顶级语言。甚至还有 Visual Studio。

于 2008-10-13T22:23:22.357 回答
1

我同意 VolkA 的观点。能够运行 Django 非常重要。这是一个非常了不起的框架,Boo 很难重做它。今天,它更多是关于语言提供的框架的问题,而不是它提供的结构。并且 Boo 在它支持的结构上并没有提供比 Python 更多的改进。

于 2008-10-11T12:47:07.623 回答
0

在我看来,主要区别在于IronPython是一种成熟语言的实现——而Boo更年轻,知名度更低。

于 2008-10-11T10:39:10.517 回答