There are several families of programming languages, where each have their strengths and weaknesses. There are also followers and "camps" for the languages where emotions and discussions sometimes overflows with activity.
One thread of languages is the C, C++ and then a a lot of variations like D, Objective-C etc.
The modern object-oriented languages are Java, C# and C++. The strength of Java is that it has a fantastic standardized library of highly integrating "parts you can assemble", and can run on most platforms. C# is really good for the Microsoft Windows platform (and only there), it has taken an eclectic approach and has a lot of nice features. C++ can make your programs run very fast if needed, lacks some standardized library, but is widely available.
Then there are functional languages which sometimes are superbly fitted to handling long lists of data. Sometimes they can outperform the object-oriented languages, but mostly not. They tend to generate much shorter and more intricate programs.
There are also vector oriented programming languages which prevail in speed tests, like K from Kx Systems and it's descendants.
And there are heaps of other languages catering to every fancy that a programmer have gotten over the years. Some are more inclined to fast prototyping. Then there is also the task of getting a programming environment that suits your creative development needs. After that - some build and deployment environment that suits your needs ... e.g like "continuous integration" with maybe a Hudson server (
http://en.wikipedia.org/wiki/Continuous_integration ). This can save you precious time in fixing errors if working in a team, or wanting automated testing.
Lastly, there are lots of third-party libraries that can help you get some edge. Examples are fuzzy logic libraries, rules/expert system libraries, neural network libraries for training artificial intelligence, scripting languages that can be embedded so that you can experiment with changes "live" ... and so on.
I wrote all of this just to give you some starting seeds for the vast possibilities that are available - and lastly I would say that any of the major programming languages or specialized languages for trading will do for you. The important thing is that you learn how to think for programming, and see how to solve things algorithmically. Efficient problem solving is the most important thing you'll learn. You will also appreciate having some knowledge of discrete mathematics, logic and automatas/grammars etc.
I am inclined to say that Java is a good language for starting out. The reason for this is that you learn all the basics of most programming languages, there are tons of good books for introduction, lots of Internet activity with interest groups and so on, it is also an evolving language that will teach you a lot as you progress, as well as there being a plethora of examples of whatever you would want to do. Fixing errors is also pretty easy with Java compared to C++.