那么,它们之间有哪些区别和各自的优势呢?
我认为两者的主要区别在于,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
...它有什么优点吗?(我真的很好奇) - mpenSomeClass.some_method(arbitrary_object_instead_of_self)
。 - Ryan Ginstrom我还没有使用过IronPython,但是关于Boo,这是我所知道的...
我曾经使用Boo进行以下事情:
正如温斯顿所说,由于其开放的编译器架构,Boo非常具有可扩展性,看看这些例子:
我曾经使用过Boo和IronPython编写应用程序。对我来说,IronPython是更加稳健的选择,我在CPython中编写的许多内容都可以直接移植而不需要进行修改。如果针对.Net Framework,所有最近的项目都是纯IronPython。
自从Jim“叛变”到Microsoft以后,IronPython已经成为一种顶级语言。甚至还有专门为其开发的Visual Studio。
我同意VolkA的观点。能够运行Django是很重要的。它是一个如此惊人的框架,Boo将很难重新制作它。今天,更多的是关于语言提供的框架,而不是它提供的结构。而Boo在支持的结构方面并没有比Python提供更多的改进。