
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Richard, On Tuesday 19 February 2002 06:57, Richard Uhtenwoldt wrote:
This is a weak argument.
First of all it is not the case that imperative coders always specify a total ordering: multitasking, threading and interrupts (and their projections into software as in Unix signals and asynchronous exceptions) are ways of specifying partial ordering when a total ordering would lose.
Note that modern cpu designs use "out-of-order" execution strategies; so on micro-second timescales they ignore the total ordering when doing so suits them and when it preserves semantics.
I might add to the above points the obvious. Imperative programming languages
in general do _not_ specify a total ordering. Each statement _can_ have a
side effect[*] and the compiler is free to rearrange code such that it runs
faster and preserves semantics. As written in any compiler textbook from
1970's.
Sincerely,
[*] The compiler will know when this is possible, and when the statement is
free of side effects. You can specify that no side effects occur in C++ for
instance. And the compilers also know that certain expressions are always
free of side effects, etc.
- --
Eray Ozkural (exa)