Scott Hanselman

Boo - Shiny CLI Language

September 30, '05 Comments [5] Posted in Learning .NET | Ruby | Tools
Sponsored By

BoodiagramBoosharpdevelopYou may or may not know, but Boo is a .NET Language that you can download and start working with immediately, and it's a great example of just how flexible the CLR is. I've always said that VB.NET and C# are just skins, so wear the skin that's comfortable to you. I've been watching Iron Python (.NET Beta 2 required) with great interest for a while, but just haven't gotten that into it.

Boo, on the other hand, while Pythonesque, is still C-sharpy enough as to not cause one to vurp as a rejection reaction from so many years of semicolons and curly braces. Additionally, there's something attractive about Boo's tagline: "A wrist friendly language for the CLI."

Boo is very much like Python, but then adds interesting things like duck-typing typified by Ruby. It includes some nice automatics like automatic variable declaration, automatic type inference, automatic type casting and many other things described in the Boo Manifesto.

Sure, you can download Boo, unzip it and find yourself running around the command line confused and tinkering with Boo, but sometimes it's nice to have an IDE to jump in right away. It's kind of a mood thing. I don't feel the need for a Ruby IDE, but Boo is "legit" enough that I want some sense of integration.

If you're interested in getting into Boo or just exploring, here's my recommendation on how to start in order to have the best possible experience (as of the original date of this blog post).

Starting with Boo

  • Download Boo
  • Download SharpDevelop (a lovely alternate IDE written in C#. Currently the Sept Refresh)
  • Some magic: Download the unofficial installer for the Boo Sharp Develop Add-In (Sept Refresh)
    • Note that Booish is presented as a toolbox window in SharpDevelop letting you have "immediate window" like behavior in a Boo shell.
  • Get Lutz's Reflector (If you don't have it. Put it in your PATH.)
  • Get Ayende's (Alpha) Boo Lanuage Binaries for Reflector and put them in the same folder as Reflector.
    • This adds Boo as an option in Reflector when you're disassembling things. Good for learning or re-reading your old code afresh in Boo.
    • You'll need to go View|Add-ins and add Reflector.BooLanguage.dll to the list.
    • Now you can disassemble to Boo (more or less)
      Booinreflector

Now, run SharpDevelop and checkout the examples in the Boo zip file. Enjoy a Boo Tutorial, perhaps Hello Boo! or Boo Kung-Fu, or my favorite, a comparison with C#.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web
Friday, September 30, 2005 2:33:39 PM UTC
Check out boodle, the unoffical boo .net ide.
Opensource, 100% c# code.
http://forge.novell.com/modules/xfmod/project/?boodle

its an alternative to installing sharpdevelop+addin.

-john
John Morales
Friday, September 30, 2005 3:18:43 PM UTC
Slick. Thanks!
Friday, September 30, 2005 3:18:51 PM UTC
If you're in to Ruby, you should check out Ruby .NET Bridge. Works really sweet. Not to take away from Boo though, it's pretty cool too. Honestly I didn't play with Boo a whole lot, had a hard time working with ADO.NET.

Ruby was really easy to get up and running with SQL Server access.

Just my 2 cents.
Josh Belden
Friday, September 30, 2005 5:55:25 PM UTC
Cool. I wish they hadn't given it such a cute name. It's much easier to tell you boss or clients that their system will be written in c#,python,ruby,etc. than boo.
Friday, September 30, 2005 6:21:01 PM UTC
Saying "Boo added duck typing from Ruby" isn't really accurate. Python has always has duck typing, even before it was called that. In fact, from the code snippet you gave it looks like Boo is actually adding static typing to its Python roots.
Chris Tavares
Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.