The first bit of code I ever "wrote" (read: copied verbatim from a book) was some BASIC stuff on my dad's Commodore 128 when I was like 8. I barely had any idea what I was doing. I just liked computers and video games and my dad made me understand that this is how you tell a computer what to do.
By the time I was 12, I was tying to wrap my head around pointers in C, and by the time I started high school, I was trying to understand what this OOP in C++ was all about. High school and first-year university was basically me retreading old ground as I coasted through programming classes reaffirming the things I already taught myself. The last thing I remember learning from scratch in a class environment was 8086 ASM. I was fortunate to have a good professor, so that was fun, and as others have noted, it provided a good perspective for understanding what is happening with your code when you want to optimize things.
Then after first year, life happened (I blame women), and everything got sidetracked for other priorities. I'm 29 now, I've been in and out of university for the past 12 years, and I barely have anything to show for it aside from a general AA degree from the local college. In the interim, I've never really stopped programming though. I've picked up PHP (more than once), JScript, Java, C#, Perl, and bits and pieces of various other languages as the mood and the personal pet project has struck me. Hell, I'm staring down the barrel of having to pick up Ruby on Rails very quickly if I want to keep this new job.
I guess what I'm trying to get at, is that you're in a field where you probably will never know it all. That's absolutely normal. The idea is to learn and internalize as much as you can of the fundamental concepts and practices that underlie everything. The more you do that, the easier it's going to be for you to pick up any language, any architecture and get the job done.
Fundamentally, the reason why programmers passionately argue for their best & worst languages EVAR, are because there generally is a way to solve +95% of all coding problems in any language. Sure some languages are better at certain things, or clearer, or more concise than others, but at the core, it all boils down to very similar principles. So, then the language arguments often boil down to very personal preferences.
So, don't worry about it. As someone else said in here, just keep coding, and keep learning. That's what's kept me doing this my entire life, even when I thought the career was closed to me. There's always something new to learn, and some new way to think about an old problem. You should see that as part of the fun.