VB.NET and C# - Duplication of Effort?
Patrick Hynds recently used a military analogy to contrast C# and VB.NET and their growing and increasingly obvious similarities. (I've always thought that the differences were just skins over IL myself.) Rocky Lhotka extended the analogy brilliantly:
The problem we have today, in my opinion, is that C# is a flying tank and VB is a heavily armored attack plane.
Microsoft did wonderful things when creating .NET and these two languages - simply wonderful. But the end result is that no sane person would purchase either a tank or an A-10 [ed: a plane] now, because both features can be had in a single product. Well, actually two products that are virtually identical except for their heritage.
Of course both hold baggage from history. For instance, C# clings to the obsolete concept of case-sensitivity, and VB clings to the equally obsolete idea of line continuation characters.
Unfortunately the idea of creating a whole new language where the focus is on the compiler doing more work and the programmer doing less just isn't in the cards. It doesn't seem like there's any meaningful language innovation going on, nor has there been for many, many years... [Rockford Lhotka]
Personally at this point, I don't see a reason for us to have two languages other than we always have. It started with C++/MFC versus VB1/2/3 in the early 90s and we'll never come back together. Some folks think that this is good because humans crave choice. Others think it's just wasting time and effort as we design language and development tools twice.
There seems there's always a need to have vanilla out there to balance out chocolate. Take a look at Billy Hollis' Tongue-in-Cheek "History of BASIC" and "History of C." Personally, I'll write in any language that makes me productive. VB.NET, Ruby, C#, Zulu, Amharic or Spanish. It's all just a way for us to express our intent to the machine.