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.
Our recommendations
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.
19 Comments
Great insight to all the options available for choosing a direction to follow. This helps in narrowing down what language to learn. Will be signing up for your classes next. Thanks!
Thanks Ray for the kind words, it’s appreciated, as is the support for my courses. Enjoy the programming!!
Hy Ti,
Great advice. I want to learn both Java & Python. Will start with Python then learn Java.
I bought your Udemy Java course, which I will use to learn Java.
Currently, I know HTML, CSS & am working on Javascript.
My website sucks. Used WordPress. I will revamp my site soon, when I have time. I rather code as it is faster than use WordPress, as it is restricting. Give me comments regarding my choice of Python or Java first, if you think its necessary. Thanks again for the advice.
Benjamin
Hi Benjamin,
Either Python or Java are good choices – it depends on what you are trying to achieve. In general, I’d say Python is probably easier to get started with.
Both languages are great to add to your life skills.
In my opinion I think you are better off using wordpress than coding your website from scratch yourself.
It depends on what you are trying to achieve.
If you are doing it for fun, fair enough, but wordpress is so widely used and has so much flexibility that its hard to not use it – of course there are on going concerns with security and so on.
It might be a good exercise for you to code a website in Python or Java (with Javascript for the front end).
That would be an interesting project.
Thank Tim for the good advice
Hi Ben. Though Tim is not wrong. I lost my entire WordPress site… gone one day with security pugins and backups included. All of the time I invested in I maintaining security on the site was pointless. I am looking at Web2Py, and Jekyll. I found (for me) the time investment into HTML, CSS was better that the WordPress learning curve. Just my view, which is always keep it simple…. But what is simple? To keep in context Im NOT using commerce or even blog. (BTW both Web2Py and Jekyll are blog friendly.). In any case all my best to you what ever you choose.
What about JavaScript?
I heard a lot of companies are seeking qualified applicants who know JavaScript and 3 primary components of JavaScript:
1) ReactJS
2) NodeJS
3) VueJS
AngularJS is in close proximity.
Your thoughts?
Hi Pavon,
Javascipt is a great language for web development, and Node.JS and ReactJS are both well known and supported.
AngularJS as well is right up there – it really depends, but in general you probably won’t go far wrong with any of them.
Javascript is a good language to start with.
Hi Tim,
Your Udemy courses are really awesome, I have started with your Java and have learnt the MVC concepts, Springs, Spring Boot so far.
I have learnt all of those, for a new job role.
But I dont see a great demand for those skills now a days.
Can you please help me or guide me on what skills in my resume will give a value add. So that I can land into a new carrier with lot of challenges, and of-course some money.
Hi Tim,
Nice article.
By the way , just want to know what is your opinion about Golang ?
Do you think Golang will be mainstream one day ?
I am thinking to learn Golang for web development and artificial intelligent (having Java as my current language).
Also, commenting about Kotlin, I just don’t understand why Google promotes Kotlin instead of their own product (Golang).
Cheers.
Jimmy
Hi Jimmy,
GoLang is a great language. I hope to release a course on it someday.
I agree, it’s a pretty cool language.
The reason they (Google) chose Kotlin over GoLang is that GoLang is not designed to work with the JVM (Java Virtual Machine). Kotlin slots right in to that and is a good choice as a result.
There was a port I believe to get GoLang working in the JVM but apparently it has been discontinued.
Regards
Tim
Thank you for the wonder information.
I started with HTML,CSS and Beginner JavaScript. I will say JavaScript is both easy and difficult to understand due to its dynamic nature .My interest is Ruby,Java and C# (ASP.NET) .
I enrolled in your Java course to enable me study Object Oriented Programming, as a beginning JavaScript is not an Ideal language to start with .It is highly forgiving language that makes it very difficult learn another language when you are used to JavaScript.
My advice is do not follow any language due to the pay or popularity ,make a plan and pick which is easier for you learn , once you are used to any language picking up another language is easy . Most languages is all about syntax. I will complete my JavaScript when I fully understand Object Oriented Programming.
Thanks for dropping me a comment here!
I agree with your assessment of Javascript – if you are not careful it can lead to bad practices.
My advice is to generally focus on the best language that is used for the particular area of programming you are interested.
For example if doing front end web development than probably JavaScript is one of the better tools.
I agree with you on Pay and Popularity – Pay alone should not be a criteria – Popularity can be important though – You don’t want to pick a language no one is using because that means you will have future opportunities.
If you are just starting out, picking a popular language like Java, or Javascript, or Python would all be good choices.
Regards
Tim
Great article!
I strated with C++. My brother recomended I do. According to him it makes learning Java and Python easier to learn.
Hi Louis,
Thanks for leaving a comment. I would agree with your brother that if you learn C++ then Java (and to a lesser extent Python) will be easier to learn.
However, I’d also say that C++ is harder (much harder) to learn than Java or Python.
All 3 are great languages!
Hi Tim,
I really enjoyed your article. I have started learning your C language course on Udemy. Further, I want to learn languages related to artificial intelligence and data analyst. Can you help me regarding this?
Thank you,
Hi Shobit,
I’m glad you appreciate the article, thank you.
As for your question, I suggest you watch these videos.
https://www.youtube.com/watch?v=z_8Hocokycg&list=PLXtTjtWmQhg1YRG0L0dIT5B22Utujaq20
You will find your questions answered including videos relating to age and also transitioning to another career – I am putting out these videos to help as many people as possible.
Both Java and Python are great for Data Analysis / Artificial Intelligence – If I were you I would get better with Java first, and then consider learning Python at that time.
Regards,
Tim
Hi Tim,
I want to go with cyber security. So which programming languages do you suggest and what do you want me to learn for cyber security. Please give me some guidance.
Hi Praneeth,
The programming language used to learn Cyber Security would be determined by your specific interests and the type of CS work you wish to learn.
Tim believes that it is critical to first master a core language. You could start with Python, C/C++, or JavaScript.
https://learnprogramming.academy/courses/complete-python-masterclass/
https://learnprogramming.academy/courses/beginning-c-programming-from-beginner-to-beyond/
https://learnprogramming.academy/courses/the-complete-javascript-course-for-developers/
https://learnprogramming.academy/courses/c-programming-for-beginners-master-the-c-language/
I hope this helps.
Regards,
Jp
LPA Admin
on behalf of Tim Buchalka