Loaded thread by OP. Guys here are gonna be into the low end stuff, C/C++. Maybe some Java/C#/Python. Gonna give you guys some color from the opposite side of the spectrum. Node.js for event driven, Go, F#, Scala for big data.
The truth of it is if you become proficient in one language it's not a huge deal to teach yourself others. I'm also a Python indent hater, but it only took me a couple days to go from never having coded in Python to writing backtest code relatively quickly and I don't consider myself a programming guru. Arguing about the best language is a silly exercise we all engage in while knowing full well that given a couple weeks and access to stackoverflow any of us could do our work in any language.
That is not far from the truth. However, I know very smart people that can do almost anything in basic, when they tried to pick up C, they just couldn't do it. I have seen exactly the same thing today when people try to pick up declarative programming. And, try to teach an older programmer to read Lisp or Clojure. An overwhelming number of them just can't get the hang of it. That is what Paul Graham's point is: People don't program in a language because of its expressiveness, but because it is in their comfort zone. So yes, but resoundingly, no.
I am actually beginning to wonder if people should be taught Category Theory or Topos before they touch a programming language. Then all programming languages would make sense.
Isn't it true that Python's way easier for post data analysis things like graphing or GUI? What would you guys recommend for C++ GUI?
A lot of Python apps use PyQt for the GUI which is just a binding to Qt. Qt in turn is a C++ package and used in many, many C++ applications. Like most power tools Qt takes some getting used to but it has a rich set of add-ons for graphing and other GUI stuff.
I would say if you know a C(ish) language it's not a huge deal to teach yourself another C(ish) language. For example, going from C to erlang is completely different. Also, going from java to python people tend to think in java terms and everything is an object. Or going from perl to c# you might have a lot of regexes and static methods