Good question. I have a similar question, although my criteria are different enough that I won't clutter this thread with it.<br><br>If marketability is your concern, you really can't beat knowing C or C++. Not just to be able to do things directly in those languages (or more likely, modify/work on existing things), but also because they'll complement your scripting skills. Some of that is obvious: you can embed and extend your scripting languages. But more important, IMHO, is the improvement to your breadth of understanding. Someone who understands what's going on both above and below the level of the script API has a chance of tackling a vastly wider range of tasks. C is better for this purpose than C++, because properly written C++ is a very very different language than properly written C, even though you *can* write either in a way very similar to the other.<br>
<br>On the other hand, not knowing C is a good defense against being called upon to tackle annoying low-level tasks.<br><br>Also, once you've gotten a good grasp of the low-level fundamentals, it's difficult to let go -- you'll approach everything with the mindset of needing to know what is *actually* happening down there. While that is good much of the time, it turns out to be a huge obstacle to picking up alternative high-level languages with very different ways of thinking, like Erlang, SML, Haskell, or Prolog. So if you're up for it, it might be better to learn one of those first and then C later.<br>
<br>And for a totally different suggestion, C# really isn't a bad way to go. Personally, it doesn't do much for me because it's mainly usable on Windows, but if that doesn't bother you then it really has a lot to recommend it. It's seems to be much less of a walled garden than Java.<br>
<br>Going even further out on a limb, you might consider something like CUDA or OpenCL. They're going to be more signficant in the future, and right now there is far less competition for that sort of expertise.<br><br>