No, the semantics not, the order of execution is, however, which means that
in error-cases, you can have different outcomes between processors. This is
not different from other languages, in C#, F#, Java, C++ similar forms of
optimization exist.
Considering §15.7 in the Java Language Specification: Do you have an actual
example/experience of some Java expression (logical "or") where different
outcomes between processors have been observed?
Note that I said "similar forms". I checked, and I think that all mentioned
languages do left-to-right short-circuitring only (didn't know, but apparently
this is also known as McCarthy evaluation), which allows code like this, which
is deterministic:
if(a != 0 && b / a > 1) { return "larger than one division;" }
if(ptr && ptr->fileExists()) { return "file exists"; }
But, a better comparison would be with SQL, which does the same as XPath. In
fact, a user summarizes the order of evaluation for SQL in boolean expressions
as
"It does when it feels like it, but not in the way you immediately think of."
See:
http://dba.stackexchange.com/questions/5333/logical-operators-or-and-in-condition-and-order-of-conditions-in-where,
where the user also explains the main reason (which Michael Kay already
mentioned):
"We as developers have to be aware that SQL Server works differently. It is a
cost based system. To get the optimal execution plan for our query the query
processor has to evaluate every where condition and assign it a cost. "
Which can just as well be recast with XPath (or XQuery and XSLT by extension,
where order of evaluation is undefined, not only for boolean expressions):
"We as developers have to be aware that XPath works differently. It is a cost
based system. To get the optimal execution plan for our XPath query the
processor has to evaluate the conditions everywhere and assign it a cost. "
Cheers,
Abel Braaksma
Exselt XSLT 3.0 streaming processor
http://exselt.net
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--