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!- Top Programming Languages 2021 - IEEE Spectrum âº
- How We Judge the Top Programming Languages - IEEE Spectrum âº
- Posits, a New Kind of Number, Improves the Math of AI - IEEE Spectrum âº
- Electronic Warfare, Hackable 5G Networks, and Cell Towers on the Moon âº
- MIT Turbocharges Pythonâs Notoriously Slow Compiler - IEEE Spectrum âº
- TLA+ Helps Programmers Squash Bugs Before Coding - IEEE Spectrum âº
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.