"What programming language should I start off with?"

This is a frequently asked question from people who are curious about programming. So here's the short answer: it depends.

In my experience with various programming languages such as assembly, C, C++, C#, Java, JavaScript, Python, TI BASIC, Visual Basic, Ruby, Bash scripting, Windows Batch scripting, and even Brainfuck (though this was a curiosity), the language itself doesn't really matter. Over time you learn a lot of things that can carry over to other languages, and you find that a lot of languages have basic characteristics. There are other characteristics that can help aid in making applications, but there's nothing that, without anything else taken into consideration, makes one "better" than the other. A programming language I'd call is an implementation detail. Meaning, it doesn't matter what language you use, you can probably realize what you want.

But you've shown an interest in programming, and obviously you need a programming language to start this journey of learning how to code! So for the sake of putting down a language, what should you learn? Well to ask another question: what are you interested in doing? This will help narrow down what you should focus on because certain categories of applications prefer one language over another for arbitrary reasons. For example, want to get into web app development? Start learning HTML, CSS, and JavaScript. You may not have to use the last two, but it certainly will help. Want to get into Android app programming? Start with Java. iOS app programming? Swift. Windows app programming? C#. Don't know? Just pick a language and go from there.

However, if you're fresh to programming, I would argue not to care so much about the nuances of the language. I'd argue that any language worth its salt will allow you to do the following:

Create symbols (or names) to represent data

Freely operate on that data using basic math and bit-wise operations

Allow for conditional control, using things like or similar to if-statements and loops

Allow for controlling where the program can go, using things like function calls or jumps

And many widely used programming languages have these features.

Okay, may be you're still wracked with decision paralysis. If you were to ask me which one to use to start off your journey into the world of programming, and I'm sure I'll draw the ire of a few people, I would have to go with Python. Why? A couple of reasons.

The first is the tool chain, so to speak. I don't believe the journey to programming should start off with the entire process of building the program. It's nice to know, but anything that gets in the way of the person jumping right into coding adds resistance. They likely just want to code and see results right away which is encouraging and can build even more curiosity. While you can select another language that has an IDE, those can be quite intimidating to tread through. You could argue "if they get into programming, they should be using industry standard tools to leverage the experience if they want to make this into a job", okay. But that's like telling a kid who's interested in cinematography to start with a $30,000 RED camera so they can get experience on the industry standard, not their smartphone because "who makes serious professional films using a smart phone?"

I digress though. So what makes Python's tool chain great for beginners? To start, it has an interpreter. This makes it much quicker to jump into programming than say using C. If all you want to do is print the standard "Hello World!", this is literally what you have to do in Python:

Open a command line

Type in python to start the interpreter

Type in print("Hello world!") in the prompt

Doing the same thing in C would easily take twice as many steps. Whether you think so or not, this can be intimidating for some people. And if you go "well if this intimidates them, then they shouldn't be programming." Well going back to the cinematography example, if buying a $30,000 RED camera is intimidating or even getting something like a beefy computer with one of the widely used video editing software, should they stop pursuing their dreams?

And when you're ready to move onto making Python files, you don't need to do anything different. It's just invoking python and the file in question.

Secondly Python's multi-paradigm flexibility allows you to adjust how you want to code. You can start off being procedural which I argue is quite intuitive. If you want to do object oriented programming (OOP), Python supports that. You can group functionality into modules. There's no memory management to think about. Data types, while important to know, don't have to be explicitly defined. When I started working with Python, I was surprised how easy it was to work with and get something done.

However, Python isn't a perfect language. No language is. It has its downsides as well

Python is an interpreted language. So if performance is your goal, Python isn't for you. However, I'd argue while the pursuit of performance is fine, prove your app works before making performance your goal.

While Python doesn't require you to explicitly say what a variable is (known as dynamic typing), it can cause some trip-ups if you're not careful at best and you may not even know what type of data the variable is supposed to handle at worst (though if you need to, just have Python spit out the variable's type). And since Python doesn't check the data type until the script is running, you may run into issues where you're trying to do something with two different data types, like adding a number to a string, and the thing throws an error and stops as a result.

The way Python handles certain OOP concepts is not intuitive, but I'd argue you shouldn't be touching OOP until you've done some reasonably complex apps.

But to get the basics down, Python offers a fairly low bar of entry. And once you have the basics down, then you can move onto more advanced topics and other languages.

At the end of the day though: The language doesn't matter, what's important is to know the basics that programming in general requires. However, if you have a goal in mind of what applications you want to do, it might be better to start learning the languages used in that field first.

2 Comments

Recommended Comments

I started with Java and that was kinda hell at first. But it really gets you to think harder or look harder for solutions to bugs or issues with you're code. Especially starting with J creator before discovering the beauty that is Eclipse and some web based solutions.