There is no such thing as "best (programming) language"...

One of the most often asked questions on /r/learnprogramming is "what is the best (programming language / framework / toolkit) to learn?"

The proper answer is "the language you know best that can do the job".

But many new to programming don't have a job to do. Instead, they want an answer that will basically, predict the future, i.e. what should they learn NOW, so they can be employable or be happy LATER.

Sorry, that's not gonna happen. And obviously anyone who said "study this" is a lying SOB.

And since everyone's programming journey is a bit different, everybody's answer will be different, and most will simply give the answer of the language they are most proficient in, assuming that his own journey can be recreated by anyone.

Rather unlikely.

Almost everyone can drive a car, not everyone can RACE a car (successfully) for a living.

Same with programming. Almost everyone can program a little. Macro recording, simple scripting, and so on, most can do. But do programming for a living? That's NOT for everyone.

So pursue it only if you are QUITE certain it is what you wish to do.

With that said, what language should you learn as a "beginner"?

Introduction to programming is usually done in the following languages:

  • Scratch -- usually for kids, it is a simplified language that is used for storytelling, animations, and so on
  • Python -- a general purpose programming language that is easy to learn, but also heavily used in data science and machine learning. 
  • Java -- a simpler version of C that was intended to be universal through the use of Java Virtual Machines on different platforms
  • C++ -- a relatively universal low-level language, good for lower-level data structures, but syntactically a bit hard to read (but better than C)
  • JavaScript -- universal "browser" language but can be run independently through use of node.js, has quite a few "quirks" to be aware of.

Keep in mind that learning a programming language does NOT preclude you from learning a different one. In fact, the basic "blocks" of programming are the same: logic, loop, math, etc.

We will ignore Scratch as it really is for kids.

SIDENOTE: For a graphical way to program with blocks, take a look at Google's Blockly and its derivatives, such as blockly.games.

Personally, I think out of the choices, you should learn Python, as it has multiple uses while being easier to pick up. The problem (and strength) with Python is it is HEAVILY typed, so it can be a little frustrating for some users who get discouraged at the errors, and it is very easy to write unreadable code in Python due to a lot of syntactic shortcuts available in Python.

IMHO, there's nothing wrong with learning JavaScript... as long as you are aware of the problems.

C++, IMHO, may is better for computer science students, who need to dive deeper into the guts of programming, rather than just "know enough to program".

But remember, once you know one well enough, there's nothing to stop you from learning another one.

Comments

Popular posts from this blog

Yet another take on recursion

Problem Solving for Programmers: a Neglected Topic?

How to Solve a Problem, with Examples