【发布时间】:2008-10-11 08:44:02
【问题描述】:
在查看了这两个项目之后,似乎两者都非常相似。两者都在 CLI 之上运行,都具有 Python 风格的语法,都使用 .NET 而不是标准的 Python 库。
那么,它们之间有什么区别以及各自的优势呢?
【问题讨论】:
标签: ironpython boo
在查看了这两个项目之后,似乎两者都非常相似。两者都在 CLI 之上运行,都具有 Python 风格的语法,都使用 .NET 而不是标准的 Python 库。
那么,它们之间有什么区别以及各自的优势呢?
【问题讨论】:
标签: ironpython boo
在我看来,主要区别在于 Boo 是静态类型的,这意味着变量的类型在其第一次赋值时推断并从那里固定 - 而 IronPython 具有普通 Python 代码的“真实”动态行为。
IronPython 现在由 Microsoft 正式维护,针对 2.0 版中的新动态语言运行时。我怀疑因为它是静态类型的,所以 Boo 可能会更快。不过,我对此并没有太多“真实”经验……
IronPython 还重新实现了许多 Python 标准库,因此您可以在 IronPython 上运行许多 Python 软件而无需更改(例如 Django)。
【讨论】:
Boo 是静态类型的,但有可选的鸭子类型(根据我的经验,效果相当好)。 Boo 还专门设计为“手腕友好” - 换句话说,最大限度地减少使用 Shift 键组合的需要。它在SharpDevelop 中具有良好的 IDE 支持。
很明显,Boo 从 Python 中汲取了很多灵感,但也旨在充分利用 .NET 功能。
在性能方面,Boo 感觉比 IronPython 稍微快一些,尤其缺乏 IronPython 明显的启动滞后。
Boo 仍然是一门不成熟的语言,缺乏 Python 社区。我个人对在生产中使用它有点谨慎。另外,我不同意它与 Python 的所有不同之处,例如在类中去掉显式的 self。
【讨论】:
self...它有什么好处? (我真的很好奇)
SomeClass.some_method(arbitrary_object_instead_of_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 更年轻且鲜为人知。
【讨论】: