DEV Community

Discussion on: What programming language should I learn next?

Collapse
 
ahferroin7 profile image
Austin S. Hemmelgarn

Two suggestions: Python, and Elixir.

Python Is a resonable choice because:

  • It’s different from JS in a very large number of ways. This makes it a good choice if you’re looking to diversify.
  • It’s dead simple to learn. It was actually designed to be usable as a teaching language, and most existing programmers can get the basics in no more than a couple of hours.
  • It’s in relatively high demand.
  • It has a very comprehensive standard library. It’s not unusual for very simple Python projects to not need anything outside of the standard library, and when they do it’s usually only a couple of things.
  • It has good documentation. In fact, the official documentation for the reference implementation at docs.python.org/ is one of the standards I regularly use when evaluating the quality of documentation in other FOSS projects.
  • It’s very portable. Easily runs on Windows and all modern UNIX-like systems and makes it relatively easy to write portable code.

The big downsides to Python are that packaging and dependency management are a bit complicated, though still better than something like C, and concurrency is rather difficult (it has similar issues to JavaScript in that it’s not really designed for proper concurrent execution).

Elixir is also a reasonable choice given that:

  • It’s also very different from JavaScript, but in different ways than Python is.
  • It’s also reasonably simple to learn, though not as easy as Python. The complicated parts here aren’t the syntax though, but the abstract concepts it’s built on.
  • Builds, packaging, and much of the tooling is reminiscent of NPM in many respects, though I’d argue it’s better in quite a few places (for example, unit testing is treated as a first class citizen in the bundled tooling).
  • It’s absurdly scalable and reliable if you use it right. The underlying language it compiles through, Erlang, was designed for commercial telecom systems, and Elixir inherits all the reliability and scalability of design that went into that.
  • Like with Python, it has rather good documentation.
  • While it’s technically tied to a particular runtime platform (BEAM), said runtime platform is very portable (runs on Windows and almost any UNIX platform, as well as a number of other places, including some theoretical work on hardware implementations).

The big downside here is that the ecosystem beyond certain very specific libraries is not great, but on the flip side a lot of the stuff that you would find yourself needing to add yet another dependency for in JS just doesn’t need it in Elixir (for example, it includes Unicode normalization functions as part of the standard library).

Collapse
 
jankapunkt profile image
Jan Küster

Thank you I really appreciate this addition. Your points on Elixir are really interesting. Which of both give you the more joyful experience? You know, the flow feeling :-D

Collapse
 
ahferroin7 profile image
Austin S. Hemmelgarn

It really depends on what exactly I’m working on. I much prefer Python for small one-off stuff, or prototyping, or even automation and system management stuff (I actually use Python for this as much if not more than POSIX sh). Whenever I’m doing something where performance or concurrency really matter though, I tend much more strongly towards Elixir.