I picked up a link to this post on the Grumpy Old Programmer blog from Chris Sells’ site. Its about the role for C# in the future now that Microsoft has addressed some of the issues that developers had with MC++ with the upcoming release of C++/CLI.

“The” grumpy old programmer is really echoing the sentiments of many C++ programmers out there who have a significant investment in code and their own time, in fact I heard many ‘softies suggest that C# could be dead as a language. Personally I think they are flat out wrong, simply because language choice is more than just about syntax – let me explain.

Before working with C# I had spent time with C, C++, Java, Visual Basic and a few other languages that I would never admit to a recruiter (lest I actually have to work with it again). Each language had its strong points – C for example was incredibly easy to learn but also quite powerful. I always through C++ was a bit of a pig but it was a good step up for C programmers who needed some OO capabilities to express their designs. Java was probably the first language (after Pascal) that I really felt at home in since it was so easy to just write some code into a source file and compile it. And of course Visual Basic hit a productivity sweet spot and in Microsoft-land it was relatively easy to deploy quick and dirty applications with it provided you didn’t get into bed with DCOM.

When I came to .NET I was really after a language that would allow me to target the dominant platform (Windows), give me all the power I needed and in a familiar syntax. The first two requirements weren’t actually met by C#, it was actually the runtime that I fell in love with – but C# was quick and easy to learn and I didn’t have to unlearn things that I would have had to if I decided to make MC++ (at the time) or VB.NET my primary languages.

Now that I’ve been using it for a while and I am generally comfortable with VB.NET and even MC++ its not the language syntax that is making me stay, its actually the alignment of my priorities with the priorities of the Visual C# team. The grumpy old programmer said:

“C# acolytes will no doubt be pampered with IDE features that are denied to other developers (for no technical reason)”

The thing is that there isn’t some overloard telling the various language product teams what they can and cannot do in any given release cycle beyond the general theme of the release. What this really means is if your language of choice doesn’t get the tooling your desperately want, it means the goals of the language team aren’t aligned with yours.

Refactoring support is a classic example. The C# developer community started asking for refactoring support even before Visual Studio 2002 shipped. The Visual C# team listened and now we have Refactoring support in the C# code editing surfaces. The VB.NET community was a little late is asking for refactoring support and so the VB.NET team at Microsoft had to do some fancy footwork to get a third party refactoring tool put into the bundle.

In summary – I think C# will have a long life as a language, not because Microsoft is putting their weight behind it, but because customers want it. I wouldn’t even be surprised if based on future mutations of the language that its usefulness far exceeds that of C++ which in time will be referred to as a grumpy old programmer’s language