"Award(5)", our 6th Place award goes to the C groupies choice: C-like Syntax Changes!
Now you can code a += 1 instead of a = a + 1, saving THREE WHOLE KEYSTROKES!
Programmers of the World, Rejoice! VB has been raised up to C level, and a whole new generation trying to learn VB will get a little closer to the mass confusion that confronts students of C++.
But wait! There's more!
VB.NET now features "short circuit logic" that has introduced subtle bugs into C++ code for years to save precious nano-seconds of processor time. Short circuit logic only evaluates multiple conditions in a logical statement if necessary. For example:
Dim R As Boolean
R = Function1() And Function2()
In VB6, both functions are evaluated whether they need it or not. With VB.NET, if Function1() is false, Function2() is ignored since "R" can't be True. But, what if a global variable is changed in Function2() - just by chance (C++ programmers would say, "by poor programming".) Why does my code produce the wrong answer some of the time when it's translated to VB.NET? This might be it!
For Trying harder, VB.NET will Catch a little luck and Finally get recognized for "exceptional" error handling.
VB6 had the last holdout GoTo: "On Error GoTo". Even I have to admit that the C++ style "Try-Catch-Finally" structured exception handling is a vast improvement, not just a half vast improvement.
What, you say "On Error GoTo" is still in VB.NET? Wellll ... We try not to talk about that too much.