A long, long time ago I riffed a little bit on the question of “why do we have VB and C#?” The idea I was trying to struggle towards was that even though two languages may share many similar constructs and be able to express roughly the same thing, design decisions on little things can make a big difference in the experience of using the language. Now I learn from Dave Remy that this is hardly a new idea and even has a name: the Sapir-Whorf hypothesis. There’s even a discussion about how it might or might not apply to programming languages. Well, you learn something new every day…
(And, yes, I am a geek. When I first saw the phrase “the Sapir-Whorf hypothesis,” my first thought was, “what does this have to do with Star Trek?”)
This thought is right on the money.
I started .NET with a very bi-lingual approach. (Even trilingual with JScript.NET, but the lack of an IDE killed that off.)
Now I prefer VB.NET, it just fits better.
Having said that my inner talk differs from some of the keywords you’ve chosen. I think static not shared, I think this not Me.
The areas that really annoy me are where I can’t use the VB.NET syntax that I like.
Like for sprocs I’m reduced to T-SQL.
On a related vein I think the X# / C Omega ideas are very important but I inwardly shudder at the potential verbosity of the VB.NET syntax that might happen. If the syntax is too objectionable it might be enough to tip me into C#.
There is also a large area where CLR languages don’t cut it. Writing your own operators and dealling with decently sized chunks of data. (Think APL here.) These missing pieces have a huge impact on productivity. Without them productivity is hundreds of times less than it could be on some important classes of problem.
It’s things like that that make you realise the Whorf may have had a better point in programming languages than he does in spoken languages.