【问题标题】:Boo vs. IronPython嘘与 IronPython
【发布时间】:2008-10-11 08:44:02
【问题描述】:

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

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

【问题讨论】:

    标签: ironpython boo


    【解决方案1】:

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

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

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

    【讨论】:

    • 历史更正,以防其他人发现这是比较 Boo 和 IronPython 的热门话题,并且不知何故错过了新闻 - IronPython 和 IronRuby 在 2010 年 8 月左右的某个模糊时间不再是微软的官方项目。Jim Hugunin 于 2010 年 10 月离开。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 我从不喜欢 Python 中明确的self...它有什么好处? (我真的很好奇)
    • 显性自我——主要是缺乏魔法和惊喜。它还可以让你做一些有点邪恶但很酷的事情,比如SomeClass.some_method(arbitrary_object_instead_of_self)
    【解决方案3】:

    我还没有使用 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 来处理一些东西。
    • 编写单元测试
    • 嵌入式脚本语言

    【讨论】:

    【解决方案4】:
    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

      • 除了 a) 它在 .NET 上运行,b) 它在 .NET 上运行。就个人而言,作为主要的 C# 用户,这本身就是一件大事。我一直在玩 Python,我喜欢它作为一种语言,但是为了使用它而重新学习一个库结构并不是我的乐趣。
      • 您也可以在 .NET 上使用 IronPython。
      【解决方案7】:

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

      【讨论】:

        猜你喜欢
        • 2015-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-26
        相关资源
        最近更新 更多