Sunday 25 May 2008

Goodies from MS Labs

There are a lot great ideas developing in Microsoft Labs. Inspired by several posts I read I went to check the projects up and found at least two of interest...

Design by contract is a sound practice which enforced many rules of thumb for software development e.g. coded design goals, clarified responsibilities, helped with regressions etc. Post and pre condition implementation are is great way to convey the contract definition. There are several things to worry though. As they can be:
  • badly coded e.g. utilizing code mutating the object
  • considered as too much of overhead
Therefore are often being disabled even for the debug builds. And yes - they do require the code to be compiled and executed under test to ensure correctness which might be considered costly, hence the idea of compile time assertions.
MS Labs guys have come up with Spec#, which is meant to help with exactly these aspects and guide us developers informing about the contract violations as early as possible - check this out, very interesting...

I am very much in favour of dynamic languages. I like the pure transformation definitions in functional programming world, lazy evaluation, allowing generic code reuse at the level of a function, with no or limited side effects giving you the edge when talking about scalability and performance. From programming basics we know that whatever you program, there is always a cost you incur, which is either related to memory or processing power utilisation. Hence many disputes raised like the one on InfoQ about continuous tax etc.
Regardless of this more and more functional languages and their aspects enter the popular development scene:

  • Microsoft has their F# and LINQ
  • Google very much in favour of Python
  • Rails and Ruby are very popular amongst many of the web developers
  • In my previous life we had CAL
So it is great to see DryadLINQ, which tries to simplify distributed computing by providing reliable platform for data parallel applications...

No comments: