在看了这两个项目之后,似乎两者都很相似.两者都运行在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中所做的所有偏离,例如在课堂上摆脱明确的自我.
我还没有使用过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来做一些事情.
写作单元测试
嵌入式脚本语言
像Winston说的那样,Boo由于其开放的编译器架构而具有很强的可扩展性,请看一下这些例子:
http://ayende.com/Blog/archive/2008/05/27/The-magic-of-boo--Flexible-syntax.aspx
http://www.infoq.com/articles/dsl-on-the-clr
http://ayende.com/Blog/archive/2007/12/21/Meta-Methods.aspx
http://ayende.com/Blog/archive/2007/11/24/Domain-Specific-Language-Losing-the-original-language.aspx
http://ayende.com/Blog/archive/2007/10/14/By-the-DSL-guess-what-I-am-reading.aspx
http://ayende.com/Blog/archive/2007/10/04/Redefining-If.aspx
http://ayende.com/Blog/archive/2007/09/21/Playing-with-Boos-DSLs.aspx