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

  • Hands On: New VS Code Insiders Build Creates Web Page from Image in Seconds

    New Vision support with GitHub Copilot in the latest Visual Studio Code Insiders build takes a user-supplied mockup image and creates a web page from it in seconds, handling all the HTML and CSS.

  • Naive Bayes Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the naive Bayes regression technique, where the goal is to predict a single numeric value. Compared to other machine learning regression techniques, naive Bayes regression is usually less accurate, but is simple, easy to implement and customize, works on both large and small datasets, is highly interpretable, and doesn't require tuning any hyperparameters.

  • VS Code Copilot Previews New GPT-4o AI Code Completion Model

    The 4o upgrade includes additional training on more than 275,000 high-quality public repositories in over 30 popular programming languages, said Microsoft-owned GitHub, which created the original "AI pair programmer" years ago.

  • Microsoft's Rust Embrace Continues with Azure SDK Beta

    "Rust's strong type system and ownership model help prevent common programming errors such as null pointer dereferencing and buffer overflows, leading to more secure and stable code."

  • Xcode IDE from Microsoft Archrival Apple Gets Copilot AI

    Just after expanding the reach of its Copilot AI coding assistant to the open-source Eclipse IDE, Microsoft showcased how it's going even further, providing details about a preview version for the Xcode IDE from archrival Apple.

Subscribe on YouTube

Upcoming Training Events