We did an informal poll around the Hackaday bunker and decided that, for most of us, our favorite programming language is solder. However, [Stephen Cass] over at IEEE Spectrum released their annual post on The Top Programming Languages. We thought it would be interesting to ask you what you think is the “top” language these days and why.
The IEEE has done this since 2013, but even they admit there are some issues with how you measure such an abstract idea. For one thing, what does “top” mean anyway? They provide three rankings. The first is the “Spectrum” ranking, which draws data from various public sources, including Google search, Stack Exchange, and GitHub.
The post argues that as AI coding “help” becomes more ubiquitous, you will care less and less about what language you use. This is analogous to how most programmers today don’t really care about the machine language instruction set. They write high-level language code, and the rest is a detail beneath their notice. They also argue that this will make it harder to get new languages in the pipeline. In the old days, a single book on a language could set it on fire. Now, there will need to be a substantial amount of training data for the AI to ingest. Even now, there have been observations that AI writes worse code for lesser-used languages.
The other two views are by their trend and by the number of jobs. No matter how you slice it, if you want to learn something, it looks like it should be Python. Of course, some of this depends on how you define programmer, too. Embedded programmers don’t use PHP or Perl, as a rule. Business programmers are unlikely to know Verilog.
A few surprises: Visual Basic is still holding its own in the job market. Verilog outweighs VHDL, but VHDL still has more jobs than LabVIEW. Who would guess? There are still pockets of Ada. Meanwhile, Fortran and Arduino are about equally ranked, as far as jobs go (though we would argue that Arduino is really C++).
So you tell us. Do you agree with the rankings? Do you think hackers would rank languages differently? Will AI reduce us to describing algorithms instead of writing them? We aren’t holding our breath, but who knows what tomorrow brings? Discuss in the comments.
There is no “best language”, there is languages more fitted for some usecase (and there is bad language too).
My take is simple, learn a powerful language (C, C++, or the modern contendents), and a scripting language (Python, lua, etc.).
This way, you can both do heavy lifting with the powerful language, and mock ups/ handy tools with the scripting language.
Personally, it’s C+Python. As an exemple, I code a game for the game boy in C, but all my tools to convert sprites or pack the data are in python.
imho.
Can you tell more about how you made that game? What tools did you use? Do you run it in an emulator or also on a real gameboy?
Ah, yes, the famous Ousterhout’s False Dichotomy. Or you could pick a language that is both powerful and convenient. But you will still have to learn C, I’m afraid, not because it is “powerful” (it isn’t), but because it’s everywhere.
It’s not a false dichotomy.
I write mostly embedded firmware. Mostly C and some C++.
For desktop applications and scripts I use mostly Python, batch/bash, C++, C# and C.
Python cannot run on most true embedded systems (I don’t count a raspberry pi as embedded).
I have played with micropython. So some embedded systems do support this flavor of python. But even then the low level drivers are written in C/C++. So python cannot replace C/C++ for embedded. Period.
C++ is now much better for embedded than a decade ago. By using a subset of C++ and useful modern features you can use C++ as a better C with objects, templates and generic programming without performance penalty. I often combine C and C++ in projects.
Using Python to write GUI desktop applications is not always easy. C# is easier for that in my experience. Though I have played with wxPython.
For scripts python is much faster to code. Especially due to the ability to interact with code live and use Jupyter notebooks for experimentation.
Are the types of applications and supported targets of languages expanding? Yes. Are lines between embedded and non-embedded being blurred? Somewhat. But different languages have completely different philosophies. Languages can also be described/categorized by various metrics. Such as Compiled vs interpreted. There are ways to compile python and ways to interpret C, but it’s a hassle. Will that always be the case? I don’t know and won’t make a prediction for it. But I firmly believe different languages have different applications. It’s a true dichotomy
Agree 100%. However, another strategy might be to decrease your competition by learning a language like COBOL that is still in very wide use in some sectors. The competition is probably much lower due to coder retirements. This could also put you in a position to convert the COBOL code to a more modern language which you would also learn.
Want a language where recruiters fall over backwards to talk to you. Learn VHDL/Verilog. Put those 4 magic letters on my resume years ago and the emails have never stopped.
Thanks for the tip about not to contact recruiters because they’ll never stop sending you emails.
Ranking is invalid because it considers HTML a programming language
Z80 ASM. Same as always.