Subject: Re: Theory #51 (superior(?) programming languages)
From: Erik Naggum <erik@naggum.no>
Date: 1997/01/23
Newsgroups: comp.arch,comp.lang.lisp,comp.lang.scheme
Message-ID: <3062969201915975@naggum.no>


* D. J. Bernstein
| I proved the opposite: the concept of ``overflow'' for unsigned additions
| is trivially expressible in C.

no, what you showed was one _example_ of an unrelated comparison after an
addition which could determine that the addition had produced the wrong
result.  that should have been done by the compiler, and there should have
been a way for a program to be alerted to such overflows if it needed to
know, _without_ having to add code after every single operation using
explicit intermediate results, which is _very_ far from what I consider the
"trivially expressible".

what with exceptions C++, you'd expect that the desire for such primitive
exceptions would be very simple to request, but no, you can't, because C
and C++ has no intention to support such concepts as accurate arithmetic.
C++ has even retained C's bogus division operator!

a _proof_ would have required an exhaustive list of tests for all types.
a _proof_ that "overflow" is "trivially expressible in C" would have
included means to add overflow detection to basic integer operations.

you flunk, D. J. Bernstein.

| There are lots of good examples of common machine operations that are
| difficult to express in C; why did you choose such a stupid example?

I'm sorry to say so, but it looks stupid to you only because you aren't
bright enough to understand the issues I raised and you instead think this
is about machine operations, which, I agree, would have been stupid.

#\Erik
-- 
1,3,7-trimethylxanthine -- a basic ingredient in quality software.