Sunday, May 24, 2009

.NET Language Evolution: Do you care?

Luca Bolognese recently announced that C# and VB.NET will now be co-evolved.  That is to say, no feature will be introduced to one without being added to the other.  I can't deny that this makes sense but as a language geek its certainly not very exciting news.  More ominously Luca hinted language evolution was going to "slow down."  Yikes.

ida_fossil_images

Apparently some of our customers are having difficulty ramping up on language features introduced alongside .NET 2.0.  Although I sympathize with these customers Microsoft made the right call when they took an aggressive approach towards language evolution, adding very significant new features inspired by functional languages.  Increasingly their customers are having to write scalable, asynchronous code to leverage multi-core processors.  These are hard problems and learning to think about them differently is essential to success.  There is a parallel here to the introduction of VB.NET and the phasing out of Visual Basic.

The news that C# and VB.NET evolution is going to taper off should not come as a surprise.  You can't keep adding features to a programming languages forever and it's especially hard when they have such a long heritage.  Under the circumstances Anders has done an admirable job.  Unfortunately there are certain functional algorithms that developers cannot, and will likely never be able to, express cleanly in either C# or VB.NET.

Enter F#.  Visual Studio 2010 Beta 1 is here and if you take the plunge you'll find that F# has finally been elevated to a first-class .NET language along-side C# and VB.NET.  We have every reason to believe F# will continue to evolve.  For starters it's just the first version.  Don Syme has also expressed interest in adding language features from Haskell as well.  The interesting question is: Does Language Evolution Matter?

There is some controversy over the importance of programming languages.  Some believe that it's primarily a developers knowledge of the existing class libraries that matters.  It's hard to deny this given the massive size of our libraries today.  However my personal experience is that in recent years learning the new language features introduced in C# has significantly improved my productivity, as well as the quality of my code.  It still fills me with such a sense of wonder that simply thinking about a problem differently can have such a profound effect.  It is for this reason that I've already made F# my primary language for play.  I hope to get the opportunity to use it at work at some point as well.  There are some very compelling reasons to use it to solve certain types of problems we face in WPF/Silverlight development. After all if not at Microsoft, then where? :-)

You can expect more Silverlight/WPF-related F# blog posts from me in the future.

10 comments:

Ryan Baker said...

Yes, definitely they matter. The most basic and powerful argument is that the APIs are dependent upon the language to be usable. If a .NET language doesn't support generics for example, all the generics APIs are useless. Even if they are supported, but the experience is very bad, they would suck too.

If the basic .NET languages didn't contain these features, then the APIs would never have been designed/updated to take advantage of them, and instead of List<int> you would either have developers using int[] and List for everything with all the performance and usability downsides, or you'd have to remember hundreds of collection classes making the API far more difficult to learn.

Anonymous said...
This comment has been removed by a blog administrator.
Anonymous said...
This comment has been removed by a blog administrator.
Anonymous said...
This comment has been removed by a blog administrator.
Vacation rentals said...
This comment has been removed by a blog administrator.
Discount stores said...
This comment has been removed by a blog administrator.
Dolphin said...
This comment has been removed by a blog administrator.
Anonymous said...
This comment has been removed by a blog administrator.
Anonymous said...
This comment has been removed by a blog administrator.
Discount Furniture said...
This comment has been removed by a blog administrator.

About Me

My photo
I'm a software developer who started programming at age 16 and never saw any reason to stop. I'm working on the Presentation Platform Controls team at Microsoft. My primary interests are functional programming, and Rich Internet Applications.