Recent Posts

Recent Comments

  • Stew: I’m not easily impressed. . . but that’s imprssieng me! :)
  • Olli: Two and a half year later – nothing changed.
  • Arrays: Steele made a wonderful piece about programming languages for the JAOO developers conference called 50 in 50....

Top Commentators

Archives


« XML Persistence: database-agnosticity and better performance | Main | Random attendee profile »

Linguistic Diversity and the Illusion of Recency

By Kevlin Henney | September 29, 2008

In spite of its Java-based origins, JAOO has become one of the principal events for showcasing the current programming language boom in commercial and open-source development. There is a cycle of Cambrian-like expansion and KT-esque extinction events that programming languages appear to go through in terms of popularity. In truth, there are always many languages being dreamt up and in use, but what changes with time is the filter of what is perceived to be in the mainstream and the flurry of activity and interest that surrounds languages entering or bidding to enter the mainstream. And don’t fall into the trap of using the term “new languages” to describe them all. Some emerging languages like Scala, F# and D may be young in comparison to Java, C# and C++, but others, such as Ruby, Lua and Erlang, have been around for longer than some of the market-comfortable “old languages”. Sometimes it seems like old is the new new. Of course, older is not necessarily better (or worse), but it’s worth being aware of recency illusions: not all that appears to be new is actually new.

Although many in software development would like to consider themselves rational and well informed, deciding only in terms of carefully considered facts, it turns out that even software developers are human. The reality is that much language choice is down to relatively arbitrary personal preference, a bias that is a subtle combination of familiarity and comfort, assumption and ignorance, social group identification and fashion, as well as other matters of taste, not all of which can be characterised easily in objective or intersubjective terms.

At JAOO a couple of years ago Anders Hejlsberg observed that programming language has become very much a lifestyle choice. Whether one considers to be a good or bad thing is a separate question, but it is a telling observation. There are, of course, other factors, but language choice is more arbitrary than many would believe or hope (especially those with a strong language allegiance). Although there are exhortations to “use the right tool for the job” and declarations of “horses for courses”, prejudice still accounts for much of the (un)informed debate.

Once you recognise a personal bias it becomes easier to state it (”I know I’m a dyed in the wool Java programmer, and Ruby still looks a bit funny to me, so I’ll probably stick with Java-focused sessions. Maybe next year.”) or address it (”I do a lot of work in Java, but there seem to be a lot of interesting things going on with Ruby so I’m going to hang out at some of those sessions.”), instead of assuming default superiority of a personal point of view (”Although it may not be perfect, Java is the best language around for building systems. Ruby seems like nothing more than a niche toy language. A friend of mine told me that he liked Ruby because it reminded him of Smalltalk. But I once heard a few things about Smalltalk I didn’t like.”). Deep experience in a language counts for a lot, but it shouldn’t be grounds for dismissing other languages. Absence of experience in something is a reason to open rather than close one’s mind. This doesn’t mean that you should be trying to learn everything, but it does mean that you shouldn’t be taking active measures to avoid learning something. This, of course, applies just as much to the newly converted (”Ruby is just so cool. JavaScript? Whatever. Doesn’t make any difference to me.”).

Standing back from the individual and returning to the bigger picture, characterising language interest and adoption in terms of a boom-bust cycle runs the risk of oversimplification. Software development is so wide that while the tide is going out on the shores of one development domain it is coming in elsewhere. Even in the part of the cycle when a domain consolidates around a single language-of-choice, that simply means the language is popular; it does not mean that everyone is using it to the exclusion of all else. Similarly, even when we characterise a system in terms of a single language, it is uncommon to find that it is actually dependent on no more than a single language, no matter what domain or what part of the cycle it hails from.

Consider how many Java systems are actually just Java: most are built, held together and communicate in terms of XML, which is itself not so much a language as a framework for creating a diversity of little declarative languages. Whether XML is always a sensible choice is another question — it often trades convenience of parsing and tool availability against human readability and long-term maintainability — but its central role serves to undermine the myth of “100% Pure Java”. And that’s without even considering SQL, property files, regular expressions, etc. But this is nothing new. Classic C development on Unix also lives in a multilingual world. Few who characterise themselves as C programmers working with Unix, Linux and related OSs rely on just C — whether it is make, config files, the shell or any one of a number of shell tools and programmatically focused DSLs, knowledge of many languages is the norm. Many of these languages are so-called little languages, and most are not even Turing complete, but they are languages nonetheless, each with a syntax and associated lore.

This doesn’t mean that all systems are necessarily tangled, postmodern mash-ups of inchoate ideas and ad hoc code, but it does mean that once you’ve scratched the surface there is little that is novel or postmodern about multilingual systems and polyglot programmers. More is not necessarily better, but one is often not the best or most practical answer. This much is not new, but perhaps making a point of consciously embracing it is.


Category: 2008 JAOO | Tags: , , , | No Comments »

Comments