Thread Links Date Links
Thread Prev Thread Next Thread Index Date Prev Date Next Date Index

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