The question of 'What programming language should I choose while starting off?' is a fairly common one. Whether you're in your freshman year at college or just getting started exploring the amazing world of computer science, it's often you'll get this question.
I also had the same question in my mind when I started learning programming and the one word answer is it doesn't matter.
I know its not the most amazing answer, but let's take some time to understand why it doesn't matter. Mostly all of the programming languages have similar syntax(the way they are written) or at least share the core fundamentals. Meaning, if you pick any language and master it, you can switch to any other without much difficulty, cause you know that you'll be using the same principles.
Also, it's important to keep in mind that programming is far more about how you think and solve problems than actually writing a random bunch of characters.
That being said there are still ways you can choose the first programming language that will help you a little more than others (talk about hypocrisy, duh).
Here 'purpose' means what is your purpose to start learning a language in the first place, is it because you want to develop certain things, is it because you'd like to be a competitive programmer, or is it simply because you want to start learning a language.
Your choice will vary depending on your purpose.
Also, if you're one of the people who doesn't really have something in their mind the Generic way discussed later would be the best bet.
The amount of time you have to learn a particular language may also impact your decision.
Maybe you've got an assignment to complete and you need to implement something, you're better of to do it with Python rather than let's say C#. Just cause python has an easier learning curve and is faster to grasp.
Now, this one's something you can consider but shouldn't impact your decision. It's simply better if you've got some great peers learning the same stuff that you are, it keeps you motivated, throws a little bit of competitiveness and you always have someone to look up to if you get stuck.
P.S. Even if you choose a language on your own, please do read the Step - 2 in the generic way.
Also, if you are learning something and are looking for peers, there are amazing communities out there where you can find a lot of like-minded people to learn with.
I'll link some of them below
There are also, many communities that focus on a particular language/tech stack. They're just a search away so, do look for them.
Now, let's discuss the generic way of choosing a language. This is perhaps the most straightforward and fail-proof way of selecting a language.
I'll break it down in a couple of steps.
Choose one of these two - Java / C++
and start learning them, learn the basic syntax, the programming fundamentals and all of the sweet things.
Let's discuss a little on why only Java/C++?
Both of these languages are excellent languages to start off as they have the perfect blend of understandable syntax, and weird looking things, as opposed to Python which has a really simple syntax.
But why would you wanna start with something difficult? Because it will ultimately make it easier for you to switch later if you want to.
It will also help gain deep knowledge about object-oriented programming which is one of the most important concepts in computer science.
Also, almost all of the companies have at least these two languages as an option for their interview rounds. So, you're also staying safe, and not to forget these are the most used languages for competitive programming.
Once you're comfortable with the language start learning Data Structures & Algorithms. I can't stress how important it is to do this. Everything that you'll do in computer science will fundamentally fall back to this. Whether you're developing a state of the art application or are competing with 1000s of students in a coding challenge. The knowledge of DSA will stick with you and make you a better programmer.
Explore the field of computer science, try out a couple of things, see what interests you the most and then see what are the pre-requisites that particular technology has and start learning it.
In the process, you'll observe how all of the things you learn are smoothly getting transitioned into whatever you're learning
Be Awesome. You now know what to do, so go out there are build amazing things.
That's it for this post folks. Hope you got some insights.