Thursday, October 20, 2005

Language Wars - Who is Winning? Who Cares? [by Scott Golightly]

This is just a repost of Scott Golightly's thoughts from PDC'05. Thought I post this up here on my blog, because the original page gets update with every so often with new insights and reflections from various MSDN Regional Directors. (I have been trying to get Rocky Lhotka's PDC reflections post on LINQ. )


For about as long as there have been computers there have been computer languages and people who will champion one language above another. While it is understandable and even desirable for a language to have a devout set of followers, this is sometimes taken to extremes. When the love and evangelism of a language takes on a religious fervor and the proponents favorite language becomes “the only language for the job” then things are out of hand. For many people deeply involved in the language wars there is nothing more important than “showing” the “uninformed” people on the other side of the argument why they should switch to the “correct” language.

For many years the language wars centered around assembly, C++, and Visual Basic. In 1991 Sun Microsystems introduced Java. This added a brand new language to the mix and helped to stir the debate. In 2000, Microsoft announced C# and VB.NET as two new languages to program against the .NET framework. This started many discussions and arguments over whether Java or .NET is the “correct” platform for the job and even when .NET is chosen there are arguments over whether C# or VB.NET should be used.

One of the latest salvos in the language wars is an editorial by Calvin Austin posted at Java Developers Journal entitled C#: Is the Party Over? that ends with the statement : “C# isn't going anywhere soon but its best days may be behind it.”. I am not going to try to address the points made in the article. What I would like to ask is does it really matter?

The arguments over which language is the best, like many a sports rivalry, invoke heated passion for those involved but for those not involved it appears to be an unwinnable argument with neither side willing to budge. When it comes to choosing a language for a project many developers are forced by choice of platform to choose a language. In other cases it might be a company edict or business requirement that drives the choice. For others it might be the challenge to learn something new or the idea that knowing a particular language will increase their salaries that drives the decision. Finally, for other developers the choice is made based on what languages they have used in the past and which one they feel the most comfortable with.

In an ideal world there would be a rational analysis of the problem to be solved followed by a review of all of the available programming languages with a comparison of the relative strengths and weaknesses of each language against the problem to be solved. Other factors such as platform, training, and maintenance would be factored in and the best language for the job would be chosen. In the practical world this kind of analysis doesn’t occur. Instead, as a new project comes up the programming language is usually given very little thought. Unless the programmers are unhappy with their current development environment or they want to branch out into new languages the requirements are analyzed in the context of the current programming language. If a requirement can not be done easily in the current programming language, a review of other languages might occur. In some cases the requirements are changed to “fit” the constraints of the programming language.

So if the vast majority of developers tend to pick a language or two and stick with them you would expect the language wars to die out over time as people pick sides. Since the language wars continue over time we have to ask the question, who stands to win from continuing the wars? As with any war, there are combatants and the arms dealers that stand to gain a lot from the war. The combatants are the zealots and the language vendors. For a zealot the ultimate goal is to convert everyone in the world to use their language and in the mean time be seen as a leading expert. It is easy to see where the people who produce the language would like to see their language and the development tools that go along with it take over the market to sell more licenses and make more money. I can understand that, it is just good old fashioned capitalism. The “arms dealers” in the language wars are the authors, technical publications, and training companies that make money off of explaining the strengths and weaknesses of a language to developers and how to best use them.

Since there are winners, it would stand to reason that there would be losers as well. The real losers in the language wars are the people who are stuck working with an older language which will not be supported in the future and those who can not cut through all the rhetoric to understand the true business value of the debated languages.

So back to my original question on who is winning the language wars and who cares? The answer is you. If you put in a little effort you can be a big winner in the language wars. By finding vendors, authors, and training companies that are willing to give away information for free in return for the chance to change your opinion. By applying a little bit of skepticism to their claims and putting in a little work to prototype and find out for yourself you can come up with a lot of information without having to pay a lot of money.

About the Author: Scott Golightly is a Senior Principal Consultant with Keane, Inc. and a Microsoft Regional Director from Utah. Scott has over a decade of experience helping clients build, manage, and maintain systems that provide real business value.

No comments: