The December 2022 issue of IEEE Spectrum is here!

Close bar

Top Programming Languages 2022

Python’s still No. 1, but employers love to see SQL skills

4 min read
An illustration with people typing on laptop surrounded by floating windows
Randi Klett

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

Python remains on top but is closely followed by C. Indeed, the combined popularity of C and the big C-like languages—C++ and C#—would outrank Python by some margin. Java also remains popular, as does Javascript, the latter buoyed by the ever-increasing complexity of websites and in-browser tools (although it’s worth noting that in some quarters, the cool thing is now deliberately stripped-down static sites built with just HTML and simple CSS).

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?

Generally, we let pragmatism be our guide. You can argue that Arduino microcontrollers are programmed in a subset of Java (or C++), but if someone asked for help writing an Arduino project, giving them a book on Java would be of limited use. On the other hand, there are a lot of books with titles along the lines of Writing Arduino Programs Made EZ, so the Arduino language is listed separately. On the other hand, it doesn’t seem to make much sense to put, say, MicroPython and CircuitPython anywhere but firmly in the Python box, at least for now. Categorizations evolve. For example, previously we grouped Typescript with JavaScript, but adoption has grown enough that it makes more sense to break it out.

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!
The Conversation (5)
Vitold S01 Sep, 2022

Look like you mixed programming language, DSL for document markup and data query language. Would be cool to see stats group by categories.

Richard Eng21 Nov, 2022

Year after year, IEEE Spectrum consistently leaves out Smalltalk on its list of programming languages. I am totally befuddled by this. Smalltalk is a far more significant language in the IT industry than some of the others that are on the list such as Eiffel, Raku, Elm, Forth, J, OCaml, Prolog, TCL, Lisp, F#, Haskell, and Scheme.

There are three major Smalltalk vendors with thousands of enterprise customers around the globe: Instantiations (VAST), GemTalk Systems (GemStone/S), and Cincom (VisualWorks). How many vendors are there for the languages I mentioned?

The European Smalltalk User Group, or ESUG, has thousands of active members.

Pharo is a modern incarnation of Smalltalk much like Clojure is a modern incarnation of Lisp and Elixir is a modern incarnation of Erlang.

This year is the 50th anniversary of Smalltalk and there have been no fewer than four major celebrations!

JRMPC 2022 Awards Ceremony.

Smalltalk Renaissance — 50 Years of Smalltalk.

Making Smalltalk hosted by Computer History Museum.

Smalltalks 2022 in Buenos Aires, Argentina, hosted by FAST.

What other programming language has enjoyed such recognition for their longevity and contributions to the IT industry? And yet, IEEE Spectrum snubs this great language. Unbelievable.

Thomas Wolfgang24 Oct, 2022

I don't mean to be semantics police but Verilog/VHDL are not programming languages. Thinking of HDL implementations as "programs" is how you end up writing terrible descriptions.

Why Functional Programming Should Be the Future of Software Development

It’s hard to learn, but your code will produce fewer nasty surprises

11 min read
A plate of spaghetti made from code
Shira Inbar

You’d expectthe longest and most costly phase in the lifecycle of a software product to be the initial development of the system, when all those great features are first imagined and then created. In fact, the hardest part comes later, during the maintenance phase. That’s when programmers pay the price for the shortcuts they took during development.

So why did they take shortcuts? Maybe they didn’t realize that they were cutting any corners. Only when their code was deployed and exercised by a lot of users did its hidden flaws come to light. And maybe the developers were rushed. Time-to-market pressures would almost guarantee that their software will contain more bugs than it would otherwise.

Keep Reading ↓Show less