This blog has been moved to Redwerb.com.

Thursday, May 17, 2007

VB.Net Vs. C# (part 2)

Anybody notice that .Net is very similar to our political system (USA)? It's essentially a two-party system where the parties (in this case VB.Net and C#) are substantially the same. There are some 3rd party candidates, such as J# or IronPython, but they don't have enough support to be taken seriously.

Even though the language are so similar, people get very passionate about their language of choice and argue at great length over minutia such as case sensitivity. Not that there is anything wrong with discussing the pros and cons of such language features, however, in the end, both languages are fairly equal in their ability to accomplish the task at hand and in the level of productivity they allow.

Personally I'm glad that there are multiple competing languages. As an example, look what happened with the browser wars. Netscape owned the market only to lose it to Microsoft due to some great innovations. Once MS owned the market, they stopped innovating and we were stuck with IE6 for years. Along came Firefox which started gaining enough market share to get the attention of MS and suddenly we have IE7. Both Firefox 2 and IE7 are great browsers, but imagine what would have happened if Netscape never faced any competition. Would we still be stuck with Navigator?

Although the two primary .Net languages (C# and VB.Net) are both developed by MS, they still compete (for professional pride if nothing else) and we still get to take advantage of the benefits of that competition.

The 3rd party languages are also valuable for competition and experimentation. For instance, dynamic languages seem to be getting somewhat popular again. There has been a lot of talk about Ruby lately, Microsoft even announced they were going to support a version of it for .Net called IronRuby. We can already see some of these dynamic language concepts finding their way into the mainstream languages, for instance, anonymous methods, LINQ, extension methods, lambda expressions, and anonymous types (many of these are coming in .Net 3.5 due later this year or next).

Thankfully this two-party system doesn't include national elections. People are free to pick whichever language suits them best. Of course, you might still end up with elections at the local, project team level, but if they pick a language that you really don't like, you can probably find a new job without having to leave the country :).

1 comment:

Anonymous said...

They are both the same language in my eyes. The reason I prefer C# is because of the syntax. If you plan to move to C++ the syntax won't look like greek to you.