A well-deserved smack back to some C# zealotry
Someone sent me a link to this page, which lists seven reasons why VB.NET programmers should be converted into C# programmers, and I just had to respond. It's crap like this that does nothing but obfuscate the real issues. Let me respond to each “reason“
> #1) Developers who program primarily in C# earn 26 percent more than those who develop primarily in Visual Basic .NET. (Source: 2003 Salary Survey: How Do Your Earnings Stack Up?, Visual Studio Magazine, June 2003) >
I don't doubt it. Most C# programmers are former C++ programmers who typically have more CS education and low-level understanding of computers. There are (or were, I should say) more VB programmers out there than programmers of any other language. Anyone who understands macroeconomics knows that when there are 10 VB programmers for every available VB position, and 2 C++ programmers for every C++ position, the C++ programmer is going to make more money. Those VB programmers that learn VB.NET and keep their jobs don't immediately get a raise to match the C++ developer's salary. The C++ developer who learns C# does not take a pay cut.
> 2) C# just looks more elegant because it was consistently designed. VB.Net was evolved over many years and has inconsistencies. <
This is completely a matter of personal preference and is NOT a reason to switch languages. In fact, I think C# looks ugly. To me, it's not as readable. So, I can make the same argument for VB.NET. Matters of personal preference are not arguments for switching. As for being elegant, I'll match the elegance of my code to yours any day, no matter what language you wrote it in.
> 3) C# is closer to Java which means it is easier for you to move to or from Java. This is good for your career. <
So, now “because you can convert to Java“ is a reason for converting to C# ? Planning on converting to Java anytime soon?
> 4) C# is perceived as a “real” language where VB.Net is still perceived as a “toy” language. <
I've said it before, and I'll say it again. It's because of stupid statements like this that we have this perception. Let's ask Dan Appleman's customers. Dan is a dual CS/EE major and spent many years writing components in C++. His company, Desaware, recently published a suite of all their .NET components and tools WITH SOURCE. The language they were all written in? VB.NET. Are you saying that Dan Appleman uses a toy language to make toy components that companies like NASA use for their toy software to land toy rovers on Mars? Give me a fucking break.
> 5) Microsoft does all of its internal .Net development in C#. Even MS thinks C# is the better language. <
Microsoft is made up almost completely of C++ programmers. Naturally, they are going to latch on to C# as their development language. Naturally the C# programmers at MS are going to think C# is better than VB.NET. However, the VB.NET team and a large (and still growing) population of C#/VB.NET developers at Microsoft spend every waking moment thinking of how to improve VB.NET as a language and a development environment.
I know some assembler programmers that make the best FFT matrix computational components. I use them in VB.NET. But Carl, these guys obviously think Assembler is the best language!
> 6) C# has the following features which VB.Net doesn’t have: (Operator overloading, XML code documentation, Ability to write “unsafe” code for better interoperability) <
VB.NET Whidbey has Operator overloading and XML Code Documentation. As for unsafe code, this has never been a problem for the VB.NET developers I know. And, if it is a problem, I can write a small DLL in C# and call it from VB.NET. That's like buying a new car because the cigarette lighter broke. Just fix the freaking lighter.
If anyone should be making the feature comparison argument, it is the VB.NET programmers. VB.NET has a background compiler, which compiles a statement immediately after writing it. This makes intellisense and design-time error reporting work. While your brain is busy decoding cryptic error messages, mine is moving on to a critical piece of business logic.
> 7) Microsoft is actively adding new useful features to C# including generics, iterators, anonymous methods, and partial types.<
VB.NET 2005 has generics and partial types, so this argument is lame. I often hear the rebuttal, “VB.NET developers aren't savvy enough to use features like generics anyway“ which is nothing but pompous fascist bullshit.
When are these C# zealots going to stop telling us VB.NET programmers that we suck, our language sucks, and that we don't know how to use our own language. I'm not talking about the civilized C# programmers, such as those at Microsoft, and the leaders in the .NET community. I'm talking about zealots who propagate yesterday's myths as reasons for their superiority.
Just use C# and shut up.