代码改变世界

IronPython的伙伴——Boo

2004-09-12 21:59  FantasySoft  阅读(...)  评论(...编辑  收藏

        带着IronPython和Python之间兼容性的问题,我拜读了Jim的blog,也查阅了很多资料。结果是没有找到答案,倒是有一个意外惊喜,因为发现了在.NET上IronPython并不孤单,除了先前就曾关注过的Python. For NET之外,现在又多了一个更Cool的伙伴——Boo。Boo这个项目来头也不小,她是开源社区CodeHaus在Language方面的两个项目之一,而另外一个则是Groovy——现在很Hot的基于JVM的动态语言。而Boo项目的负责人Rodrigo Barreto de Oliveira更是一个新技术倡导者,Bamboo Prevalence项目就是他的得意之作。虽然Bamboo.Prevalence我是第一次耳闻,但是对这个项目的介绍却让我似曾相识:Bamboo Prevalence is an opensource .NET implementation of the Prevayler concept。Prevaler?不就是号称从Oracle数据库中查询数据要比JDBC快9000倍的那个Prevaler吗?Prevaler的概念就是将数据库中所有的数据以对象的形式都缓存到了内存中,以减少数据库中的数据在每次查询中都要被转换成对象的消耗。So Cool! Boo就是由这样的社区和这样的项目负责人发起的项目,我们完全有理由相信Boo也会是很Cool!
        果然不出所料,Boo在很多方面已经走到了IronPython的前面,当然Boo本身和IronPython有着很多的不同。从
Boo Manifesto中,我们可以看到Boo诞生的原因。正如Rodrigo所说的,他尝试了单独使用Python或者单独使用C#去编写自己的应用程序,但是两个都不能让他满意,于是Boo就诞生了。在这篇manifesto中,我们可以不仅可以看到与Boo相关的信息,还能从字里行间看出这位天才的幽默和激情:
         Nothing more tiresome than writing the same type name over and over just to make the compiler happy.

         I wanted a compiler system that could be taught new things, taught how to automagically generate common code for me. I should be able to do that, right? We all should. We are programmers! We're entitled to that ... Well, more than anything else, I needed some old-fashioned quality sleep and time to put my head straight.

        Boo本身有很多的优点:使用Boo语言编写的程序可以被编译成为.dll或者.exe文件;Boo本身是静态类型的语言,编译期错误检查的能力得到了很大的增强,但是你可以选择声明或者不声明
其类型,因为她支持类型自动声明和类型推断;Boo还提供了一个很不错的编辑器Boo Explorer(可惜的是只提供了源代码,需要自己去编译,但是我弄了好久都没有编译成功);在Boo的下载包中还包含了很多的例子,甚至有一个完整的blog程序。整体感觉Boo已经做了很多的工作,无论是文档,还是范例。
        最后,我再次在boo的interpreter下,键入了我昨天在IronPython的Interpreter下面不能通过的三行代码,不过要做一点的修改,print "Hello,World!"改为print("Hello,World!")。接着,Hello,World!如我所愿地出现在了控制台窗口。是啊,又一种很cool的语言在向我们打招呼了。