I was coding Basic and Pascal when I was 15... (courses in HS)
When I started running WWIV BBS, I got the source code (in Turbo pascal originally, then it switched to C, and finally to C++) and so learned those languages...
(it was rather amusing, taking a C++ course in college. I had already disected WWIV which was about 50,000 lines of code... so the course was an easy A)
Although I have several reference books and sites that I use occasionally, Mostly I have learned by doing.
Oh yes.. and I learned MS visual basic by playing around in Excel.
essentially, once you know one Object Oriented programming language, the other stuff is pretty much the same, even if the actual commands differ slightly. It's the logic that is really what you need to know.
BTW: (on a completely unrelated note) for anyone who wants to meet me... I will be at The Black Road (Marlboro, MA) at the end of June, at DexCon (East Brunswick, NJ) in July and at DragonCon (Atlanta, GA) in September.