One of the less publicised developments in Visual Studio 2005 is that C++ becomes a fully fledged, first class .NET language, throwing off the clumsy ‘managed extensions’ and gaining a full set of designers, code verification and mixed mode (managed and embedded) capability. It is thus the only .NET language that offers true backward compatibility with legacy code bases and delivers genuine performance benefits over C# or VB.NET. What then, does this mean for the existing mainstream languages as ‘the two’ becomes ‘the three’ (no, we don’t take J# seriously. Who does?).

 

The truth is that this new development in C++ seriously undermines the justification for C# as a language. C++ programmers yet to learn C# simply don’t need to now. What’s the point? They will find the full productivity of Visual Studio 2005 right there at their fingertips supporting the language they know and love. Why should they move to something that is slower and less feature rich?

 

Prior to 2005, C# served a purpose. It allowed C++ programmers to write .NET code without ditching their pride and learning a ‘basic’ syntax. But is it still possible to justify the existence of two languages (C# and VB.NET) that are practically identical except for syntax? Now that VB.NET has been spruced up, and the new Windows Forms experience almost justifies the move from VB6 (although most VB6 desktop programmers will justify the move to .NET as a response to the removal of support for VB6), it makes more sense for VBers to stick with their favourite syntax.

 

So C# will become the natural home simply for those poor folk who have already invested time in it, and possibly for Java types moving to .NET and smart enough to avoid J#. It will be interesting to see how many ex C++ programmers slip back to C++ now that it is fully .NET enabled.

 

Of course, Microsoft will continue to promote C# as the native .NET language – they simply can’t afford to admit that they have foistered a brand new language on the programming world that is broadly feature-identical to other languages, and cannot pretend to be a replacement for C++. C# acolytes will no doubt be pampered with IDE features that are denied to other developers (for no technical reason), and the dev-celebs and style gurus will realise that it’s in their interest to keep pushing the C# fashion wagon, but the painful, balls-on-the-table truth is that C# has lost its point.