Which programming language should I learn first?
New programmers sometimes ask, "Which language should I learn first?" My answer is step back and ask "What do I want to create?", then pick the language that will be most useful for that purpose.
Most languages share the same basic underlying principles, so learning one language will help you understand most other languages. But some languages have ecosystems (libraries, tutorials, user groups, etc.) built around them that are optimized for a particular purpose, such as web development, mobile apps, games, system programs, etc.
Whichever language you choose, much of your time will be spent reading up on libraries for that language, watching tutorials, and asking questions when you get stumped. You want to pick a language that has a healthy ecosystem to support you.
So, for example, if you want to create a webapp, Python or Javascript are reasonable choices. If you want to create an Android app, then Java. If you want to create an iPhone/iPad/MacOS app, then Swift.
It's also easier to stay motivated if you're driven by a desire to create something you care about, rather than learn a language in the abstract. It will also help you to prioritize, to exclude the things that you don't need to learn right now.
Good advice, rarely said.
However (there's always a however) some languages are more useful for multiple purposes than others. For example you can get a long way with JavaScript and, while it's not my favorite by far, you can write web apps, desktop apps (with Electron) and mobile apps (with PhoneGap although they are not very good). You can even use emscripten to convert some of your favorite C, C++, Java, Python etc. libraries to JavaScript (with some expert level tweaking but at least it's possible), if you even need them, as there is a crazy amount of stuff on npmjs to play with.
Another however: beginners need to wrestle with "modern" (i.e. 30+ year old) concepts and understand them properly if they're going to get anywhere. OOP and functional programming are needed today. But even more basic is procedural thinking, which mercifully can be learned by doing.
Thanks for the fresh perspective 😎