Just like using any tool, the more you use it the more proficient you get at it. So pick your core tools and learn them well.
While general comp. sci. principals apply to all languages, sometimes you need to specialize to get the maximum benefit of your lang.
A core knowledge should consist of the following:
A solid performing language. C, C++, Java, Erlang, C# pick one and learn it well. This is your tool for when you have performance sensitive tasks that really do care about a few extra microseconds for processing an instruction.
A dynamic language that lets you prototype and build highly flexible applications fast without worrying about their perforamnce. Like web servers. Ruby, Python, and I may even mention PHP
And of course don't forget utility. For web programming there is just no way around it... Learn HTML/CSS/JS. For game programming probably some LUA.
Knowing just one language well is great. Knowing a bit more is incredible. Just remember you can't learn them all, don't try to.
Of course each language is a tool. I would not write a web application using C. Its just horrible. I would not, however, write a processor and time constrained background data processing job which is extremely time critical and must scale on as many machines as possible in Ruby either. Each tool is a tradeoff: Time to build, performance, quality. Chose the best one for your problem.
Having said all that. If you understand concurrent programming and can quickly pick up java's way, you will learn quickly. Having a deep understanding of C.S. techniques will get you incredibly far. Granted that knowing the insides of a language can make debugging a problem that may take weeks for one, minutes for another, because of experience. So it is both important to learn a language, and to learn techniques. Because knowledge of java will never help you write a scalable program, no matter how well you memorized the java api.
Generally what companies look for is the following:
- Can this person problem solve well?
- Does this person have the ability to code well?
- Does this person have a deep understanding of the language we work with?
- Can this person learn our system in a reasonable amount of time
- Will this person play well with our system (i've seen people trying to code java in javascript despirately, it does not work and makes for ugly unmaintainable code)
So there is no simple answer other than brush up on your core concepts and pick a language that talks to you (you like the syntax or the way it approaches problems or the job optiosn) and solves your needs, and learn it.