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.
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
Financials aside, I know that in some circles, VB (even VB.NET) has a stigma attached to it (as John has already stated). I don't think that's a reason not to use a language, but it might help determine what skills one would want to stress on a résumé.
But thinking of Ruby and Python and Boo etc... I don't think there is a lack of meaningful language innovation going on. On the contrary, I see the projects melding these languages with the .NET platform as a significant step in programming language innovation. The greatest challenge right now is finding "good" ways to represent and handle features in the platform within the language without destroying consistency.
I started programming when was 10 with GWBasic and followed all versions up to now. Also I worked with C and C++ but choosed Basic family as my primary choice.
I can use VB and C# both but use VB because it's my favorite. One the other hand most of .NET developers are familiar with both languages. For example in Pro ASP.NET 2.0 in some chapters you used just C# codes and it doesn't matter for me because easily switch to C# and use them without translating to VB.
Anyway I think that we would know that as we have Java, Python and ... can have VB, C#, VC++ and J#. .NET is created to be an universal platform for these languages so Micorosft has agreed that each person has his/her own ideas!
Also, I don't think Microsoft cares if you buy both--as long as you are developing for the Windows platform. They are just giving you an option to talk to the computer in a language you are comfortable with. I program in both languages but I use VB.net most often because I have a VB6/VBScript/QBasic background. Most C/C++/Java programmers will go with C# just because they are familar with it.
Language 1 should sell itself as the language that is fast to develop smaller applications in, and incorporating ease of use features from scripting languages.
Language 2 should sell itself as the language to create maintainable applications, incorporating strong object oriented features and built in unit testing.
I know there is ironpython but i am not sure how is current status and how much support ms plans to ...
Comments are closed.