What’s the best/
The answers are never particularly helpful, but how could they be? There is no right answer. Some say you should start with a language like Python because it’s “easy” and you can learn programming concepts without fighting with the language as much as you would in “hard” languages, which is a perfectly valid point. Others say you should start with a language like C because it gives you great fundamentals and gives you better insight into what really happens behind the scenes, which is also a perfectly valid point. Others say you should start with a language like Java because its widely used in industry. All of these answers are equally valid which I feel makes them equally useless. Ultimately the right answer will be whatever works best for you.
But I feel there’s a key point here which those answering the question understand but those asking it don’t, which is that really you should learn all three. The question always gives me the impression that the asker thinks programming languages are hard and they are hoping to just pick the “best” one and ignore all the others. And maybe they have tried to learn programming a couple of times in a couple of languages and found it difficult, and they assume that learning languages is hard. Those who have learnt a few languages quickly realise the distinction between learning a programming language and learning to program.
If you haven’t had this realisation yet, think of programming like driving. When you first start learning to drive, you have to learn how the car handles, how the pedals feel, where the blind spots are, where the boundaries of your car are, when to break before a corner, what a good speed feels like, how far behind the car in front you should be. And at the same time you have to learn the road rules. If you’ve ever tried changing cars early in the learning stage, you’ll remember the feeling where everything is just a bit off. You’re so focused on what the guy in front is doing, that when you put on the brakes you forget that they’re more sensitive in the new car and you come to a screeching halt.
Changing programming languages early on can feel a lot like this too. But once you feel comfortable driving, the road rules are all second nature, you monitor those around you subconsciously with your peripherals, changing cars is easy. Maybe it handles a bit differently, the pedals feel different, but you adapt quickly. If somebody asked you “I want to be a professional driver, what car should I learn to drive in?” you’d think they were stupid. It doesn’t make a difference, driving is driving. Cars are tools for driving, and programming languages are tools for programming.
So back to my point earlier, that really you should learn all three. The reason is not because knowing more languages looks better on your résumé, or because it gives you more potential for work, but because it makes you a better programmer. Learn the easy language which lets you try new things quickly without fighting with the language. Learn the low-level language and all the dirty hacks and one-liners that give you a better understanding of what goes on behind the scenes. Learn the heavy duty language which helps you build large systems in a more manageable way.
If the reason you wanted to get into programming was to make fun little programs and automate stuff, maybe the easy language is best for you to start with. If the reason you wanted to get into programming was to learn how computers work, maybe the low-level language is the best for you to start with. If the reason you wanted to get into programming was to build something big, maybe the robust language is best for you to start with. Start with whatever helps keep you motivated, because staying motivated is one of the hardest parts of learning anything. But once you feel confident in that first language, don’t stop. Be curious! Because curiosity is the key to pushing the boundaries of your comfort zone, and ultimately to expanding your knowledge.