S
spinoza1111
In
spinoza1111wrote:
This is comp.lang.c, where the Standard (warts and all) is topical.
On the contrary, knowing it is essential if you're going to make
meaningful statements about it. The degree to which one's statements
about a subject can be taken seriously by experts in the field
depends greatly on the amount of knowledge one has about that
subject.
Well, "admit" is the wrong word, "failed" is questionable, and "it" is
ambiguous, but "you" seems unexceptionable enough.
Since I wasn't on the Committee that developed C99, it is hardly my
place to "admit" either its success or its failure. I can make claims
about it if I choose, but admission isn't my problem, one way or the
other.
The C90 Standard was a huge success. The C99 Standard, 10 years on,
has yet to be widely implemented. Because of this, I will not use
C99-specific constructs in my own code when that code is required to
be portable. I have, however, modified my coding style so that it
conforms to C99 (i.e. I have eschewed C90-only constructs).
No, I say it because it's true.
In fact, he gives plenty of evidence. Perhaps you need to learn to
read.
Rubbish. There /are/ things that cannot be known or predicted. For
example, given this program:
#include <stdio.h>
int main(void)
{
printf("hello\n") + printf("world\n");
return 0;
}
and no other information, it cannot be known or predicted whether the
program will print
hello
world
or
world
hello
What /can/ be predicted is that one or other of those two
possibilities is very likely to be the output. (Not *certain*, of
course, because printf can fail - for example, output might be
redirected to a read-only file.)
Saying so is hardly a reason for censure.
He does know that. And C does allow one to sensibly predict what code
will do, *provided* one observes good practice - which perhaps goes a
long way towards explaining your attitude.
"Good practice" means abandoning K & R's clear implication that work
could be done in expressions, the subexpressions of which have side
effects, allowing hand optimization in assembler language style. It
means doing something that modern compilers can and should do, which
is to avoid "code motion" when the syntax of a construction shows that
it is unknown whether an expression has a side effect.
In a(b,c) where b is a constant or even a term (for example an int) it
makes sense in certain environments to "evaluate" b after a or even in
parallel. However, the natural expectation of most programmers with
computer science training and experience in other languages is left to
right evaluation and this expectation, not vendor profits, should have
been honored in the C99 standard, by reassuring, not vendor
stockholders, but programmers that their instincts would be honored.
This is because educated people, for better or worse, read left to
right in the modern world even when their original language is right
to left because of the dominance of English...especially in scientific
and technical communication.
But this would have resulted in a demand from the standards committee
to vendors that they change their compilers, and the standards
committee was in the vendor's pocket.
Not if you have your eyes shut, no.
In my experience of your Usenet articles, your experience of computer
science has taught you little, if anything, about programming.
I don't know what you mean by "programming" other than applied
computer science but post Northern Rock and the Panic of 2008 I have
my suspicions. I think it may be organized fraud.