A question I am often asked via sites like Quora, is what language (or sometimes framework) to learn next.
My answer is not that there is a given one, but rather it depends on what you already know. This may sound trivially obvious, when you consider that they might already know whatever would be the obvious next thing. But it’s a good bit deeper than that. The one to learn next is: the (reasonably popular) language that is most different from what you already know.
There are many “axes” along which we can divide languages:
- high vs. low level
- statically vs. dynamically typed
- strongly vs. weakly typed
- interpreted vs. compiled-to-VM-interpreted-bytecode vs. compiled-and-linked
- Functional vs. Object-Oriented vs. Imperative vs. Logical and so on
On the first go-round, aim to hit each section of each axis. So, aim for what ticks the most unticked boxes. For instance, if you’ve done only Functional and OO languages, look mainly at Imperative and Logical languages, and if you’ve only done strongly statically typed languages, look mainly at dynamically weakly typed languages. Don’t just learn the language, though, learn how that set of choices makes it different. Learn the advantages and disadvantages of each idea. After you’ve done each section of each axis, then you can aim for new combinations.
In addition to learning “reasonably popular” languages, also learn a “joke” language or three along the way, just for “grits ‘n shins”, like COW, Whitespace, Befunge, Malbolge, or my favorite, Rockstar.