I met my first real programming language in college, Java, and I still recommend it to any beginner. It's great for grasping OOP concepts, algorithms, data structures, design patterns, and other problem-solving approaches that you can carry on to implement in other languages. I did some work in enterprise systems and Android during my first year.
Then I had to study Objective-C to make iOS apps, but I also picked up some things about C and I'm actually reading the K&R book now to know more. I think that C is a great language to learn after Java because it gives you an insight of what the Java syntax hides from you, but does anyway in the compiler level.
The thing now is that I don't know what I'm going to do next once I'm done with C. For me, I code because I want to build a product I can someday build a company with, so I don't really have a drive to learn the open web stack in depth (I already have mobile for front-end). I guess I'm just gonna go back to mastering the algorithms and some maths. Or does anyone have advice for me what to do next?
I started in Microsoft development and saw code that made me cry. I switched to Java because developers with self respect wrote elegant code in Java. But Java frustrated me because of the effort to result ratio; for the amount of time I would spend coding and configuring, I had very little to show for it. I like to build things quickly and see people interact with them heavily. Javascript gives me both of these.
And it's becoming more adopted as the lingua franca of app development; I can write server side code, rich client web interfaces, and native mobile apps using nothing but Javascript as the coding language.
But as you probably want to slightly more concrete list I would go with JavaScript, Java, Clojure, Objective C, Ruby, SQL, Prolog. In that list we have a few of oo languages of varing purity, a few scripting languages, a couple of logic programming langs, and a lisp. Something for the enterprise, something for the academics, and something for the startups. Something for the web, something for server and something for your desktop and phone. You'll end up well rounded, and have a tool for most situations.
Average developer will mix up everything and won't be able to work without google search. Don't spend much time with learning JavaScript. Every monkey now learns JS and do you know why ? because it's dead easy. JS leads to Front-end development and that's often pain in the ass.
I vote for solid knowledge of SQL, Java and maybe Python or Ruby but don't learn everything in one time. Step by step e.g. each year one new technology or language.
And for that reason, I don't agree with skipping on low economic value languages just because they don't make cash. JavaScript is currently a vital part of the web programming ecosystem and if you are interested in that ecosystem you should have a familiarity with it…
If design and interaction are more your thing, then go with Javascript/HTML/CSS. Personally, I'd focus on Javascript as 271... mentioned, doing front-end code gets lots of glory if you're making things beautiful and engaging. But it also let's you focus on one language and bring that language to the server-side with Node.js.
It lest you work with 'apps' in the app stores by using a packager like Cordova, giving you the 'I have an app in the app store' cred.
It's becoming the one language to rule them all. There are great frameworks to learn like backbone, angular, ember, etc. Learn to use d3 and learn to do some cool stuff with charts. There is just so much you can do with the one language and you can show it off!
I'm currently in the job market, and I've got a background in PHP, Rais, and Javascript, but most of my coolest stuff that I'm most proud of was data-specific internal tools and systems, so when people say 'show me your portfolio', I don't really have much of one.
For that reason alone, I'd get into Javascript.
I think some people underestimate the kind of work front-end developers. I write Rails as well now, but I could be much better at JavaScript than I am now.
My SML lecturer told us the quip that "Haskell programmers don't write programs to run them. They write them to look at them and see how nice they are." which is hilarious but far from true (it may have been closer to true when he said it though).
I would have liked to start with x64 assembly, then C, C++, JavaScript, Haskell.
Assembly would show 1:1 what the machine was doing.
C would give you greater appreciation for portability and low level constructs after knowing assembly.
C++ would give you greater appreciation for encapsulation, polymorphism, and inheritance after knowing C.
JavaScript would give you more appreciation for portability, garbage collection, a new object model (prototypical) and dynamic & loose types (loose types can be appreciated more by novice programmers and lead to more bugs then it's worth, though C is not exactly the strongest typed language), and intro to functional programming.
Haskell for something just entirely different (though Lisp might be a good addition here).
I guess it's hard to come up with a good curriculum because each language has it's own unique benefits. All the appreciations I mentioned could ultimately be realized going from higher to lower as well.
Usually your first language is the toughest to learn because you're trying to grok the syntax and CS concepts. Once you have the basics down, learning another language just comes down to expressing the same CS concepts in the new syntax (thus is the notion of Turing completeness).
Ultimately, software is about expression. Certain languages are better for expressing certain CS concepts than others. Pick the right right tool for the job, and don't bash other languages when you haven't sat down with them to take the time to appreciate what they're good at and why they were created. Learning constructs unique to one language will ultimately help you express yourself in every other programming language you ever use.
To answer your question, I'd say learn them all, or as many as you can in a reasonable amount of time. Always push yourself to learn more about your craft, lest you one day find yourself to be left behind in your industry.
At the same time, I don't think some developers give front-end engineers enough credit. Backbone and other similar MVCs can be very difficult to master, and I give credit to those who do. It's serious, but very quickly rewarding, work.
That said, strictly in the realm of development:
After having done Python+Django, PHP, and .NET(c#), JavaScript, etc, I'd focus today on mobile or front-end development. Objective C and JavaScript. It is way more visible so it gets more praise from strangers and coworkers and the very nature of it means that you aren't usually working on legacy apps. I don't get happiness out of rewriting old enterprise code. Some might say they get joy out of fixing old problems, but I have had situations where 10 lines of legacy code were reduced to 1 with an increase and speed and I just felt sad, not happy. shrug
You would be better off focusing on what you are trying to accomplish and talk to people in the field and then asking them what tools they use and if they could redo it from the beginning, what would they have done differently?
Also, some of the choices of your career have the toolset determined already... if you want to get a job at an insurance company that uses PHP, then PHP is the main thing you should focus on for now.
Also, languages are just tools to add to your toolbelt. Having many notches on your toolbelt always fun and cool, but doesn't always help you with your career.
Choose a project, and then research the best language to do that project in, and then learn that language by doing your project in it.
EDIT: Someone did!