The C++ mentality is that you should catch as many errors as you can at compile time. When you're launching a satellite, you want to be sure your code's as bulletproof as possible before it leaves the ground. Every time I've seen reflection used, it was by some terrible programmer who'd just learned about reflection and was looking for an excuse to use it. And every single time, they were using it as a crutch so they wouldn't have to think about the system they were building. You can almost hear them thinking "Cool! I don't really know what this bit here is supposed to do, so I'll just use reflection and once I've collected my paycheck and left, some other programmer can drop random objects in there later!" I've never seen its use actually improve a design. I've never even seen it make more loosely-coupled or reusable code, now that I think about it. Somehow they ended up with introspective systems that were so tightly coupled that you couldn't just break one object out to run a unit test on it. If they'd written unit tests. Which they didn't, because they were bad programmers.