loading...
Cover image for Programming Languages To Learn In 2020 To Boost Your Career As A Software Developer

Programming Languages To Learn In 2020 To Boost Your Career As A Software Developer

zaiste profile image Zaiste ・5 min read

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 Programming Conference

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

Alt Text

Reason is a new syntax (and a toolchain) built on top of OCaml . It provides functional and object-oriented features with type-safety and focus on performance. Its syntax is similar to JavaScript. The intention is to make interoperation with JavaScript and adoption by JavaScript programmers easier. Reason can access both JavaScript and OCaml ecosystems. OCaml, a functional programming language with infered types, was created in 1996. Reason builds upon the rock solid type system from Ocaml while focusing on both simplicity and performance.

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

Alt Text

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

Alt Text

Dart is an object-oriented, garbage-collected programming language with inferred types. The language supports various compilation methods. AOT (Ahead-Of-Time) compilation allows Dart to produce native code while JIT (Just-In-Time) compilation significantly improves the development experience with features such as hot-reload. Dart can also compile to JavaScript. Since the version 2.7 the language also supports null safety, i.e. accessing object references safely without triggering null reference exceptions. Lastly, Dart is the language of Flutter, the mobile (soon web) framework that’s taking the world by storm.

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.

Nim

Alt Text

Nim is a statically typed compiled programming language with a syntax inspired by Python. It was designed to be as fast as C and as easy to read as Python. Being a compiled language, Nim is fast. It combines concepts from languages like Python, Ada and Modula. Some describe Nim as an easier to learn Rust or as a faster Python. It can be compiled to C, C++, Objective-C or JavaScript. It offers both automatic memory management (via Garbage Collection) and manual memory management. What sets Nim apart from other programming languages is its metaprogramming features with a powerful macro system in particular which allows manipulating the syntax tree to write custom DSLs.

The lanaguage was created by Andreas Rumpf.

In the following video, the creator himself, explains the almost magical power of the Nim programming language.

Bonus: Joy

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. :)

Discussion

pic
Editor guide
Collapse
keygenqt profile image
Collapse
scotthutchinson profile image
Collapse
zaiste profile image
Zaiste Author

I have a deep admiration for F#, and for ML languages overall. I was in fact debating between Reason and F# and eventually went with the former. F# is without a doubt a great candidate to learn in 2020!

Collapse
ssimontis profile image
Scott Simontis

Definitely F# over Reason. F# may be a small, tight-knit community, but Reason just seems dead. Libraries seem to be going stale faster than new, innovative ones are released.

Collapse
willyboar profile image
Willyboar

I was tried Nim 2 months ago and I think I will stick with it.
You can be productive in the very first days. Nim is cross-platform and recently hit v.1.0.0 (currently 1.0.4).
The community is quite small but very helpful with a family atmosphere around.

Collapse
zaiste profile image
Zaiste Author

Great to hear that! What's your primary programming language? I'm curious about your experience learning Nim

Collapse
willyboar profile image
Willyboar

I am not a professional developer. I am a hobbyist web developer.
I started with PHP, then Ruby and Rails and the last Python. Then I became curious about compiled languages. I tried a little from rust, go, crystal but found Nim was better for me. I would love helping to improve the web dev area of Nim.

Collapse
andreidascalu profile image
Andrei Dascalu

Almost totally agree with the list. Rust is on my list too, though I am puzzled to see Rust and not Go as well, since concurrency gets mentioned.

Collapse
zaiste profile image
Zaiste Author

I feel Rust is (just slightly) underrated while Go is very popular. At least that's my impression, e.g. many of my friends use Go regularly, but there are only a few who use Rust. In the article I wanted to promote those less popular languages according to my sentiment.

Collapse
sathishsms profile image
satheesh

How about golang , wasn't not faster than rust ?

Collapse
strottos profile image
Steven Trotter

Golang faster than Rust? I'd be amazed if that's true given Go's GC vs Rusts static memory management. Do you have any sources to support that statement? I'm not being aggressive, I'm happy to be proven wrong, but if you're making a statement like that it needs some backup. A quick Google certainly disagrees: benchmarksgame-team.pages.debian.n...

Though there are good reasons to choose go above rust (and vice versa) speed I don't think is one of them.

Collapse
zaiste profile image
Zaiste Author

For the speed it may depend how you measure it. For me, golang is very popular right now. The idea for the article was to promote (more or less) emerging languages. golang is a great language nonetheless

Collapse
peacefullatom profile image
Yuriy Markov

Cool article! Thank you! 👍
PS
You have a typo "pwoerful" 🙃

Collapse
zaiste profile image
Zaiste Author

Fixed. Thank you!

Collapse
rodol profile image
rodol

Another typo: "lanaguage"

Thread Thread
peacefullatom profile image
Yuriy Markov

I've missed this one! Thank you! 👍

Collapse
peacefullatom profile image
Yuriy Markov

You're welcome!

Collapse
ahmedabdo97 profile image
ahmedabdo97

What about Julia rarely see anyone talks about it

Collapse
zaiste profile image
Zaiste Author

Initially I wanted to include Julia, but then I just decided to keep the list short. Julia needs more attention, indeed. I should add it to the list. FYI Stefan Karpinski was at PolyConf in 2015.

Collapse
rodol profile image
rodol

ATS! I am currently studying it. It is one of a kind. Functional programming with performance competitive with that of C, built upon dependent types, theorem proving, and linear types. There are loads of cool features, and it is being actively developed.

Collapse
hshar7 profile image
Hayder Sharhan

Are you seriously not mentioning Kotlin?

Collapse
lesha profile image
lesha

And mentioning dart for some reason

Collapse
milosztadrzak profile image
Miłosz Tadrzak

There are a loads of not-mentioned-programming-languages out there.
Why do you think Kotlin should be listed?

Collapse
u8nc profile image
MiAn

Its on my list to investigate Kotlin to modify Swift code for iOS ( and MacOS ) projects for Android

I've given up on Flutter. It messes with my mind too much and when I'm checking back and forth what native code it produced. It's actually faster to maintain 2 codebases.

Collapse
hshar7 profile image
Hayder Sharhan

I mention kotlin in particular because it's still a new language. A new language that has already taken over Java in the realm of Android and is on its way to become the go-to language of the mobile world with kottlin multiplatform.

Pivotal has already announced they fully support kotlin for spring framework with DSLs and documentation and other ways. This means that new server side applications are going to be written in kotlin, not Java. And many old applications will be converted over.

In the realm of native compilation, kotlin native is already making its way to rasberry pi and also into mobile optimizations that better run natively than in jvm.

Finally, KotlinJS is still early but has huge potential to allow us to program webpages in kotlin then transpile to js. Which means full stack kotlin could very much be a reality in the coming years. Notable projects are create-kotlin-react-app which allows us to create react apps with full kotlin DSL. Another project that can lift this up to the sky is Dukat which would allow automatic interface generation for typescript libraries in kotlin!

So my friend milosz, would any other language compete with kotlin in terms of future career boosting!?

Collapse
assertnotnull profile image
Patrice Gauthier

Sad to not see Elixir mentioned.
Here in this case if you learn Rust and Elixir, you can also invoke Rust from Elixir using Rustler. You get an already fast fail-safe distributed system that can take advantage of Rust.

Collapse
stewartjarod profile image
Jarod Stewart

These are great for 2020! Thanks for this list and the run downs 👍

Collapse
hugoliconv profile image
Hugo

I've been looking for a new programming language to learn. Right now. I only know JavaScript and I was thinking about giving a try to Elixir or Go

Collapse
zaiste profile image
Zaiste Author

Both are excellent choices. If you are still hesitating, I'd encourage you to start with Elixir.

Collapse
namnhong profile image
nam giang

One thing common in all posts of this type is that I don't understand what problems are these new fancy languages trying to solve!

Collapse
eldare profile image
Collapse
strottos profile image
Steven Trotter

Great article, I'll check out some of the languages I don't know. Thanks.

Collapse
ottodranik profile image
Y.Shepard

Sorry, but Dart? Seriously? In my opinion Dart become completely unnecessary after es6,7 and especially typescript were introduced.

Collapse
i_ambenkay profile image
B_aaS

I strongly disagree with this. With Flutter, Dart will never become unnecessary. Have you seen the widespread adoption of flutter as the goto for cross platform mobile development?

The language in itself draws most of its concepts and relevance from existing languages, but this doesn't make it redundant. It makes it a potential replacement.

Collapse
eldare profile image
Eldar E.

IMO, Dart is a deprecated swift/kotlin, and it’s a poor language for Flutter.

Collapse
desirepeeper profile image
Ali Almohsen

Nice list, thanks for the article! In 2020,I hope to learn Reason and further my experience with Go.

Collapse
rspacecode profile image
Rajesh Gauswami

I was thinking that i will get node in list.but disappointed any reason for not including it.

Collapse
norbertsandor profile image
Norbert Sándor

"node" as a programming language? :D

Collapse
choallin profile image
choallin

I am experimenting with Elm right now and think it is really awesome so far!

Collapse
intermundos profile image
intermundos

Interesting, interesting list.

But where is Crystal in this list?

Collapse
u8nc profile image
MiAn

There was a saying in the Forth community in the '80s. If you've seen one Forth you've . . . seen one Forth.

Joy sounds like one of them.

Collapse
k2t0f12d profile image
Collapse
0xd34df00d profile image
0xd34df00d

Idris? :]

Collapse
shikkaba profile image
shikkaba

So. Many. Languages.

Frustrating.

Some comments have been hidden by the post's author - find out more