Boo is a .NET static-typed language with a python scripting feel.  It’s neat because you have less to type (and maintain) and get much of the same functionality.  SharpDevelop also has lots of built-in support for it, which made trying it out easy.  I decided to try it out when writing a program that would do all the mind-work for me in playing the Clue board game

Here I summarize my experience in bullet form.

Pros:

  1. Easy to pick up and learn as you go (mostly).
  2. Type inference means less code.
  3. Very responsive user base on Google Group.
  4. Great example of good prototyping language that can grow into large projects.
  5. Decent IL is emitted by the compiler.

Cons:

  1. No support for member shadowing (child class redefines a parent’s member as a different type or attributes)
  2. I miss some of the compile-time errors I get from common mistakes that the C# compiler gives me.
  3. The compile-time errors the Boo compiler does give are difficult to read to figure out what the root cause was.
  4. Arrays are confusing (for me, but I’m not a python developer).
  5. The debugger in SharpDevelop (at least for Boo projects, I don’t know if it’s for all languages) does not support watches, or setting the instruction pointer, or attaching to running processes.  It’s amazing what the open-source community has done so far, but a lot of work remains to be done.

Summary

Try Boo out and give feedback.  I have to switch to another language for now to get my project finished, but it’s a good start for the language.