My advice:
1. Start with anything simple. Pascal will be fine. Don't learn much of it, just the basic statements, expressions and operators, a couple of functions to play with, and how to define your own. Look for something with an IDE so that you can forget about compiling.
2. Now you have to shape your mind for it. You can read others' code, but you probably cannot figure how to write your own. Your mind needs to start working in an analytical way that will allow you to come up with your own algorithms. Play around, do simple exercises, try to think for yourself very hardly how to do things before looking at solutions.
3. Now you can do things on your own. Time to learn the tools. Forget Pascal and go for C if you want to learn things bottom-up (from a low-level perspective to abstract), or Python, Ruby or Lisp if you want to learn things top-down (from an abstract perspective to low-level). I suggest the earlier approach, because if you learn C after dynamic languages, it'll look so shitty and so much of a pain in the ass. So learn C. Use GCC on Linux and MinGW on Windows, without an IDE. Learn about compiling, libraries, and insanity. Don't bother with GNU autoconf, make and all that crap unless you have a purpose for them. You an use an IDE if you want interactive debugging though, it helps during learning. (In a few years your favourite debugging tool will probably be print, but for now let's use that.) Oh and by all means, do NOT learn Java. It'll fuck up your career and you'll end up hating it and dropping out of it. Don't bother with C++ either, too complicated.
4. Now you understand the real thing. You know how it works. But you need better abstraction, because C is very unproductive. C is only worth the time if you need to write performance critical applications or interact with the hardware or network more directly. Now you need a good programming tool. You can either read SICP for a more formal approach to it, or learn Python or Ruby for a more practical approach. Now it's the time to learn about object-oriented programming and functional programming. Pay special attention to functional programming. Enjoy the enlightening experience. You know you've been enlightened when C looks like shit and you became lazy. Again, DON'T learn Java. It's a bad language that introduces a poor object-oriented model, it doesn't properly support structured or functional programming, and it has a terrible, shitty API that will drive you insane. Don't bother with C++ either, too complicated and not a high-level language like you need.
(You will be through the "OMG OPTIMIZED" stage, where you care for performance and want things to run fast and wish your Windows games ran faster on your PC, or use Gentoo. However, your time is far more valuable than your hardware, so if you need better performance, buy better hardware and save the time. Plus early optimization will tend to fuck your programs all over.)
5. Ok, now you're all set. From now learn whatever you like to achieve satori. Or you can learn something to make bread. Prefer C++ over Java though, Java is the shit and you'll end up hating your job.
>>6
By being geared towards Xbox projects and being quite intimidating for hello world.
>>7
MinGW