>Our moderator writes:>>>[It entirely depends on how the compiler's designed.>>Not entirely -- it also depends on how the language was designed.>Some languages are easier to compile quickly than others.

I also think that it's more a matter of the language than of the compiler. But
what exactly makes an Delphi compiler more than 10 times faster than an C/C++
compiler? Some ideas:

- the use of header files instead of precompiled units
- the extra C preprocessor stage and macro expansion
- C requires larger symbol tables
- C is harder to parse
- C is harder to optimize
- C source code for the same purpose is much longer(???)
- C is slow in text handling (provided the Delphi compiler is not written in C
;-)

Even if the use of header files seems to be the most important disadvantage of
C, some people say that it's the C syntax which makes the compilers so slow. I
tend to agree with the syntax issue, but without any proof, it's only a feeling
for now. The speed boost with precompiled header files is noticeable, but why?
Is it only lazyness why the use of header files has not been replaced by more
appropriate procedures, in the past decades? And is a C# compiler so much
faster than a C++ compiler, due to its use of precompiled assemblies? What
about incremental compilers?

Unfortunately the other topics cannot be verified, as long as the impact of the
header files cannot be separated from the other compiler activities. So I only
know that C is not an appropriate language for RAD, and no attempts, worth to
mention, have been made in the past to change that :-(

I also have no experience for a comparison of Turbo C with Turbo Pascal, but
Turbo C may have been faster than nowadays C++ compilers only due to the fewer,
simpler, shorter, and less nested header files of that time. At least I doubt
that it was the lack of optimization, which made Turbo C quite fast, because
then Delphi had to be quite slow for its much better optimization. Or is it so
much more complicated to optimize C programs, as opposed to Pascal/OPL code?