Florian Weimer wrote:
* Robert Dewar:
Making programs bug free has more to it than understanding the language you are writing in, but it is a useful step forward to avoid problems that come from simply not knowing the rules of the language you are writing in (I can't guarantee that GNAT is bug free in that regard, but I can't remember a case where a bug stemmed from this source).
There was some dependency on argument order evaluation in GNAT, but this was part of GIGI, so it's not the best example.
Indeed, given that GIGI is written in C, by people who have not read the C standard :-) In practice though I suspect this was just a glitch. Depending on evaluation order is a bug that can be committed accidentally even by those who know well that such things are undefined or, as in Ada, non-deterministic. The trouble is that levels of abstraction often obscure such errors (just abtracting things into a macro in C can sometimes have that effect).