Magnitus: C++ is pretty low level. It's fine, but you might also want to investigate Rust. It's not as well established, but from what I learned so far about it so far, it's probably a safer programming language. You are less likely to shoot yourself in the foot with it.
Rust is nice in this context because it does turn certain errors that would be hard-to-debug errors in C++ into compiler errors.
However, there are a couple catches:
* Some data structures, particularly those involving circular structure, require unsafe code to work, and when you use unsafe, you're throwing away the safety advantages of Rust for that bit of code.
* Safe Rust code can still leak memory, as it's been decided that leaking memory is still "safe". (Memory corruption, on the other hand, isn't considered safe.)
Magnitus: It's more minimalistic than a lot of other programming languages, but I'm getting rather fond of Golang. It's like the Python of compiled languages: Simple, straightforward, no-nonsence, gels with your brain. Nothing is impossible, but you are less likely to hit a codebase that got overengineered to hell way beyond the complexity of the problem it was trying to solve in Golang. In terms of ecosystem, it's mostly established for devops tooling, self-contained commmand line binaries and microservices.
I used to be a fan of Javascript, but I think the influx of people wanting to turn it into their other favorite programming language made its ecosystem a hot mess. Still fun to do a home project with ES5 and ramdaJS, but if you end up working with JS as part of a larger team, they'll probably impose many layers of complexity on you that you won't much care for. They lost me at the part where they wanted a transpilation layer completely separate from the core programming language that transpiles your thing in the original language just to get some work done. You want a compiled language with types (not strictly necessary imo, but I know some people get religious about that)? Just use a compiled language with types already!
The Java programming language, when taken on its own, is fine. However, its ecosystem (JVM, Spring, Hibernate, whatever is the latest enterprisy server framework of the day) is a mess in runaway complexity. If you want to work in large companies, it will open many doors (however, expect to be working more on maintaining older established codebases rather than new greenfields projects), but if you want to "change the world" or just work with things that are elegant, stay away.
I haven't touched C# since pre-2010, so can't comment. It's fine, probably, I guess.
Worth noting that these are all garbage collected languages, and are therefore in the same situation as Python.
Magnitus: Personally, I think people have overdone with with OOP. There are other things.
WinterSnowfall: Wholeheartedly agree. It irks me beyond reason when I see people using OOP where it makes no sense to use it, just because it's the thing they've been taught to worship.
https://gist.github.com/lolzballs/2152bc0f31ee0286b722Magnitus: I used to be a fan of Javascript, but I think the influx of people wanting to turn it into their other favorite programming language made its ecosystem a hot mess. Still fun to do a home project with ES5 and ramdaJS, but if you end up working with JS as part of a larger team, they'll probably impose many layers of complexity on you that you won't much care for. They lost me at the part where they wanted a transpilation layer completely separate from the core programming language that transpiles your thing in the original language just to get some work done. You want a compiled language with types (not strictly necessary imo, but I know some people get religious about that)? Just use a compiled language with types already!
The issue is that, on the web, you really don't have a choice. Web browsers understand JavaScript (and WebAssembly); they don't understand any other programming language. So, when writing front-end web code, you have to use JavaScript or a language that can transpile to it.
With that said, with WebAssembly it is possible to use other languages (in my current project, I use pyodide to run Python code in the web browser), but doing so can be sub-optimal, and you'll still need to have some JavaScript code in there somewhere.