*edit* This is for those who are considering getting into programming. I'm not so much looking at just 'what is best to help with bitcoin'.
There are 3 main programming paradigm's that Im aware of: procedural, object orientated, and functional. I'm going to suggest you start with Object Orientated. For that,
I'm going to nominate Java or Python.
If you take up Java, you can help with the bitcoinj project. You can also work on Android clients.
I don't think that for learning programming, C or C++ are your best choices. I think you want a language that introduces to the most Object Orientated concepts with the least amount of technical baggage. From that perspective, C and C++ would be ruled out. I really can't see the point in learning about garbage collection as an initial introduction to programming.
If you ever want to get serious about functional (a lot of languages like to 'borrow' elements from this paradigm) have a look at Haskell.
For python or Java free learning resources:
http://diveintopython.org/www.mindview.net/Books/TIJ/ (Bruce Eckels Thinking In Java)
www.mindview.net/Books/TIPython (Bruce Eckels Thinking In Python)