C# vs. VB.NET: the showdown
Last night I attended an excellent session hosted by the Dutch .NET usergroup about something that I suspect every .NET-developer has wondered about at some point: what’s the better language, VB or C#? To defend both sides were two MVPs, Frans Bouma (C#) and Maurice de Beijer (VB).
What I liked about the session was that they were not afraid to touch on all kinds of issues such as performance, quality of typical developers in both languages and supported tools. Most focus however was on syntax, which is the main issue when comparing programming languages ofcourse (especially when they both run in the same runtime environment and use the same class library). The final conclusion being that the quality of a final product is more closely related to the quality of the developer and the choices he has made while developing the software than to what language or tool was used to construct it.
What surprised me however in responses from attendees is that a lot of people tend to attribute small and optional things in a language to the entire tool: for instance, the fact that C# supports unsafe code seems to be a bad thing to some people, in the same way that support for On Error Resume Next is a bad thing to others. Now, I’m not saying that I recommend everyone to go out and write his own unsafe string comparison methods in the same way that I don’t advocate ignoring errors as they occur. But in the end, these things are optional, so they can only ever be an advantage (if you don’t use them it’s the same as if they were never supported and it’s easy to set up a policy to forbid their usage).
Another thing that struck me is that a lot of developers seem to think, expect or perhaps hope that VB and C# will converge in the future instead of diverge. The latter is however clearly the case, this has been set in a bit with the 2.0-release of .NET and reading the VB9 overview and C# 3.0 spec (.DOC file) will only convince you that they are clearly headed in different directions.
Personally I think this is a good thing, in fact, by making VB7 and C# 1.0 so similar Microsoft has missed an opportunity in making a point about using the right tool for the right job: Sun apparantly believes that it’s possible to make a single tool for every job, while the concept of a Common Language Runtime that comes with compilers for several languages can help developers in specific areas gain incredible advantages by supporting languages that cater to their needs specifically.
So all in all, a great Job by Frans and Maurice!
Ik heb op mijn blog nog een samevatting gezet :-)