I know Standford and MIT have free "classes" where they post all the lectures, notes and course work. No credit obviously and it is all self study, but maybe it can give you a good structure to start off with.
That is MIT's intro to computer science and programming. I don't know if this is the best place to start, but it can be a start.
I would start with python (there is a plethora of tutorials and stuff on the main python site). Just because it's easy to understand and start with.
Some people like to say C is the best place to start, but they are wrong. Trying to learn C as your first language is a trial by fire. If you can learn it and understand it then you will probably be able to pick up most other languages, but you most likely wont be able to learn it and be turned off entirely by it. (Not you in particular but in general C is a hard language to learn)
I would first learn python then move onto something like C# (Or Java) due to their ease. Between those two languages you should be able to pick up the basics of programming. Then when you feel more confident in yourself move onto C and maybe C++ (Personally I dislike C++ but it is popular in some parts of the industry)
The most important thing though is to learn the concepts behind programming more than just languages. Try to learn about generic concepts like what loops are, how flow control works, what the point of a function is, what a class is, what an algorithm is, etc. These are concepts that are very useful because they apply to multiple languages and not just one language. It's those concepts that matter the most when it comes to being a good programmer.
If I were you I would focus my time learning Java. There are many great tutorials online. Check out the TheNewBoston's channel on youtube.
While I agree for the choice of the language of Python as your first, I believe that it is more important to learn the paradigms/styles behind a language.
Why was it created, what is the intended use of the language?
As many languages (there are literally thousands) share the same goals with minor variances in syntax and behavior if your learn a paradigm then you can move between languages fairly easily and know what would be useful for what situations.
As your end goal (as is mine!) is to become a game dev, C++ needs to be learnt at some stage as it is the industry standard. It is similar to Java in that it is Object Oriented (a paradigm), however Java is much easier to learn.
(I might be rambling at this stage, continue if you dare)
Python is a great starting point for teaching you basic program flow (for loops, if statements, etc), and while it can be quite diverse and is used by many will only take you so far.
MAIN POINT: LEARN PARADIGMS
Also try a Linux distro (Ubuntu recomended for a new user), alot of programming comes from that OS, be familar with it.
MOST IMPORTANT: Have Fun!
I think that going straight into java isn't a bad idea. I started java at uni without ever doing any programming before and didn't have a problem.
@zeppelinracer: Personally I am not a fan of Linux, but it is an easy way to get started with Python and a couple of other languages. I would do as Glouch suggests and install it in a Virtual Machine to avoid all the annoyances of dual booting.
Action Script 3.0 in Adobe Flash could be a place to start as well. Millions of game tutorials you could try out, and I hear it is somewhat close to C++ (Not sure on that though)