RDN Directions

A Language Renaissance

A whole new set of program language options options are available to developers.

Programmers building on the Microsoft platform have never had as many choices when it comes to programming languages as they do today. And recently, Microsoft added one more language to the mix -- IronRuby, a .NET version of the popular Ruby language frequently used on Web servers.

In fact, there's something of a programming language renaissance taking place on the Microsoft platform, and it's following the same basic course plied by the European Renaissance of the 14th through 17th centuries. For developers willing to look beyond Visual Basic or C#, a whole new set of options are available.

The 1970s and 1980s saw tremendous activity in the world of programming languages with languages such as LISP, Smalltalk and APL all being developed. But by the 1990s, the Microsoft programming world was dominated by just two languages: Visual Basic (VB) and Visual C++. Both had large customer bases -- in the corporate world for VB and among independent software vendors for C++. Microsoft had large teams of developers working on both products.


This combination of factors made it very difficult for other languages, whether from Microsoft or others, to gain a toehold. For third parties, the task of having to develop their own IDE -- in addition to a compiler and code libraries -- was daunting. For its part, Microsoft figured it had the market covered between VB and Visual C++, and that building yet another language would risk throwing away the large investments in its two flagship languages.

But the introduction of Java in 1995 changed everything. Java proved there was a market for a new programming language -- something Microsoft didn't think existed. What's more, Java slipped nicely between VB and C++, and threatened to steal Microsoft customers from both languages.

The Renaissance Arrives
When Microsoft finally responded to Java with the .NET Framework, it made two critical decisions that laid the foundation for the explosion of new languages that we're seeing today. First, it decided that support for multiple programming languages was more important than backward compatibility. Second, the company decided to turn Visual Studio into a platform for other languages.

Given the importance of VB to Microsoft, it's hard to imagine a bigger gamble than the decision to have the .NET Common Language Runtime (CLR) support as many programming languages as possible. Similarly, Visual Studio is a major competitive advantage for Microsoft -- it's years ahead of most other development environments, but Microsoft made the decision to open it up to third parties.

So a developer interested in creating a new programming language no longer faces the unenviable task of having to build a full set of developer tools and libraries. Now they can focus on just creating languages that solve interesting problems or make certain kinds of programming tasks easier. At first, with the set of languages for .NET consisting mostly of various incarnations of COBOL, it didn't look much like a renaissance. But since that time, things have gotten progressively more interesting.

The latest example is Microsoft's introduction of IronRuby, which has helped kick off a dynamic language revolution with the .NET Framework. IronRuby itself is based on the popular Ruby language commonly used with the open source Rails framework for Web server development. What's more, Microsoft at the same time introduced the Dynamic Language Runtime (DLR), an extension to the CLR to better support dynamic languages.

Dynamic languages are a rapidly growing category of programming languages that give developers tremendous flexibility by blurring the distinction between code and data, and by allowing new objects and types to be introduced at runtime.

Most important, the DLR has the potential to do for dynamic languages what the CLR did for more traditional languages: help developers with interesting programming languages reach a much broader audience with far less work. In fact, Microsoft is also working on a dynamic version of VB, code-named "VBx," which tries to bring some of these ideas to the millions of active VB developers.

Enjoying the Art
So what does this all mean for the average developer today? General-purpose languages, such as C#, aren't going away. It's precisely their general-purpose nature that makes them a good choice for many tasks. And C# itself is evolving to take on some dynamic characteristics.

But don't walk around with a "VB or C#" mindset. There are alternatives out there that don't require you to learn a new IDE or new database API. Take the time to have someone in your organization learn about Ruby, or Python, or Scheme, even if you have adopted C# as your default language.

About the Author

Greg DeMichillie analyzes and writes about Microsoft's development platform and tools for Directions on Microsoft, a research firm dedicated to tracking Microsoft. He was previously the group program manager at Microsoft responsible for the overall design and feature set for Visual C# and C++. A founding member of the C# language team, DeMichillie was a key contributor to the initial design and development of .NET.

Reader Comments:

Add Your Comment:

Your Name:(optional)
Your Email:(optional)
Your Location:(optional)
Comment:
Please type the letters/numbers you see above