Targeting the CLI
Miguel de Icaza, Novell Inc.s vice president of developer platforms, and founder of the Mono project, which is an open-source development effort to build an implementation of .Net for Linux and other platforms, is big on Boo, as it targets the CLI. Mono implements the CLI. The CLI is the shared-source version of Microsofts CLR (Common Language Runtime).In addition, he said, "A nice side implementation detail of Boo is that it exposes enough of its internals that its easy to host it on an IDE [integrated development environment] and provide some IDE features that would have otherwise been too hard to write." De Oliveira said it took him about eight months of working on Boo, "before I got to a point where I felt OK to make it public. For a time I was working only part time on my day job while having the rest of day for hacking on boo. That was fun." He said he considered using the Ruby scripting language to write the first prototype of Boo, "because I was investigating the language at the time but ended up writing it in my beloved python using a Toy Parser Generator generated parser and the Python.NET bridge to read the metadata from .Net assemblies." Meanwhile, he said the second version of the prototype "was a complete rewrite in C# using ANTLR [ANother Tool for Language Recognition] for the parser and the System.Reflection.Emit .NET API which made things simpler." And, "the first public version is what I consider to be the third version of boo after a major restructure of the type system," he said. Boo supports duck typing. Duck typing is a term for the dynamic type system of some programming languages, where a variable value itself determines what it can do. It also implies that as long as an object implements a certain interface, it is interchangeable with any other object that implements the same interface. The premise is that if it walks like a duck, and talks like a duck, then it might as well be a duck. As de Oliveira noted, other Python-based languages that support .Net exist. Python for .NET is a package that gives Python programmers nearly seamless integration with the .Net Common Language Runtime and provides a powerful application scripting tool for .Net developers. Meanwhile, Microsofts IronPython is a pure managed-code implementation of the Python language. Click here to read more about IronPython. Microsoft describes IronPython as the code-name for a beta release of the Python programming language for the .Net platform. Moreover, it supports an interactive interpreter with fully dynamic compilation. It is well integrated with the rest of the framework and makes all .Net libraries easily available to Python programmers, the company said. Microsoft released beta 3 of IronPython 1.0 on Feb. 15. IronPython is covered under Microsofts Shared Source license, and Boo is covered under an MIT/BSD (Massachusetts Institute of Technology/Berkeley Software Distribution) style license. Check out eWEEK.coms for the latest open-source news, reviews and analysis.
Said de Icaza of Boo: "It is a language that borrows some ideas from scripting languages like Python and Icon, but is designed to take advantage of .NET. This makes it a good language for prototyping and testing .NET class libraries with minimal setup."