Design

The Quiet Revolution in Programming

During the last two years, one of the longest eras in programming has quietly drawn to a close.

About every ten years, it seems, we're told that we're on the precipice of some revolutionary development in computing: The PC revolution. Ten years later, the networking and client/server revolution. Ten years on, the Internet revolution. Today, we're in the throes of the mobile and cloud revolutions. Authentic and important as these tides of change are, they do not greatly affect the way we approach programming. There, tides roll in more slowly. Object orientation in the 1990s, the subsequent rise of dynamic languages, and the emergence of parallel programming cover many of the important changes. (Arching over these is the magic dust of agile programming, which changed the coding experience by integrating tests and moving to a faster, leaner model.) And even these waves sweep over programming slowly  note, for example, the snail's pace adoption of parallel programming.

However, during the last 24 months, the sheer volume of change in the computing paradigm has been so great that programming has felt its imprint right away. Multiple programming paradigms are changing simultaneously: the ubiquity of mobile apps; the enormous rise of HTML and JavaScript front-ends; and the advent of big data.

The greatest effect these changes have had on software development is the requirement of multiple languages. Web apps, by definition, are multilanguage beasts. Many mobile apps require more than one language; and even if they can be written in one language, they often rely on a Web- or cloud-based back-end that's written in an entirely different language. And, of course, big data is written using all forms of specialized languages. We have had to become polyglots to develop almost any current application. As a result, when the research and analysis firm Forrester recently surveyed our readers about how much time they spend writing in any given language, the results (from 500 developers) looked like this:

Fraction of programmers (y-axis) who spend x amount of time coding in a given language in 2012.

Note the big spike on the left and the mostly sub-2% numbers for programmers coding more than 50% of the time in one language. I expect, after some reflection, that most readers will find this chart unexceptional. Most developers work in two or more languages. (And of those languages, JavaScript is the one most frequently combined with other languages. I think its numbers will remain high for years as its use in Web and Windows 8 apps assure its continued use.)

If the previous chart looks unsurprising, consider how the responses looked when we asked the question in late 2010:

Fraction of programmers (y-axis) who spend x amount of time coding in a given language in 2010.

These charts are stunningly different when it comes to the right side. Two years ago, fully one-quarter of programmers wrote in just one language, and half wrote in only two languages. Today, such conservative use of languages looks like a luxury.

Even though these charts show only major languages, I believe a secondary development will reinforce the trend; namely, the use of embedded scripting languages. They have already become standard practice in game development, where Lua is frequently embedded for scripting UI components in C and C++ codebases. In Java, the proliferation of JSR-223 scripting engines that are callable from within Java applications foreshadows more of this activity on servers and desktops.

The movement from few to many languages has important ramifications. For example, it's now more difficult to find programmer talent that satisfies all the needs of a project; and it's more difficult as a programmer to be deeply fluent in all the necessary languages and idioms. These obstacles might suggest division of labor along the lines of programming languages (which likely reflect different concerns and separate components), but as the first chart shows, this is not happening. Rather, the traditional division of labor along domains appears to be the continuing norm. Because the trend is so new, it's hard to tell what the other repercussions of this shift are and will be. I'll cover them as they emerge. Meanwhile, all hail polyglots!

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task.
However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Video

This month's Dr. Dobb's Journal

This month,
Dr. Dobb's Journal is devoted to mobile programming. We introduce you to Apple's new Swift programming language, discuss the perils of being the third-most-popular mobile platform, revisit SQLite on Android
, and much more!