Boo!
Is there really a language on the .net-plattform that can increase our productivity beyond what we’re experiencing today with C#?
I know that Iron Python and Iron Ruby are sailing up as really exciting alternatives to what we are used to with their dynamic nature and neat syntax (among other things!). But there is yet another language with some unique and mind blowing features that I actually think can rise above all these languages. It’s simply called Boo. And with Boo, I really think we can make a difference when it comes to productivity.
Boo isn’t actually a new language, it’s been around for some five years now, but it has not become a mainstream language, yet. Well, now it’s positioning itself as “the” language for building DSL’s (domain specific languages). And it almost certainly is. Given also that DSL by many is thought of as “the future”, this by itself actually makes the future of Boo quite bright. That’s great! But as DSL is sailing up as the buzz of the year, there is something many actually overlook in Boo: It’s an extremely powerful language by itself, dsl or not!
What makes it so powerful is its compiler extensibility. Combined with the no-nonsense python style and syntax, this language rocks! The essence of the compiler extensibility is that Boo makes it very easy to write code that is executed in the actual compiling process. This is actually a form of code generation, except you do not generate the code, you change the generated output from the compiler. So how does this make us more productive?
To give you a little taste:
1 2 3 | [Singleton] class TheSingleton: pass |
This is how you create a Singleton-class in Boo. It can’t be simpler, and it’s way less code than in any other Singleton implementation I’ve ever seen. That’s because Boo gives us a chance to easily extend our language, which few other languages can. The Singleton attribute you see is not a normal attribute, it’s an AST attribute, which means when the compiler find it, it executes some code, which in turn adds all the functionality to the class when it is written into the assembly. Did you read my post about the declarative mindset? Boo is spot on declarative: we state what we want to do (”make a singleton”), and we simply do not have to write the actual implementation. And why should we? Every singleton is implemented just the same way. It’s no need to do it more than once. Boo makes this not only possible to handle elegantly, but also easy. I love it!
To be honest, I haven’t been this excited about technology in a long time, and I’ve decided to focus on Boo in the time to come, simply because I believe this might be the star of tomorrow.
This means I will be posting code and tutorials about it, doing research, joining the community, and hopefully making a tiny bit of difference, doing my share of pushing the world in the right direction when it comes to developing better software.
So, don’t hesitate, join the fun. It’s right here: Boo!
- Tore Vestues


Hi Tore!
I liked your Boo teaser very much. I’ve personally (as you know) got into Boo, and I liked as you do. As you said, it’s the syntax extensibility mechanism that makes this language so darn compelling. By the way, where do you Boo fit in a production setting? Would you implement the app core with Boo? Or is it other parts where it’s better suited?
I’m excited to see where C# 4 is heading. Have you had a look at MEF (Managed Extensibility Framework)? It gave me a gut feeling that C# 4 is going to be partly about COP (Composite Oriented Programming) and domain modeling (Oslo). I don’t sure where this two connect yet. But Oslo might be a good reason why people would stay away from Boo and continue to use C#, hence the built in support for DSL and domain modeling.
The reason Boo was compelling to me was because I now had the power to kind of make my own “programming language”. That’s something I would love to do, and I probably would have spent most of my time inventing language features for myself. Hehe, it would have been too much power in the hand of a software developer like me.
I look forward to more Boo postings from you. Maybe you will do the honor and present Boo at NNUG in Trondheim? It would be cool to see some real world scenario samples with Boo. Keep on the good work!
Gøran
September 7th, 2008 at 19:59 (874)Hi!
Given that the development tools for Boo (#develop and Boo Lang Studio, a plugin for Visual Studio) still cannot compete with all the support we get for C#, I think it is realistic for now to focus on special components/assemblies implemented in Boo, not the entire app, and probably not the core. I’m working with some interesting ideas on this right now. I’ll keep you posted.
Hopefully, soon we’ll have excellent tools for Boo, and then I see no reason for not implementing entire apps in Boo.
- Tore
September 7th, 2008 at 22:31 (979)