I work for a Training company and we teach both CSharp and VB.NET. I've
also be around long enough to see the issues of moving from C to C++.
So, here's what I'm hearing in the classroom and some comments based on
my experience.
Over the last several years I've had several students who already knew
VB6 taking my CSharp class. When I asked why, the most consistent answer
that I got back was, "Well, we knew enough about .NET to realize that
VB.NET is way different from VB6. We figured, rather than carrying over
our bad habbits from VB6 to VB.NET, we'd just learn a new language and
avoid the 'assumption pit'" (ok, so 'assumption pit' is my term, but
the gist of what I'm being told by my students is exactly that.)
As I mentioned, I lived through the C to C++ transition. The number one
problem we had during those days was that 80% of the programmers ended
up writing C code using C++ syntax. That is, they were not using object
oriented programming techniques.
My biggest fear surrounding VB.NET is that programmers will pick it up
and start doing all the same stuff they did in VB6. Sure, they will be
able to get the code out the door, but will they really be using the
power of the language? Add on to this the fact that in .NET 2.0, so
much of the code is written for you, and I would dare to say we will
have three classes of VB programmers.
1) Point and click programmers.
2) Point and click VB.NET procedural programmers
3) Point and click VB.NET object oriented programmers.
Of course this completely leaves out the "I got a book that shows me how
to program in VB.NET" programmers who doen't even know the wizards exist.
So, is VB.NET or CSharp better? No. But, I think you are much more
likely to write object oriented code if you use CSharp and I think you
are much more likely to get object oriented code out of your new hire if
he knows csharp.
Of course, you can alway make CSharp procedural by creating one fat
partial class with a bunch of static (shared) methods in it too.