Below I've just copied my answer to another thread:
I develop in both VB and C# on a regular basis, most of my money-making has involved C#. Personally, I prefer VB for most (but not all … lambdas!) work. I can't really name any hard advantages apart from those outlined by Jon. Actually, Herfried has collected a few on his web site (in German!) but they are rather technical.
The thing that really bugs me about all C-related language is the stupid syntax. This is purely cultural but as someone who does most of his professional work in C++, and being quite proficient at it, I still absolutely hate the syntax. And not just C++' cute little quirks. No, the whole package. Why braces? Why semicolons (perhaps the stupidest decision in all of programming history)? Why the stupid C-style cast syntax? Why is there no keyword for variable declaration (actually, this is the stupidest decision)?
There are just so many things that really make me sad and angry. VB is no saint, its language has huge drawbacks. But nothing compared to what I've said above.
I realize that most of these statements need justification but I put forward that this is only because we have become so used to them. Additionally, here isn't the right place. Suffice to say that C#'s syntax, while being its main advantage over VB, is also its main disadvantage.
I don't prefer VB because of the My
namespace, I don't prefer it because of XML literals, I don't prefer it because of weak typing, I don't prefer it because of optional parameters, or because of the much better switch
statement. No, I prefer it because of the syntax.
That said, I've got to admit that VB becomes more and more encumbered by its syntax. The latest hype seems to be Linq queries parametrized with lambda functions and I readily admit that this makes many things simpler. Unfortunately, VB's syntax for lambdas is simply too cumbersome to compete with C#. Just consider how bloated a call to Parallel.For
looks like in VB – compared to C#, where it looks natural. IMHO, the VB design team has gone in the wrong direction here, favouring conservative consistency over readability.
To answer your subjective accusation:
To me, Visual Basic seems clumsy, ugly, error-prone, and difficult to read.
You're certainly entitled to think so but as Marc has said below, you'll find it difficult to argue this objectively. I definitely can cite a number of C syntax elements which are objectively more error-prone than anything existing in VB. In fact, VB syntax has been developed to prevent such sitations explicitly.
“Clumsy, ugly … and difficult to read” are all qualifiers that can be tagged on to nearly all languages that you're unfamiliar with. Simply put: the uglyness is a direct consequence of your unfamiliarity to the language.
Knowing a language well means recognizing patterns in code. Well-written code will by virtuel of practice appear elegant, while bad (slow, error-prone) code will appear ugly. It's as simple as that.
One last remark: The articles cited by you contain several inaccuracies and outdated information. As sole justification for a highly subjective and emotional discussion they aren't very well suited.