It ain't a dead horse in my opinion, and I enjoy kicking it once in a while. The problem with VB.NET is really that we just didn't need a new language to complement C# for the .NET Platform. Listen, I started out with Applesoft BASIC, wrote some of my best stock analysis software in Turbo Basic, and was a Microsoft Beta Tester for the first version of the BASIC Compiler. I've made a lot of money as a classic Visual Basic Programmer with VB 5.0 and then VB 6.0. I've dabbled with JAVA, C++ and Delphi / Pascal. There's no question that its easy to write code in Visual Basic. Its also easy to write VERY BAD code in it.
I see it as a marketing decision. By all indications, at the time .NET was being developed, there were 10 times more VB programmers than C++ programmers. And people made the decision that they would provide all these VB crybabies with a VB-like language with a whole bunch of helper classes that would enable them to use these crutches to "migrate" to the .NET platform. They gave them a migration wizard which by almost anyone's account is - well, a joke. And they would even allow them to write code with Option Strict and Option Explicit turned off - BY DEFAULT! And that's where I draw the line.
Early on, at PDC 2000 in Orlando, when I brought home my 6 CD set of .NET Beta 1.0 I made a decision (as did many other VB developers)- I realized that no matter how "similar" VB.NET seemed to Visual Basic, it was not the same language. It was a completely different language. And then I found out that all 1 million or so lines of code in the ASP.NET runtime were written by Microsoft people in C#.
Have you ever seen something like this?:
Public Function TestMeOut(ByVal truefalse As Boolean) As Boolean
If truefalse Then
-- Well, unfortunately, I have. Would you trust this code being called from C#? I hope not! Unfortunately as well, the above and a whole bunch of other similar crap will compile without a whimper with the default settings!
So, I started studying. And I decided that less words to type is better, and that curly braces and semicolons aren't so bad. And I'm glad.
Every time we get a forum post at eggheadcafe.com from some VB developer who doesn't type their variables or who doesn't enclose their code in try - catch blocks, it just reinforces my decision. There are so many crutches built into VB.NET that it's downright sad. Like, how many VB.NET programmers use DirectCast instead of CType? Have they even heard of it?
They've done a real disservice to VB developers, IMHO, by letting them "think" they can become professional OOP - oriented .NET Developers and continue to perpetuate the horrible coding habits they developed with classic VB and get away with it in .NET.
Richard Grimes, a gentleman who I respect and admire, says this in his parting DDJ piece:
"Some people regard VB.NET as wonderful. I really don't see the reason for the language. There are a few features that other languages do not have (exception filters and renaming interface methods are two), but these are not good enough reasons for a new language. There is the argument that VB developers would be more comfortable with VB.NET, but as I've said, VB.NET is not VB, and since a developer would have to learn principles of OOP and .NET principles like threading, exceptions, and delegates, the developer may as well learn a new language. C# is the natural language to use for .NET and there was no need for VB.NET. "
VB Fred would have been better. At least the name implies there's no relation to .NET from the dead language.
Scott Hanselman, who seems to have a penchant for the succint, put it this way: