If you're new to programming then without a doubt you've had to ask yourself what is the best beginner programming language so that you know where to focus your efforts. You're about to invest all of this time and mental effort into learning a new skill, so of course you want to make sure you're starting on the right track. I would be willing to bet you that I know what the number one language you're told to start with is after you do a bit of searching on the Internet. I'm here to tell you that the best beginner programming language is not what you might think.
The Elephant In The Room Is A Snake
Let's cut to the chase. The majority of people on the Internet will tell you that Python is the best beginner programming language and essentially leave it at that.
But why is it the best? What criteria are we looking at for the best beginner programming language? How is it possibly the best programming language for everyone to start with? And before you have too much of a polarizing reaction to my Python call out, let me clarify: I think Python can be a fantastic beginner programming language!
That's right. Python can be a great language for learning programming. But my problem with people blindly suggesting to start with Python is that I think we can put in a bit more effort to start us on the right track. So let's jump into some ideas for what we should consider when picking the best beginner programming language.
[convertkit form=5607081]
A Companion Video
If you prefer to watch this content instead of reading (I know that's mostly how I operate, personally!), then you can check out this video on beginner programming languages:
A Case For Python: Simplicity
One great feature of Python is that it's simple and I don't mean to suggest that Python can only be used for simple trivial things. How Python programs are written (the syntax) is very friendly and easy to read. As a new programmer, you can focus more of your mental energy on understanding programming concepts when the syntax is simple. If a larger portion of your time is dedicated to trying to read or format your code properly just so it runs, it's more energy spent on nuances of a language instead of programming concepts.
Let's use a quick comparison to illustrate this point. C++ is another popular programming language, but often C++ shows up on the other end of the spectrum from Python when it comes to the best beginner programming language. Of course, so much of this is subjective, but as you read this article I hope that you realize I am not trying to force you down a specific path. The following is code for "Hello, World!", which is one of the first programs that software developers create, in C++:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
For a program that just needs to write the words "Hello, World!" out, there are a few things that aren't obvious if you've never written a program before. What's #include
on the first line do? What is namespace std
? main
we might guess is the main part of our program, but what does int
mean? If we get a little bit further, we can see the "Hello, World!" text which is what we need to display, so maybe we could infer that the cout <<
part allows us to output something. And what the heck does return 0
do? If you've programmed before, these might be obvious, but every extra thing for a new programmer is one more little barrier to overcome.
Let's look at Python's version of "Hello, World!":
print("Hello, World!")
With the above code snippet, I am not sure I need to spend much time explaining why Python reads more clearly than C++ for this example. It's right to the point.
Is C# The Best Beginner Programming Language?
Nearly every programming article I write about is focused on C#! And look, we all have our biases so I speak about C# a lot because it is the language I am most familiar with and have the most experience with. However, even given the previous example C# is not immune to the "bloat" in the syntax for something as simple as "Hello, World!".
Let's have a look at this C# code:
using System;
namespace MyFirstProgram
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
That's even MORE code than the C++ example! It's only recently that some new language features in C# have allowed us to simplify this code down to the following, so it looks much like Python for simplicity:
Console.WriteLine("Hello, World!");
This is great news for newcomers. While "Hello, World!" doesn't represent the entire syntax of a language adequately, it can certainly make getting started more challenging. For every extra bit of code that needs to be understood to do something seemingly simple, the cognitive overhead increases, and folks might have a more challenging time.
So is Python the best beginner programming language here? Is newer C# now better?
You can decide. And there are plenty of additional languages to consider so just make sure you factor in the simplicity and readability of the language if you're looking to make learning easier.
Too Many Candidates For The Best Beginner Programming Language!
Next up on the list is of course analysis paralysis concerning all of the different options we have for programming languages. It was easier to just stick to Python, right?
But this part I think is incredibly helpful for keeping you engaged in your learning. I advise against just reading articles or sticking to following tutorials when it comes to learning programming. Instead, I strongly advocate that you try to go build things as a means to learn because I find it to be much more effective.
So with that said, think about what you want to try building. Why are you interested in programming in the first place? If you consider the domain that you would like to program in, not only can you try and align a programming language well suited to it, but you'll be more engaged in your learning.
What Is Each Language Good For?
Many languages have popular use cases, but that doesn't mean they need to be bucketed into a single purpose. If you're very interested in trying to put together a website, you might consider a language like JavaScript or TypeScript. These two languages are very similar and given their popularity in this category might be a great starting point. And before you think you're painting yourself into a corner, JavaScript can also be used on the server side with something like Node.js. Python receives a lot of attention from folks in the AI and machine learning space. If that's an area of interest for you then you might find it a good fit for your first projects!
C and C++ are an option even though they are often not recommended as beginner-friendly programming languages. They're a great fit if you are interested in working with embedded devices! And my personal favorite, C#? Much like Java, C# can be used for desktop development, client-side websites, servers, and even mobile!
The key takeaway from this point is that you can align your interests with the first language you want to learn.
What If It's Not Trendy?
This sounds like it might be a silly factor, but I want to highlight why there's value to this. If you decide on a language that is being used less frequently over the years, it's not a matter of it being cool or not... It's a matter of whether it's supported by a community.
When you're trying to learn a language, it would be ideal if:
- You have an active community creating learning resources
- Developers are creating reusable packages and libraries that you can use in your code
- For employment purposes, the language is being used in industry
- The language is actively maintained and developed to receive new features and functionality
If we have a look at the TIOBE Index to view programming language popularity, we can see some interesting trends over time:
Relevant interest in Java has been declining for the past 20 years, slipping from over 25% down to roughly half of that. We can see Python has been on a very steady increase over the past 5 years. Even C++ has been gaining in recent years along with C# trending to its ~2012 high.
So should you avoid anything but the most trending languages as your beginner programming language? Not exactly, but it's a factor you may want to think about to help narrow your selection.
Which Is The Best Beginner Programming Language?
Circling back to the reason you're here and what I set out to prove in this article: The question of "The Best Beginner Programming Language" cannot be answered objectively for every new programmer.
Instead, I think it's important that you factor in some considerations for you to pick a great starting point:
- A language with simple readable syntax is probably very beneficial if you are brand new. This will let you focus on programming concepts.
- Aligning your language selection to a domain in which you'd like to build software will help keep you engaged as you learn. Remember to actually build things and not just read about building things!
- Programming languages rise and fall in popularity. Picking a language with an active community can be very helpful.
But the best thing is that no matter what you pick for your beginner programming language... Almost everything you learn will be transferrable to other languages. So you can't possibly make a wrong decision here if you are learning the concepts so you can apply them generally later!
If you decide to get started in C#, then this article is a great intro to C# and dotnet, followed by building a calculator in C#!
[convertkit form=5607081]