"use" is at compile time, "require" is at run-time? It's weird how you code and code and only when somebody asks you something you start having questions about it :-)
I'm a big believer in the saying: "The way to learn something, is to teach it".
We ( I at least ) seem to have this "active" and "passive" code knowledge; much like an "active and passive" vocabulary. You don't really get to a real understanding of it, until you have to explain it to someone else ( who is asking WHY? alot ) :-).
I'm not really a human, but I play one on earth.