Re: Include language bindings? Re: Draft Standard Text, V02.1
> Date: Mon, 15 Mar 2010 10:07:10 -0500
> From: "R. Baker Kearfott" <rbk@xxxxxxxxxxxxx>
> To: Rudnei Cunha <rudnei.cunha@xxxxxxxxx>
> CC: "Corliss, George" <george.corliss@xxxxxxxxxxxxx>,
> John Pryce <j.d.pryce@xxxxxxxxxxxx>,
> stds-1788 <stds-1788@xxxxxxxxxxxxxxxxx>
> Subject: Re: Include language bindings? Re: Draft Standard Text, V02.1
>
> That's a good question.
>
> Looking at IEEE 754-1985, one sees that it was a decade or more
> after the hardware standard was in use before there were language
> bindings. Can including language bindings help the process?
>
> Baker
>
Emphatically yes.
It was more than 2 decades that 754 lived without
standard language bindings & during that time a lot
of compilers found 'imaginative' ways to interpret
the meaning of the seemingly most obvious things,
like '+' & '*'.
Some of those interpretations were just 'different'.
Some were flat out wrong.
But the main problem became that the programmer
could not know what operations the source text was
going to map onto from:
- one manufacturer to another,
- one machine to another within a manufacturer,
- one version of the compiler to another on a given
machine,
- one optimization level to another within a given
compiler,
- one position within the source to another within
a given optimization level,
- one spelling of a variable to another at the same
position, & even (in later years)
- one execution of a loop to another on a parallel
machine (in any of several different ways both
deterministic & non-deterministic).
In all cases the compiler claimed 'license' to use
these variations due to the lack of language bindings
in 754-1985.
In almost all cases they bragged about the 'innovation'
on the grounds that it made some benchmark faster. In
the remaining cases they denied that they happened or
that the variation could cause any problem the user
might notice in spite of them having BEEN noticed.
These problems ranged from mildly irritating to so bad
as to exclude certain algorithims from being used on
grounds they could not be known to work every time in
such a context.
These variations could be argued to be 'improvements'
to 754-1985.
But the unpredictable nature of them would be death to
a standard which seeks universal acceptance of the
correctness of its results such as 1788.
So 754-2007 included standard language bindings.
Unfortunately, the previous 2 decades of imaginative
improvements made by the various compilers in the world
prevented us from making them mandatory or even default.
The best we could do after all that time was to offer
them as an option to programmers who wanted it.
1788 must not make that mistake.
By its very nature the programmer must KNOW what is
being done with the source as it is written.
This does not preclude the various clever algebraic
optimizations that have been proposed. Indeed, such
things should be available to the programmer. But the
programmer must know that they are being done & WHAT is
being done. This implies the programmer must ask for
them.
Therefore, 1788 must (IMHO):
- specify standard language bindings,
- make those bindings default,
- specify standard optimizations, &
- make them available to the programmer in standard ways.
The various manufacturers & compiler writers can STILL
innovate in ways that do not violate the basic standard
& offer those innovations to differentiate them from their
competitors. So innovation is not stifled & commerce can
proceed apace.
But not at the cost of transparency & correctness.
Never that for 1788.
OK, I've shot my bolt. :-)
Enough grousing from the 754 camp.
Carry on folks.
Yours,
Dan