Microsoft could be right -- maybe we will write our projects in seven languages for one platform. When interviewing language inventors Gavin King (Ceylon), Rich Hickey (Clojure), and Charles Nutter (Ruby) for my previous article, one detail stuck out. For the most part, they take on faith the idea of "polyglot" software development.
Years ago, the former chair of the ECMA .Net CLI standards board, Sam Ruby, gave a talk to the Triangle Java Users Group. He ended his presentation on .Net with a cheeky quote that I paraphrase from memory: "If you want to write one project in seven languages for one platform, choose .Net. If you want to write one project in one language for seven platforms, choose Java." The user group responded to this dig at Microsoft with a standing ovation.
For a long time, mission-critical business software was written in Cobol and/or RPG if it was on the mainframe. PC programming was a much more fragmented market, and you saw waves of C/C++ give way to scripting languages, Perl, and so on. For a decade, we had a period of relative stability with Java, Visual Basic/ASP, and later .Net, with .Net's support of multiple languages more hype than practice. Just as plain old Java ruled the roost, while other JVM languages were rarely used to create business software, most .Net software was written in C#.
But times have changed and the language market is more fragmented. Java has retreated from its dominant position in 2001 and is declining in use. Ruby has overtaken C# in projections of long-term trends. Meanwhile, languages like Clojure, Scala, and others have become the talk of the town among self-proclaimed alpha geeks, though they've yet to make much of a market impact and we've only begun to see these languages put to task in real projects.
A few weeks ago, I asked Gavin King and Charles Nutter about whether the market, in terms of languages, was becoming more fractured. Nutter said, "I don't see it as fractured ... I see it as diverse."
King agreed: "'Fractured' in what sense? People have been experimenting with new languages since the dawn of computing. Most of these 'new' languages we're talking about have been around for quite a number of years."
Neither saw this state of affairs as likely to coalesce again into a few dominant languages. Instead, they saw this diversity as a fertile ground of ideas in which languages will share innovation with each other.
According to King, "A whole lot of cross-pollination goes on, and you see some kind of convergence in the space of language features, in the sense that some things that turn out to be good ideas are rapidly (or slowly) adopted by many languages." Nutter believes "the day is rapidly approaching where we will see much greater collaboration between the various JVM languages." To that end, Nutter participates in a JVM languages group with other developers.
That said, it's easy to overhype the language explosion. There's a lot of talk about these "new" languages, but their overall market share, while growing, is still less than 1 percent, with the exception of Ruby.
It's hard to imagine another decade of a single language ruling them all. If Nutter and King are right, then there will be no replacement for Java. Instead, as Sam Ruby once scoffed, we'll use "seven languages to create one program" and probably, for one platform: the Web cloud.