The "Natural Fit"

It has been a busy few days in the world of the rant (see Mr. Grimes' Farewell) and reply (see Grumpy Grimes and Scott Swigart Responds to Richard Grimes).  Now this is a topic that I have a bit of passion for. 

I am not going to restate the very good arguments by Scott and Duncan, I would simply encourage you to spend a few minutes reading them if you have not already.  I would like to address a different point from Mr. Grimes, and one I have heard before:

"C# is the natural language to use for .NET and there was no need for VB.NET"

First, every time I hear someone say this they just move on without explaining themselves or providing any support.  What exactly does "the natural language" mean? 

Yes, there are a few things that are possible with the CLR that you can't do with VB but you can with C#.

One that I hear often is /// comments.  To me this does not justify the time it would take for a Visual Basic developer to forget the entire language that they know and learn C#.  In fact it is possible with a free add in and will be native in Visual Studio 2005.  What few things VB can not do that C# can are often times not an issue for the vast majority of Visual Basic developers.

These few things are pretty much brushed off the table in Visual Studio 2005.  As Paul Vick says in his blog today, "But the point is that with the release of Whidbey, VB will finally be fully caught up in terms of supporting .NET...". 

Maybe by "the natural language" they mean that lots of people at Microsoft develop in C#.  I have heard this said before to explain why you should just jump to C#.  This statement is very true. Why, because most Microsoft developers have a C++ background and C# is a natural upgrade path for them just as VB.NET is a natural upgrade path for a Visual Basic developer.  As a point of fact also there are Visual Basic developers working at Microsoft, myself being one of them.

If you figure C# is the natural language because that what a lot of Microsoft developers use lets just run that out into other ideas:

Most Microsoft developers make commercial software not internal enterprise applications.  Does that mean you should quit your job working for a company as a developer? 

Large amounts of Microsoft developers write operating systems, does that mean that operating systems are the natural product for developers? 

Granted, these is a bit extreme but my point is that what Microsoft developers develop in is a choice that makes the most business sense for the products and conditions they are working under.  The choice between VB and C# is about just that, what makes the most sense in YOUR environment based on YOUR developers and THEIR experience not what makes sense at Microsoft.

Let's apply this "Natural Language" idea to other topic.  Burger King sells lots of Whoppers.  The Whopper comes with beef by default.  Now I like a good hamburger ever now and then but some times I just want a chicken sandwich.  If I order a chicken Whopper does that mean it is not the natural fit for a Whooper and I shouldn't do it? 

No, a Whopper is to pieces of bread, some lettuce and a bit of sauce with some meat in the middle (IMHO a pretty good taste too).  What that meat is in the middle is up to you, it can be beef, chicken or nothing if you don't eat meat. 

Eat the Whooper of your choice and use the language that makes sense to you.  Stop worry about what someone else thinks is more natural between the two slices of bread.