Chad Perrin wrote:
> Ada, on the other hand -- for circumstances in which it is most commonly
> employed (embedded systems, et cetera), it does indeed tend to kick C's
> behind a bit.  That may have more to do with compiler optimization than
> language spec, though.

Language specs mean a good deal, actually. C semantics (except in C99, 
/if/ the restrict keyword is consistently used by the coder and 
seriously implemented by the optimizer) lead to unnecessarily slow 
object code in many common cases. Ada's in-language support of tasking 
also makes it easier for the compiler to know whether a segment of code 
will or will not be multithreaded, which allows the compiler to optimize 
more aggressively in many instances.

These are two of the reasons that so many C compilers include an 
"optimize beyond safe limits" switch.

Indeed, many aspects of C's design cause optimization problems. 
0-terminated strings were dandy on 8-bit processors, but the S/370 
actually had to add some new opcodes just to make strcpy and strcmp 
tolerably fast.

Ada has another advantage in that the language design strongly 
encourages designing global optimization into the compiler, whereas the 
C tradition of make files tends to discourage it.

-- 
John W. Kennedy
"The blind rulers of Logres
Nourished the land on a fallacy of rational virtue."
   -- Charles Williams.  "Taliessin through Logres: Prelude"