Welcome to IEEE Spectrum’s ninth annual ranking of the Top Programming Languages! This year we’ve revamped and streamlined our interactive ranking tool and made other changes under the hood, but the goal remains the same—to combine multiple metrics from different sources to estimate the relative popularity of different languages.
You can get into the details of our methodological changes below (the TL;DR is that we eliminated the need for folks to run a giant ball of floating-point math in their browser), but first let’s get into what the rankings tell us this year.
IEEE Spectrum’s Top Programming Languages 2022
But among these stalwarts is the rising popularity of SQL. In fact, it’s at No. 1 in our Jobs ranking, which looks solely at metrics from the IEEE Job Site and CareerBuilder. Having looked through literally hundreds and hundreds of job listings in the course of compiling these rankings for you, dear reader, I can say that the strength of the SQL signal is not because there are a lot of employers looking for just SQL coders, in the way that they advertise for Java experts or C++ developers. They want a given language plus SQL. And lots of them want that “plus SQL.”
It may not be the most glamorous language...but some experience with SQL is a valuable arrow to have in your quiver.
This is likely because so many applications today involve a front-end or middleware layer talking to a back-end database, often over a network to eliminate local resource constraints. Why reinvent the wheel and try to hack your own database and accompanying network interface protocol when so many SQL implementations are available? Chances are there’s probably already one that fits your use case. And even when a networked back end isn’t practical, embedded and single-board computers can be found with enough oomph to run a SQL database locally. (For more on the rise of SQL, see our accompanying article.)
So it may not be the most glamorous language or what you’re going to use to implement the next Great Algorithm, but some experience with SQL is a valuable arrow to have in your quiver.
Looking at complete jobs listings also shows that if you’re interested in cyberwarfare (both offensive and defensive), then getting handy with assembly code is a pretty good in. Previously, I generally just associated assembly code with things like device drivers, tweaking the guts of operating systems, or retrocomputing. But many of the job listings calling for expertise in assembly were posted by the kinds of low-profile cybersecurity contractors that orbit Washington, D.C., and even one government agency—the NSA.
Job listings are of course not the only metrics we look at in Spectrum. A complete list of our sources is here, but in a nutshell we look at nine metrics that we think are good proxies for measuring what languages people are programming in. Sources include GitHub, Google, Stack Overflow, Twitter, and IEEE Xplore. The raw data is normalized and weighted according to the different rankings offered—for example, the Spectrum default ranking is heavily weighted toward the interests of IEEE members, while Trending puts more weight on forums and social-media metrics.
In previous years, we allowed readers to bypass these preset rankings and create a custom ranking by adjusting the weights however they pleased. However, it turned out that very few people were taking advantage of this feature. Taking it out allows us to precompute the preset rankings instead of serving an app that contained the data from all the metrics and then computed the rankings in the browser on the fly. Quite apart from making the app large, and thus slower to load, we also ran into the problem that different browsers could produce slightly different results, thanks to variations in floating-point implementations! (This problem of different implementations giving different results was largely solved by the IEEE-754 standard for floating-point numbers, so it would be interesting to go back and find out which browser versions are noncompliant. But for now let’s just all agree to not run any, say, nuclear reactors with a Web app, okay?)
Creating the rankings also pulls us into the typical dilemmas faced by any taxonomist—you might think you’ve got a straightforward and unambiguous way to classify things, but then edge cases and weird hybrids invariably slither into view. Plus there’s the eternal struggle between “lumping” and “splitting”—is it best to focus on similarities and thus put multiple things under fewer labels overall, or focus on differences and break things up as much as possible and have more fine-grained labels?
For us this question starts with considering just what is a programming language. This causes a lot of folks to shout at us, especially with regard to HTML/CSS. Although not Turing-complete except under highly artificial conditions, we do consider HTML/CSS a programming language because the tags in its source code are primarily intended as imperatives to do things such as “present this text in a table format” or “make this heading larger than the body text.” Another question that crops up is when do you decide that a superset or subset of one language has become distinct enough to be considered separately?
These are all essentially subjective decisions, as are the weights we assign to different metrics, so your mileage may vary. We simply offer this up as our approach to a tricky problem—after all, no one can directly measure what languages people are programming in.We hope you find them useful, and if you think we need to be making different judgement calls, leave us a comment telling us why!