Programmers seek languages that let them solve particular problems in concise, elegant ways and communicate those solutions to other programmers. For the last 10 years, IEEE Spectrum has been trying to help with that search with its annual interactive rankings of the Top Programming Languages, the latest of which is now available on our website.
How we put TPL together has evolved over the last decade, but the basic recipe has remained the same: Find multiple proxies for the popularity of languages and combine them to create meta-rankings. Looking back at the results, we see this recipe has told an interesting tale.
The early years were marked by the introduction and growth of new languages such as Go (first released by Google in 2009) and Swift (first released by Apple in 2014). These languages reflected the shift toward mobile devices and data centers. Later, Big Data drove language popularity, with specialized analysis and visualization languages such as R and Julia coming to prominence.
While compiled languages like C++ aren’t vanishing, it’s clear that Python is becoming the lingua franca of computing.
Then came the defining theme of the last 10 years: the ascendance of Python. Emerging in 1991, at first Python didn’t attract much notice, being overshadowed by Perl, another interpreted language released a few years earlier. In any case, no one wrote real programs in interpreted languages. You wrote scripts that, say, helped you automate system-administration tasks. But Python’s philosophy of “batteries included”—meaning a large collection of standard libraries—made it easy to use. And Python was easy to adapt to new domains, such as Big Data and AI, the latter thanks to the popularity of new machine-learning libraries like Keras and PyTorch. While compiled languages like C++ aren’t vanishing, it’s clear that Python is becoming the lingua franca of computing for middle schoolers and Ph.D.s alike.
Putting together the TPL has also made one other aspect of programming languages clear to us: Computer languages have terrible names.
Things started out so well with Fortran and Cobol—brief yet euphonious names rooted in descriptors of language’s purpose: formula translator, business language. Sadly, by the late 1960s, the rot had set in. BCPL arrived, its name a brute acronym for Basic Combined Programming Language, four words that conspire to give no information about the nature of the language or its purpose. BCPL begat B. And B begat C. C itself is a staggering accomplishment, a milestone on every timeline of computing. But its name must be considered a stain on its incredible legacy.
For C begat the even greater nominative monstrosity of C++. This made it acceptable to incorporate symbols, a tradition continued with names like C# and F#. But perhaps even worse is the alternate fashion of just using common nouns as names, for example, Rust, Ruby, and Scheme. Some forgiveness can be given for a borrowed name that’s unlikely to cause a semantic collision in normal use, such as Python or Lisp. But there can be none for such abominations as Processing or Go. These are words so often used in computing contexts that not even a regex match pattern written by God could disambiguate all the indexing and search collisions.
Consequently, some of the metrics that compose the TPL require many hours of handwork to clean up the data (hence our strong feelings). Some languages have their signal so swamped by semantic collisions that their popularity is likely being underestimated. So by Lovelace’s ghost, if you’re naming a language, please suppress impulses toward pun or punctuation. Instead, make it pithy, make it pronounceable, and make it praiseworthy.
Stephen Cass is the special projects editor at IEEE Spectrum. He currently helms Spectrum's Hands On column, and is also responsible for interactive projects such as the Top Programming Languages app. He has a bachelor's degree in experimental physics from Trinity College Dublin.
Harry Goldstein is Editor in Chief of IEEE Spectrum.