I am excited about two things in Microsoft PDC 2008, no it’s not Windows Azure or Windows 7. The cloud infrastructure is nice but cloud is just an infrastructure architecture problem – and frankly I trust Amazon to get this right than Microsoft.  I am more interested in technologies that helps making software construction faster and more reliable, either in the way of libraries that bring useful capabilities or new languages that implement concepts that makes programming more fun and productive.

The Oslo programming ecosystem (MGrammar, MSchema and MGraph) and C# 4.0 Dynamic are the two newest development that really make a difference. C# 4.0 dynamic system reduce certain stupid patterns that we have to deal with as C# programmer in dealing with multiple domain problems (I will address this is another post). C# 4.0 dynamic however represents something that is familiar for people that are already dabbling in DLR based languages such as IronPython and IronRuby. M is something else altogether.

Oslo technology is defined as a tool, a language and a repository. In this post I’m talking about the language part of Oslo, because that’s the part that I think makes the biggest difference. Yes, the “quadrant” visual tool allow you to use pictures, etc – but really, if you want to get something done in programming, a paragraph of text is worth a thousand pictures.

Essentially M  enables people to create their own languages in the form of Domain Specific Languages (from simple to highly sophisticated one) in much straightforward manner. Yes, you can create your own DSL already right now in various  multitude of ways (just google for DSL toolkits – XText for example) in variety of different languages and platform. Ruby is well known as DSL friendly language and so is Boo; they make creating Internal DSL more pleasant due to certain characteristic in their language (such as no requiring bracket for method passing or the support for meta programming). For external DSL, you have to resort to the nitty gritty work of creating your own lexer and parsers using the excellent ANTLR and then execute the resulting AST to your runtime system.

M takes care of this lexer and parsers part in an elegant way by create a specific language dedicated for it which they call MGrammar. They also provide an editor called Intellipad  so you define your DSL in an interactive way. With M, you define your language in M Grammar, pass a DSL source file and it will return you an AST graph that you can do whatever you please with it. It’s three steps DSL. No more messing around with code generated lexers and parsers for most scenarios and that’s something to celebrate about.

Check this simple tutorial on how to define a DSL for todo  list in MGrammar.

Watch Don Box’s presentation about MSchema in PDC. This is a must watch presentation to get a  grasp on the concept of MSchema in building model.

Join MSDSLs if you are interested to learn more about M.