I've started in java with the book "java for students" at the age of 13, it was a very well-written book and easy to understand so I bought another book from that author "vb.net for students". fascinated by one of the last chapters which went 'under the hood' I searched some more about compilation and stuff.
I then stumbled on a site which tried to explain how to make a language (simple lexer using antlr and interpreter) but didn't got further then a half-working lexer.

Then I went into reverse engineering and doing some crackme's (easy ones).
trying them out gave me a better understanding how compilation really works. After I've plunged in the world of game-hacking I really understood how most stuff works internally, what buffer overflows are,... .

This is of course only a tip of the iceberg but it's enough for me (for now). My advice: if you really want to know how programs work 'under the hood' then go and read a bit about reverse engineering, you'll know a lot in short time (but it's not easy). but if you don't then it's also fine as everything will come with time. read one chapter at a time and try to understand everything before moving on. Practice enough or you'll simply forget. You have time, use it :). make notes!

Mind you that this is only my opinion and I'm also learning and could be terribly wrong in my approach :p.