I suggest learning Perl. Learning non object-oriented programming first will give you more insight into the structure of programs (yes I am aware Perl can do object orientation, but people usually don't use that at a beginner level).
As a beginner you will want to start with a project that is fun. Lets say you want to start out making an AIM or IRC bot. Normally doing so would be hard without knowledge of network programming and a lot of harder stuff. Since Perl has a centralized website of modules (libraries) (
http://search.cpan.org/) you can download a module that can handle the messy parts of a program for you, leaving you to do the easier but still just as fun parts that are good for practice, and still making a decent project that functions. Example modules I talked about were the AIM module Net::OSCAR (
http://search.cpan.org/~matthewg/Net-OSCAR-1.925/lib/Net/OSCAR.pm) and Net::IRC (
http://search.cpan.org/~jmuhlich/Net-IRC-0.75/IRC.pm).
Then you can move on to perl hash/hash-ref data structures, and when you master those you gain a broader view of data structures in general. Follow that up with regular expressions and your life will change forever. At this point you can go on to learn an object oriented language like python or ruby and enjoy god's gift of object orientation.
I found that that was a fun way to ease myself into programming. Eventually you work your way into being able to do the harder stuff yourself, which is where you really start learning the inner workings of programming.
I also second what
>>4 said. Fixing things that annoy the shit out of you can be the most satisfying thing ever.