Languages with purpose

A number of the Microsoft Regional Directors and I have been posting back and forth all day about the C# vs. VB.Net issue, but not in the way that contentious bone usually plays out.

Rocky Lhotka not only started the thread, but he also was the first to bring it into public space with his post and quote from one my my analogies.

The point I would like MS to get is that while C# and VB.Net are very useful and powerful each in their own right, they work to cross purposes.  The biggest problem is that in spite of vastly different syntax and heritages there is a little difference between them to the effect that you can’t walk into a development shop and say “you will save 30% of your time coding in C# because your projects are mostly X type”. That is the type of distinctive purpose I want and that is what my customers by and large want. A decision point, a clear guideline, a stated objective.

At the moment I think both language are trying to do the same thing but for people with different prejudices vaguely based on their backgrounds. While choice is generally good it can be bad when it leads to paralysis. Jim Allchin once said that having brought NT to market, if he had it to do over again he would remove every single user configurable setting as they were the source of all the heartache.

The analogy that comes to mind for this situation (and the one borrowed by Rocky) is that as a commander in combat I know when to use a Tank (plodding and durable lethality) and I know when to use a A-10 (fast, manueverable and vulnerable lethality), but if you make tanks fly and add a few feet of armor on an A-10 then you get the same muddy water we have between C# and VB.Net. Those that know me will forgive the military analogy ;)