Looking to learn to program in 2020? Maybe you want to start working from home as a developer? Maybe you want to start your own small development business?
If you were to pick a programming language to learn, which would it be. Currently there are so many languages out in the wilds of the Internet with more growing.
Here are my top 5 programming languages to learn in 2020.
Starting the learning
Here we are, half way through 2020 and currently in lockdown. For most of us, the last couple of months has meant “Stay Home, Stay Safe” which has given us lots of time we would not normally have.
So, you may have decided to put this time to good use. Maybe you’re already a computer programmer and looking for which is the best language to learn to continue your career?
Maybe you’re looking to learn your first computer language and trying to decide on which one will be the best?
What ever your situation, choosing the right language depends on what you are looking to do.
Each of these 5 languages have strengths in what applications you can create – though you could potentially create any app in any.
Some will be more specific to desktop, some mobile and some online applications. Though all will have liberties available to do all these.
Ok, let get into the languages.
C# (C sharp)
C#, pronounced C sharp, has been available for quite some time now. First released in 2000, it has grown in popularity and functionality.
From a personal perspective, I first used C# 2.0 back in 2006 to quickly prototype screens and applications, using Microsoft Dev Studio 2005.
Since my first application I realised it was going to be a great language – and fairly easy to use; though I was coming from a C++ background so I already had a lot of knowledge.
C# is, in my opinion, quite an easy language to get started with. There is structure you need to learn, such as classes, objects and how your code should be written (such as what method starts your application).
Then, when you have the basics, you can dive more deeply into the more powerful elements such as Generics and Delegates. Understanding how to create your own types, how to use delegates to choose what methods are called and so on – will enable you to create more and more complex applications.
The great thing about C# is, that these days you can use it for far more than just desktop applications. You can create cloud applications using ASP.NET. You can create cross-platform mobile applications using Xamarin
Choosing to learn C# will give you knowledge of a programming language that you can use for most types of application build. Us C# and XAML to build your desktop application. Use ASP.NET to build your cloud application and use Xamarin to build your mobile applications.
In each of these the fundamental core C# is the same – just the specific structures of code and calls differ.
My personal, first experience with Java was back in 1995, which was the year Java was released. I was still at University and I was doing a guided tour for new prospects. Some of the final years had written their projects in a new language at the time called Java.
I remember at the time that this Java language was to be used mostly for creating applications you were to use over the Internet – at least that was the first impression given to me.
I then continued my study and used Java myself in my final project. I also own, what I consider, the best-named book in Java called Kick Arse Java (quite old these days).
Java is now one of the most used languages – which you can use to write anything from cloud based, desktop based or mobile based applications.
One of the powers of Java has always been that it runs in a virtual machine; the JVM.
This meant that you could write your code on a Windows environment and then run it on a JVM on a Unix machine or any other machine that has a JVM (which is most Operating Systems these days).
Java, in my opinion, is more complex to learn than the above mentioned C# – and I would say you could create the same application in either. However, Java has its strengths (and weaknesses) which makes is a popular language in the programming market and one that should be on your to learn list.
Over the years since this first version it has grown to power many dynamic webpages (and some online applications). As the language has grown in capability – a number of additional extensions have grown.
As an example, I recently used the face-api.js to implement a simple script to detect what mood the person was in. It uses the local webcam, detecting the face, breaking it down to landmark points then determining the mood.
To use this library in my application was just a few lines in a function. This can then be loaded into a HTML page and used on a webpage.
[Python](https://en.wikipedia.org/wiki/Python_(programming_language) to me is all about automating the boring stuff – although it’s much more than that. Personally I’ve not coded as much in Python that I would have liked.
I started to learn Python around a year and half ago for a project and have not been back to it in the last 10 months or so – as no projects in Python.
However, I think Python is a great language to learn – even maybe an easier language for a first language.
Personal experience – Python allowed us to quickly put together applications that needed to gather, change and output data. This makes it really useful for creating programs to automate tasks – especially the repetitive, time intensive or boring.
The Python language first appeared around 30 years ago (at the time of writing this) – back in 1990. It’s grown over that time. Many extra libraries to add functionality – like most other languages.
The other things to note about this language is that it’s an interpreted language (so need the Python runtime on the system to execute), the philosophy behind Python is to beautify the code (which means structure is a little different) and it is not a tightly coupled language – so you don’t have to declare what type a variable is, you can just assign values to it.
Python is still used at many companies these days – more recently, one large company I was working for started to move more into Python. It’s a great language to have in your list.
Dart is a new language to me; one that I am learning at this moment.
Dart has been around since 2011, so the youngest in the languages listed here. Also, unlike the other above languages – if you were looking for jobs in programming – there seems to be, at the moment of writing this article, far less (and in some cases none) jobs using Dart.
That being said, as it is a much younger language there is a probability that it will become much more used in the future as we concentrate more on mobile.
Dart is a client-optimized language for fast apps on any platform
Dart has been designed as a language to allow the development of cross platform applications. It has also been designed and optimised for UI development, develop with a programming language specialized around the needs of user interface creation.
One more thing to note. Dart was developed by Google.
I’ve personally started to learn Dart as I wanted to use [Flutter](https://en.wikipedia.org/wiki/Flutter_(software) for platform mobile development.
Bonus Language – C++
I couldn’t write an article like this and not mention C++, but I have not added it in the top 5 as I would not suggest it as a first language to learn.
I’ve personally worked with C and then C++ since 1996 and I love this powerful language. You can basically do anything with C++. I’ve worked on backend servers, front end UI and even code the powered a dynamic webpage.
It can also be coded on multiple platforms – although you need to compile using a native compiler and each OS has some slight differences in the extended libraries.
The language C++ has gone through a number of changes, even more in the last 20 years with C++03, C++11, C++17 and C++20 which is the next version as of the time of this article.
In my opinion, the two releases have added some far greater functionality bringing it right up to date as compared with many of the other languages out there.
If regards to careers – although C++ is the oldest of the languages listed here – there are still many roles and opportunities out there. Some in maintaining all the old code base (there is so much code in C++ that it may never go away) and roles writing new applications are still out there.
C++ is a language I am passionate about because it is my stable. However, I can’t add it to the top 5 because I believe the above languages are the best languages to learn through 2020 – and allow you to start a journey into the software development world.
Start the journey – working from home as a developer
If you are looking to start a career as a developer or entrepreneur, then these languages above are the ones you should be looking at.
Choose only one and learn it well would be my only other suggestion. Fragmenting your learning across multiple languages doesn’t work well. Learn one well, then if need to move to the next. Depending on what you want to develop will choose the language to learn.
Personally, I am looking to gain more in UI development which is why I chose Dart.