Type “Which programming language…” into Google, and one of the top results is: Which programming language should I learn?
This must be one of the most popular questions for beginner / wannabe programmers. Which language should I learn? And if you ask a hundred people this question, you will get a hundred and ten answers. Now to mention a lot of holy wars, nerd rage, cat fights, fist fights; you get the idea.
Many people don’t know this, but in 1998 the world almost came to the brink of nuclear disaster when a bunch of Visual Basic, C++ and C programmers broke out into a fist fight. The fight escalated, and would have led to a full scale nuclear war, had not Linus Trovald come into at that exact moment and threaten to shoot everyone. And that is both how nuclear war was averted and Linux became the most popular operating system on the planet.
Most beginners will get really confused at this stage, and try to randomly pick one. Or they will pick something that sounds sexy and cool, but is practically useless. Something stupid like assembly language or Haskell. They will struggle with it for some time, and then give up. A large number of you will just quit at this stage.
The whole process may seem frustrating and irritating: Why are there so many programming languages, and how do you choose? What if you make the wrong choice? You may spend years studying something, only to find it went out of date six years ago. Agghhhh!
No wonder people feel so tense. Before we go any further, let me say just one thing: No time spent studying a language will be wasted. Even if it was Basic from the 80s, or even Logo, every minute will be useful.
XBox for the 80-90s
So which programming language should you learn?
The way out of this conundrum is to remember this: Programming is a tool.
Most people get so enamored with the tool, they forget it’s just a thing you use to solve a problem. Do people who study carpentry spend hours debating if they should use a hammer or a screwdriver?
So the first question to ask yourself is: What do you want to accomplish? Because what tool you use will depend on what you want to accomplish. There are a few typesof programming languages, depending on what you want to accomplish:
- Low Level languages: Used when writing operating systems, compilers, embedded systems; anything that must be close to the hardware. C and C++ are the only two languages used nowadays, though C is more common.
- Application languages: This is software that runs on the computer. C# ( & the related Microsoft languages like Visual Basic), Java, C++. This is what most people think when they think of programming– programs like MS Office that run on your PC. As I will say in a later post, these type of programs are no longer as important as they were.
- Scripting languages: Used for testing, rapid prototyping, these languages have some very powerful features. So much so that they are being used for almost everything under the sun. From web development, to games to scientific computing. Again, Python is a great example.
- Pretentious languages: We will discuss this in a future post. These are languages that the “elite” and “posh” programmers won’t shut up about, like Haskell and Lisp. They are not useful in any practical application, but if you want to appear “leet”, you have to pretend to be an expert in them.
How do you choose a programming language?
So the question to ask yourself is, what do you want to accomplish?
1. Want to write low level code for an embedded system? Use C, maybe C++. Not assembly. No matter how cool you may have heard it is.
2. Want to write enterprise level code (that solves business problems)? Remember, the people who slap and abuse you, force you to sit in a chair for 8 hours, and then throw you a few pieces of silver? Well, they are the ones who decide this. So shut up and go back to work.
3. Want to write games? Which games?
- Games that run on your PC or on consoles like XBox- C++, C#
If in doubt, choose Python. It is simple to learn, and easy to read. It is a well supported language, with plenty of tutorials and books.