I just wanted to clarify my comment ---

I agree that learning to program by looking at existing code is a good thing. Compiling other people's code then messing with it to see what happens is a fantastic way to learn. In fact, in some of the books I write, I created an element called "Type and Run" that's primary focus was exactly that -- you type in a mor4e complete program, compile, and run it. This program could then be played with to learn.

What I consider bogus is saying you need to decompile an existing program to learn how to program. There is enough available code that decompiling or cracking executable programs isn't needed.

As to trying to learn a programming language -- for the newbie, C++ and Java are both a bit more complex. I'd suggest starting with an interpreted language such as Visual Basic or C#. Of course, finding a good book or tutorial to start with never hurts!