C# 2.0 has barely been with us and already, the 3.0 spec is shaping up. While the change from 1.0 to 2.0 was dramatic in the way that it simplified what used to be quite laborious tasks in C#, the change to 3.0 is perhaps too bold of a jump, bringing the C# language close to the territory usually reserved to academia and research divisions.
Daniel Cazzulino touches upon some of the interesting "side effects" of this change in the language while Abhinaba believes that while the new language features are certainly welcome and useful to a set of users, for most, it will only add to the "surface area" of the C# language and frustrate/confuse users.
C# has originally developed from C++ /Java and is (was :^) ) a strongly
typed object-oriented language. The new features being introduced like
closure, continuation (yes, yes very limited continuation) in C#2.0 and
now type inference, lambda expressions are de-generating the language.
Even though there are people go gaga about continuation and lexical closures these
are fundamentally functional language features and should be left to
that. Introduction of bits and pieces of functional language features
are not going to add value to C# and at the same time the surface area
of C# is growing beyond what most developer can grasp.
I tend to agree with this view. Having spent most of my career as a consultant and dealing with many developers who did not come from a math, engineering, or computer science background, I can say with 50.01% accuracy that 87.96% of .Net developers will a) be confused and befuddled by the new language features, b) never use the features and never even know that they are there, or c) change professions 😛
Okay, maybe option c is more of a pipe dream. But regardless, the surface area of C# is becoming quite large and perhaps even a bit, how shall I put it, unwieldy? Whereas developers used to have disagreements over implementation and architecture details, will we now see disagreement over language feature usage and constructs? One thing is for sure, I'm certain that a lot of developers will be left in the dust.
Most of the mid-career Microsoft developers I've met got their start doing VB6 and VBScript with ASP. In the transition to .Net, I've discovered that many have not really transitioned so much as adapted; kind of like they're still writing VBScript...except it's called VB.Net now. This isn't the territory of VB developers only, however; I've met many C# developers who just have no clue and continue to do silly things like concatenating huge (I mean HUGE) strings.
Well, in any case, enough ranting I guess. If you're interested, take a look at the language specs over at MSDN (already got 'em printed and stapled).