As famously stated by Ludwig Wittgenstein: « The limits of my language means the limits of my world ». He was referring to natural languages, but this quote can be also applied to the programming world.
Learning a new programming language is an intellectual journey which may help deepen your understandings of computer science. This opens the mind so that you have a different perspective on the software practice. It also exposes you to different programming paradigms. You witness how some ancient or unpopular ideas either transform into popular ones, or got forgotten to be then rediscovered again a decade afterwards.
With the year 2020 around the corner, it is a good idea to also review your programming goals. In this short article I will give you four ideas plus a bonus for programming languages to learn in 2020 in order to hopefully boost your career as a software developer.
“But why should I listen to you?” you may rightly ask. In the end, there is no shortage of people who have an opinion about this topic. I’m not an expert in those language, but I’ve been lucky to get exposed to different programming ideas in the span of 15 years as an organizer of technical conferences with PolyConf being my largest and my dearest creation.
PolyConf promotes the idea of polyglot programming. It’s about encouraging a generalist approach to the art and craft of software development. Programmers should strive to have a comprehensive understanding of programming concepts with breadth and depth of knowledge that transcend the boundaries of a single language.
During those years I’ve had a chance to meet and exchange with creators of programming languages, frameworks and software tools. I was able to witness not only new technologies emerging (like Ruby on Rails in 2005 or Node.js in 2009), but also great ideas being discarded and sometimes forgotten. This experience gave me a good insight into the field of programming.
There is no particular order for this list. Also, it is not about learning all those languages. These are just ideas to inspire or ignite your curiosity so that you can find your own path in this field.
Reason was created by Jordan Walke who also created React.js. If you like programming in React.js, you should watch Jordan’s recent talk at ReasonConf where he gives a few reasons why Reason is worth learning.
Rust is a statically typed programming language focusing on safety, speed, and concurrency. Rust is a system language which means it generates the best possible machine code with full control of memory use. Rust is memory safe by default: all memory accesses are checked. The language is partially influenced by functional programming and its type system is similarly rich to Haskell’s. Rust can be also compiled into WebAssembly which runs in each major web browser at near-native speeds.
Rust was created at Mozilla by Graydon Hoare in 2006. As the web slowly but steadily moves towards WebAssembly and in some degree to serverless, it may be a good investment to learn Rust. Don’t take my word for that, but rather watch the following talk by Steve Klabnik
Dart was created by Lars Bak and Kasper Lund.
I greatly enjoy Bob’s Nystrom articles and talks. In the following video Bob along with Kevin Moore explain why Dart is a programming language choice with no compromises.
The lanaguage was created by Andreas Rumpf.
In the following video, the creator himself, explains the almost magical power of the Nim programming language.
As a bonus, I’ve selected one of my favourite programming languages and one that is completely different than anything you may have experienced. It’s called Joy and it is a purely functional programming language devised by Manfred Von Thun. Whereas all other functional programming languages are based on the application of functions to arguments, Joy is based on the composition of functions. Every Joy function is unary, taking a stack as argument and producing a stack as value.
There is no video for this one, but I encourage you to read (at least 3 times) the following Rational for Joy by Manfred von Thun.
As programmers we are supposed to constantly seek how to improve your practice, and eventually, how to expand and improve it. By being able to compare and contrast various technologies, you will be able to quickly learn what they bring to the table and in which context they could be used. Hopefully my list helps you in that journey. Good luck!
Are you planning to learn other programming languages in 2020 ? Let me know in the comments!
Still reading this far ? Great! Let me invite you to my YouTube channel where I teach programming using different programming languages. It's free and there is not catch. :)