Without a doubt, Windows is the star of PDC 2008. Be it Azure or 7, almost all the buzz around here is about Windows. Windows for the cloud, Windows for the client, Windows for the mobile. But as always, in the shadow of the giant, there are other things, some of them having the potential of a larger impact than the giant itself. You might have guessed, I'm talking about "Oslo".
I've already mentioned some of the fantastic things that we're going to see in C# (both in the new, 4.0 version, as well as beyond that). Before going on with this post let me just say that I am a huge fan of C# (I do all my coding using it) and I think it's one of the best programming languages ever. Still, I do not see myself in 10 years time writing too much C# code anymore (and that's not because I'll be too old for that :) ). The reason is simple: as powerful as C# is, I am finding myself many times doing the same thing over and over, and, despite having the patterns in my mind, I do not have the proper means to apply them while coding. Which leads to the immediate question: is C# too general for my application's specific domain? Well ... in many cases, it is. It's powerful, flexible, efficient, but ... too general.
Enters "Oslo", Microsoft's new platform for model-driven applications. It's primary goal is to bridge the gap between the "low" level of abstraction found in the programming language and the higher level of abstraction of the specific domain we are trying to support with the piece of software that we write. As a matter of fact, abstracting things is not at all new in our world. Think about IDL for COM, metadata attributes for .NET, or even XAML. If you think about them, all are attempts to increase the level of abstraction, in order to improve productivity. In other words, they were attempts to let people write down stuff in a way that is much closer to the domain of the problem they were working on than the programming language itself. Some call this modeling :D But more than that, the stuff that was written down, was also accessible to the different runtimes who where taking actions based on that content.
With "Oslo", Microsoft proposes a structured, coherent, and tool-based approach to modeling. I've witnessed some amazing demos here @ PDC 2008, where Oslo was used to create a high level, domain specific language (for implementing a certain class of WCF services for example), which in turn was used to dramatically increase the productivity of the ones producing solutions for that particular domain. Think about writing a WCF service, in your own words! If that sounds SciFi, think again ... and take a look at "Oslo" ;)
Obviously, my title is a bit far fetched, in a sense that we're not there yet ... I mean "Oslo" doesn't promise (yet) natural language modeling. But it sure opens a wide window towards to world of Domain Specific Languages (DSLs). If you're not sure about the potential value of DSLs, think about some past experiences. For example, what did VB(3,4,6) to programming Windows applications. Some say it de-professionalized the world of programming, I say it opened huge opportunities. All of the sudden, developing Windows Applications was not reserved only for those mortals capable of working with WndProc.
Having said that, I'm not saying "Oslo" is going to simplify software development. But it sure will, at least, support a huge boost in productivity...
Should any of the above make some sense to you, start by taking a look at http://msdn.microsoft.com/oslo.