在查看了这两个项目中的每一个之后,似乎两者都非常相似。两者都在 CLI 之上运行,都具有 Python 风格的语法,都使用 .NET 而不是标准的 Python 库。
那么,它们之间有什么区别和各自的优势呢?
在查看了这两个项目中的每一个之后,似乎两者都非常相似。两者都在 CLI 之上运行,都具有 Python 风格的语法,都使用 .NET 而不是标准的 Python 库。
那么,它们之间有什么区别和各自的优势呢?
我看到的主要区别是 Boo 是静态类型的,这意味着变量的类型是在第一次赋值时推断出来的,并且从那里固定 - 而 IronPython 具有普通 Python 代码的“真实”动态行为。
IronPython现在由 Microsoft 正式维护,并针对 2.0 版中的新动态语言运行时。我怀疑因为它是静态类型的,所以 Boo 可能会更快。不过,我对此并没有太多“真实”经验……
IronPython 还重新实现了许多 python 标准库,因此您可以在 IronPython(例如Django)上运行许多 python 软件而无需更改。
Boo 是静态类型的,但有可选的鸭子类型(根据我的经验,效果相当好)。Boo 还专门设计为“手腕友好” - 换句话说,以尽量减少使用 Shift 键组合的需要。它在SharpDevelop中有很好的 IDE 支持。
很明显,Boo 从 Python 中汲取了很多灵感,但也旨在充分利用 .NET 功能。
在性能方面,Boo 感觉比 IronPython 稍微快一些,尤其是缺少 IronPython 明显的启动滞后。
Boo 仍然是一门不成熟的语言,缺乏 Python 社区。我个人对在生产中使用它有点谨慎。此外,我不同意它与 Python 的所有不同之处,例如在类中去掉显式的 self 。
我还没有使用 IronPython,但这是我对 Boo 的了解...
我已经将 Boo 用于以下用途:
正如 Winston 所说,Boo 由于其开放的编译器架构而具有很强的可扩展性,看看这些例子:
我用 Boo 和 IronPython 编写了应用程序。对我来说 IronPython 是更强大的选择,而且我在 CPython 端口中编写的大部分内容都没有更改。如果针对 .Net Framework,所有最近的项目都是纯 IronPython。
自从 Jim “叛逃”到 Microsoft 后,IronPython 已被提升为顶级语言。甚至还有 Visual Studio。
我同意 VolkA 的观点。能够运行 Django 非常重要。这是一个非常了不起的框架,Boo 很难重做它。今天,它更多是关于语言提供的框架的问题,而不是它提供的结构。并且 Boo 在它支持的结构上并没有提供比 Python 更多的改进。
在我看来,主要区别在于IronPython是一种成熟语言的实现——而Boo更年轻,知名度更低。