Which programming language should you use?

First of all, some backstory.

I love picking up new langauges, so much that it has now become a problem. Ever since 2012, I've been continuously learning Java and Object-Oriented Programming (a.k.a OOP.) Unfortunately, I stopped working on Java and switched to juggling C and C++, due to a recommendation from a programming academia I attended.

After I grew disheartened with C and C++, mostly due to the (IMHO) ugly nature of the two languages, and the cruft and dirt accumulating on the two, I decided to switch to newer languages such as Python, Go, and Rust. Python was extremely easy to pick up, which explains why every Tom, Dick, and Moby down at the bar could write it. Go was a bit more troublesome but nevertheless streamlined to learn. This was in part thanks to the awesome "Games With Go" tutorials which you can check out here. The trouble was Rust.

Rust is a programming language similar to C++ but not entirely C++. It borrowed some concepts, but was generally a new programming language. And it was extremely hard for me to understand.

Since there were no programming exercises or tutorials available, I read the official documentation (Jesus f*cking Christ) and learned my way from the bottom. The language tried to achieve everything in the kitchen sink - memory protection, array protection, every protection made available through compiling, not at runtime. However, the syntax was extremely hard to follow. I don't know what made me quit first - the lack of documentation or the fact that I found Rust extremely hard to follow along. It was so unpopular, JetBrains didn't even have an IDE for it. That wasn't the only pitfall. There were no de-facto GUI frameworks, there was virtually no open-sourced repositories currently using Rust, and the only official thing that closely used Rust was the experimental Servo browser engine from Samsung and Mozilla, who also happened to be the creators of Rust.

Looking at the TIOBE index

If you think the TIOBE index name sounds funky, that's because it is! But who cares, because we're going to use it anyway.

Navigate to the site and take a long hard look at the list. This was the moment when I realized I was taking the wrong approach to programming. Rust wasn't even in the top 50, let alone top 10. It wasn't popular. Now I'm 100% sure there's going to be hordes of developers defending Rust at this point, and I'm not saying Rust is BAD. I'm just saying it was hard for me to pick up because of the various reasons I've listed above. No programming language is ever bad, sans Brainfuck of course (duh).

My best advice is to choose any language from the top 10 and have fun with it. If you have a slight interest in a language that's in the top 50s, then why not go for it as well? The only time you should consider dropping a programming language from your try list is if 1) you feel extremely frustrated with it and 2) it's out of the top 50. And even then you should still reconsider.

Going back to Python

There's a lot of reasons I'm going back to learn Python properly. The main reasons are:

  1. It seems extremely well suited to learn. Even though it has a lot of performance issues, because it's a runtime-based language instead of a compilation-based language, the syntax is super easy to learn and there's tons of documentation, guides, and other libraries and resources available for it.
  2. A lot of libraries or projects these days seem to use it. For most people, performance isn't really a concern, since Python wasn't exactly designed to run at your local nuclear power plant alongside a Real-Time Operating System. It's used for machine learning, OpenCV (a image-manipulating library) and lots of other projects including things like writing applications for the Raspberry Pi.
  3. I've yet to see any hostile attitudes towards the community (yet.) Excluding StackOverflow, of course.

What's your programming language? Email me with yours and I'll be sure to check it out.