Carter A. answered 04/16/20
Experienced software developer fluent in object oriented C++
The C programming language was originally developed to write the Unix operating system. The belief was that it was straightforward to write a C compiler for a new processor, then compile Unix for it. At the time, the practice was to develop an OS in assembler separately for each processor architecture and software could not easily migrate from one architecture to another. Java extended this approach by using a standard compiler to generate byte code that was interpreted by a run-time engine specific to the platform.
Doing things differently always presents an opportunity to take advantage of the difference. A compiled C (or C++) object file does not normally carry the type of information needed for reflection. It is foolish to require that one language optimized for one set of purposes conform to a standard set by another language optimized for a different set of purposes. We could revise the format for a C++ obj to include the information needed for reflection. All we would have to do is to recompile 70 or so years of code to use it.