I've always been told that the right way (most efficient) way to start was the following: VB Java C++/C# For a world of info, Google numerical recipes in c++. Here's a good one applied to finance: http://finance.bi.no/~bernt/gcc_prog/recipes/recipes.pdf
I would prefer the route of from C, C++ then Java. If you want to go with Microsoft garbage languages such VB, Visual C++ and C#(from debacle visual java); beware their libraries are non-standard, proprietary and patented. Worst of all; only runs on the latest version Windows. Good luck with Microsoft, hoping it will still alive and kicking in couple of years.
For a beginning programmer wanting to learn C++, I would recommend the book "Deitel and Deitel C++ How to Program". Another good beginning C++ book is "Accelerated C++". This book starts with the standard (template) library and progresses from there.
I have been a software engineer for over 40 years. I do it for a living. Right now my language of preference is C#, although I mostly use Ruby, Java and C++ at work. I would recommend either C# or Java to start with. Note that besides the language, and important issue is also the development environment. With C# you essentially have no choice - use Visual Studio from Microsoft. They have a version - Visual Studio Express that I believe is free. For Java, my recommendation is Netbeans from Sun. It's also free. I prefer it to Eclipse by a wide margin - especially for a beginner. I suggest you not get involved in the religious language wars. Both C# and Java are excellent, modern, fast object oriented languages. One of the key things they bring to the table over C++ is automatic memory management and do not use pointers - a source of hard to find programming bugs - even for experienced developers. They are both about 1.5-2 times slower, on average than C++. While it's true that the IB Client is wriiten in Java, it's interface to your program would be through a TCP/IP socket - which, for your purposes, is just a stream of characters. Your program sends the characters to the IB Client running on your machine, which then uses a proprietary protocol to talk to the remote IB servers. I have written a ton of both C# and Java to use the IB Client. Good luck!
lel4866 very well said. Do you have a particular library/wrapper you like to use to interface C# with IB's api?
http://www.dinosaurtech.com/ Works great. Well architected. You get full source code and it actually compiles. I make occassional mods, like adding new constants for my own error messages, etc. I've never run into a problem, but I haven't come close to using all the functions.