Those awful articles about "the best" / "most popular" programming languages
23 October 2018 506 views | Blog
Sick of low quality clickbait articles about "the best" and "most popular" programming languages? Even reputable websites play this game. I suppose they do it because "what language should I learn" is a question that every aspiring programmer has to ask. There's a lot of traffic in it, so they keep churning them out.
Nearly all of these articles are bad, because they are based on irrelevant garbage metrics such as trends in keyword searches, recent Github activity, average salaries, "popularity" or similar. They also suffer from horrible sample bias, failing to acknowledge that the programmers that responded to their survey are a subset rather than a representative sample. Are web developers really going to vote for C?
These articles are rubbish and meaningless.
There is no universal "best language"
Another flaw of these clickbait articles is that they rarely consider the level of real world support for languages. You can go learn the latest and greatest language such as Rust, but will you be able to find contributors for your bleeding edge open source project? How many employers will be looking for people with such skills to join their development team?
An example: According to many articles Python is great and people really like using it, and actually this seems to be mostly true. And there are a couple of solid, well-known Python-based web development frameworks (Django, Flask). But as far as web development goes only about 1% of websites are actually using Python, whereas the hopelessly unfashionable PHP accounted for around 80% of all websites in 2018 and is available on every mainstream web hosting account. So which language should you learn for web development? It's a no brainer.
But if you want to work on data analysis or manipulate text files, then your choice will be different.
So how to pick your first programming language?
Decide what type of development work you want to do, then pick a mainstream, widely supported language that is suitable for that task. And if you're hoping to get a job then absolutely stick to boring industry standard languages, by which I mean the ones that people actually use to build the kind of things that you want to make.
If you are just starting out and want to learn how to programme and don't have a clear objective yet, I'd recommend Python as your starting point. It has the easiest syntax, plus with a few lessons you can actually start doing some meaningful work on those awful spreadsheets your colleages keep kludging together.
So finally, here are a few foundation language recommendations for different tasks. Spoiler alert: They aren't very exciting, but they will serve you well:
- Learning programming concepts (first language): Python is a clear winner.
- Embedded systems (microcontrollers and resource limited systems): C.
- Server-side scripting jobs (automation, maintenance): Python.
- Data analysis and manipulation of text files: Python.
- Mobile development: Java/Kotlin (Android), or Swift (iOS).
- Large scale enterprise software: Java or C++.
- Big fat complicated industrial standard language that can do nearly anything, but not easily or safely: C++
But wait! I hear you cry. "I want to be Avante Guarde and look to the future". Well ok. Golang is great as a general purpose language and seems to be gaining a lot of traction. It's kind of like a modern C with added memory safety features and native support for multithreading, strings and UTF-8. It's even good for web development, except that few web hosts support it yet (but Golang ships with built in webserver functionality and is easy to dockerise). However, it's not suitable for embedded systems as small programmes in Golang still generate large binaries (relative to C), that just won't fit on a typical microcontroller.
Creative Commons Attribution.