What is the Best Programming Language to Learn?
Are you still unsure which is the best programming language to start with?
Let me help. Java, or Python. Ok that’s it, thanks for reading…
I’m kidding (well, not totally because in many cases one of these languages will be a great choice for many types of applications).
There are a few things to consider when choosing a language:
1. How well known / well supported is it?
A brand-new language will, for obvious reasons, have less documentation or tutorials available for it than more well-known languages.
If you compare Java (a language that has been around since 1995) to Dart (original version released in 2013) you will find a huge difference in tutorial availability and general discussions about it online.
In these pictures, you will see a search I did for Java and another for Dart on Udemy’s website.
Note that Java returned 1102 results and Dart just 17.
As you can see, you’ree almost spoilt for choose if you want to learn Java. But Dart there are far fewer choices.
I use Udemy, however the same will apply to books, YouTube tutorials or Google searches. The more established a language is, the better supported it will be by way of information you need to have to be able to learn it effectively.
2. What you are trying to achieve?
Are you looking to write a computer game, or create a calculate app for your phone, or getting your drone hooked up to your Raspberry Pi?
What you are trying to do will have a big impact on the language to choose.
For example, C++ is a great language for writing computer games (although may not the best choice for beginners). It’s not such a great choice for writing web applications.
Java would in many cases not be an ideal choice for writing Apple iOS applications but would be great for Android apps.
So, becoming clear on what you are looking to do will help shortcut the chooses so you can make a decision on which language to learn.
3. Your computer hardware
If you want to write an app that works on a Raspberry Pi, then you probably need to have a device on hard. Likewise, if you want to develop applications for the Mac, or iPhone or iPad, then you generally need a Mac computer.
It is possible to use emulators, which is software that runs on your computer to simulate these devices, but it’s generally not the same as the real thing. Thus, your hardware can be a factor in deciding which language.
4. Your Goals
Are you learning a new programming language for fun as a hobby? Or, perhaps you want to get your first job as a programmer. Or, maybe you are an existing programmer wanting to move into another field within programming (like moving from web development to games for example).
Trying out programming as a hobby
If you are doing this for fun, with no short-term plan to move into a career in programming, then you have a lot more options. That’s because here, choosing the wrong language won’t hinder or restrict your career – in this case it does not matter as much which language you choose.
Obtaining your first programming job
In this case, you should be looking at the available jobs to get a feel for what is popular. Try and get a feel for which languages are popular too.
A site like the Tiobe Index can be useful.
As you can see, this website shows the most popular programming languages as well as the previous years’ rankings and an indicator if the particular language is on the rise, or if it’s falling.
Java, C, C++, and Python are the top four languages, are very popular and are either holding their position or rising.
This means any of these languages would generally be a safe bet to learn. However, you still need to factor in what type of industry you’re considering moving into.
If you’re planning a career in writing enterprise applications for big business, then perhaps Java or Python is a better bet than C, or C++. That’s not to say C and C++ don’t have their place.
In general, Java or Python are two great languages for beginners because they are so versatile – Java and Python can be used for Games, business applications, even machine learning, and so on.
Getting a job promotion/moving into a new role
If you have been programming for a while and are looking to get a promotion, or just move into another field, then you have different considerations.
Programmers who know multiple languages are in high demand, so getting a second language under your belt can make a lot of sense.
If you know Java for example, then you will be able to pick up C# pretty quickly, and the same applies if you know C# – you will be able to pick up Java quickly.
But moving from a higher-level language like Java, to C can take longer because you have to deal with allocating memory manually where Java does this for you, more or less automatically.
If you are prepared to take a few more risks and think-ahead you can look at upcoming languages that are not yet fully mainstream and learn them in the hope that when they are mainstream you will be ahead of other programmers who do not yet know the language as you know it.
In 2018, an example of this is the Kotlin language. Kotlin came out in 2016, but it’s really only been in 2018 that it’s starting to gain serious traction due to Google now starting to promote it a lot more for Android app development.
It’s not mainstream yet, but I’d say it’s a safe bet to say it will be pretty soon. Android app development is a huge segment, with tons of career options, so you can bet there are going to be more and more opportunities available to Kotlin developers.
Other factors to consider
What about your available time? If you have 2 hours a week to spend learning a new programming language, then maybe Assembly language is not the best choice for you (as much as it is a fun language). I still have fond memory of writing Z-80 Assembly language programs for my first computer, an 8-bit computer called the Microbee.
Your starting point? If you have never programmed a computer before, then maybe the Perl programming language is not the best language to start, because it’s a very complex language.
If you are just starting out, we’d consider that Java, Python, or C++ are great choices. C and C# are other all-purpose recommendations.
If you want to write apps for Android phones and tablets, then Java or Kotlin are good choices. Kotlin is closing the gap to Java on the most popular “Android” language and Google are promoting it hard. We think one reason for this (apart from the fact that Kotlin is an elegant and frankly fun language) is because they want to move away from Java in the long term due to the legal battles that have had with Oracle (owners of Java).
For iOS apps, Swift is in our opinion the only real choice for iOS development if you are not looking to create cross platform apps.
Xamarin is a great tool, that combines with C# to enable you to write apps that target both iOS and Android devices.
Java, Python, C#, C++ and C are good gaming languages – many, perhaps most commercial games for PC are written in C++.
C# is used more and more for PC games with the added bonus of being able to also target the Xbox console with the same codebase.
Java is still used quite a bit in game development – Minecraft is an example of a hugely popular game that was developed in Java.
Python has been used in many games as well.
For web applications, Java, Python and C# would all be great choices.
Desktop apps Java, Python and C# as well as C++ would again be good choices.
Oh, and this might be of interest to you, if you are finding that programming is too hard for you.