Lhotka's Labrynth

The End of the Language Wars

.NET developers, regardless of whether they use VB or C#, realize that the .NET platform is far more important than the language they choose.

Language wars, huh, yeah. What are they good for? Absolutely nothing, uh-huh. (With apologies to Edwin Starr.) People have found something to fight about for as long as I've been in the computer industry. My OS is better than your OS. My platform is better than your platform. My language is better than your language.

There can be no doubt that Digital's OpenVMS was the best operating system ever invented. With that out of the way, let's talk about programming languages. Like OpenVMS, the .NET platform is language neutral. Both platforms support many different languages, and almost all of the languages on either platform can be used to do almost anything. Both platforms provide a rich set of services, allowing the languages to focus primarily on enabling a developer to access the platform.

Throughout the '90s in the Microsoft world, there was a clear delineation between C++ and VB (or similar business-focused tools like PowerBuilder, Delphi, and so on). The C++ language was geared toward low-level Windows platform access, and C++ was the primary Windows development language. Most business developers found that low-level access to be unproductive, and tools like VB provided not only a language, but an abstraction layer so the developer didn't have to deal with Windows itself to do most common tasks. The result: C++ and VB had different roles and different constituencies.

Then came .NET, a platform that is an abstraction layer. My good friend Billy Hollis often says that .NET is just the VB runtime all grown up and made language neutral. And there's a lot of truth to that. The .NET platform provides the benefits of the VB runtime (and many more), but with language neutrality. However, with the language neutrality came the latest iteration of the language wars: VB vs. C# in a battle to the death!

There were no such wars on OpenVMS. People chose languages because of familiarity with syntax, or due to existing bodies of code, or because a specific language had features particularly good at solving a problem. For instance, FORTRAN was far better at solving mathematical problems than other languages, both because it had powerful syntax for that purpose, and because it had the most amazing optimizing compiler!

I think the language wars in .NET occur because of the cultural baggage from the '90s. Most early adopters of C# came from C++, and brought with them an outdated idea that semi-colons automatically meant better performance and lower-level platform access. Most early adopters of VB came from VB, and brought with them an outdated idea that VB was the only realistic language for the productive development of business applications.

But it turns out that C# is not about low-level access. Rather, it's about business productivity. And it turns out that VB is no longer the only business-productivity language. Moreover, VB has the same low-level features as C#. All of a sudden, two different constituencies, with two different worldviews and a decade's worth of biases collided on the same turf. It takes time for people to fully appreciate any new reality, and in the meantime --unfortunately - -there's often a lot of strife.

Today I think most experienced .NET developers, regardless of whether they use VB or C#, realize that the .NET platform is far more important than the language they choose. In a few more years, I hope that the Microsoft world can achieve equality with the OpenVMS world, where there are no language wars. It should be a world where your programming language is chosen because of your syntax preferences, or due to existing bodies of code, or because a given language has some specific feature that applies to a given requirement. For example, I hear that F# is particularly good at solving mathematical problems on multi-core machines because it has a powerful syntax for that purpose.

About the Author

Rockford Lhotka is the author of several books, including the Expert VB and C# 2005 Business Objects books and related CSLA .NET framework. He is a Microsoft Regional Director, MVP and INETA speaker. Rockford is the Principal Technology Evangelist for Magenic, a Microsoft Gold Certified Partner.

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube