Recently Clint Rutkas and I has some fun discussing which was better between C# and Visual Basic .NET. Truth be known I’m perfectly happy using C# even though my first instinct is to use VB .NET. I do believe that VB .NET is better as a first language but that is because that is personal preference more than anything else. But no matter which language one learns first I think it is very useful to learn both. VB .NET is widely used for programming with business logic and user interface programming. C# is used for other stuff. Probably some serious stuff but definitely XNA GSE game programming. :-) One useful tool I found was this list of VB .NET and C# language constructs shown side by side. (hat tip to Go To 100 – Development with Visual Basic)
Note that there are some of the newest .NET features missing from that list but for a lot of beginners it will be very useful.
BTW Clint and my earlier posts on this subject can be found at:
I wish C# had XML literals, syntactic sugar for LINQ to XML, and the ability to combine "ref" and "this" modifiers on a method argument, as VB does.
I wish VB had statement lambdas and iterators, as C# does. And, for God's sake, kill that explicit "ByVal" already - all people to whom it may concern (i.e., VB6 converts) have either learned the new rules a long time ago, or don't care about VB.NET at all.
Other than those, I don't really see much difference nowadays. VB was a pain to use compared to C# back in 2002/2003 days, if only because it didn't have Using .. End Using - and you learn to appreciate that fast. But these days are long gone now.
By the way, the best OO language to teach as a first language is, of course, Smalltalk/Squeak :) Though I'm surprised that Microsoft doesn't make its own offering like that with a simplified subset of VB as a base language - it would seem that WPF is an ideal platform on which to build such a thing.