Son of Snarky Tirade: a response to Seebach's new CTCN: part 1

S

Seebs

Please put [NILGES] in subject lines when responding to him or threads
about him so people can killfile them more easily,

As I understand it, Google's posting interface strips tags in square
brackets from subject lines, so your proposed fix here may not be as
effective as you might like.  Just sayin'.

this is a test.
this is posted from google and the subject line should contain square
brackets

Interesting -- the material at the end survived, but the initial tag got
eaten.

!@*#!#@ing google.

-s
 
S

spinoza1111

Actually, there is.  You've stopped reading one third of
the way through a sentence.  Read all of the way to the
end of that sentence.  Then read for a few more sections
beyond that point, as well.

Have read the whole thing.  For hosted environments, the only forms that
a compiler must accept are "int main(void)", "int main (int argc, char
**argv)", and things directly compatible with those.  (e.g., you can use
a typedef, or write "char *argv[]").

The standard does allow an implementation freedom to define additional
forms of main() that it will accept, true.  But that doesn't mean that it
doesn't mandate a return type of int.  That one implementation accepts
something doesn't make it standard C.

But, it does. It makes it what the standard calls standard C for a
"freestanding" environment, in 5.1.2.1. This environment doesn't even
need a main() and can, but doesn't have to, be restricted to a minimal
library.
If you write "int main(int argc, char **argv)", every hosted C compiler
*must* accept your program.  If you write "void main(void)", any hosted C
compiler *may* reject your program.

And if you write "int main(int argc, char **argv)" any freestanding,
standard C compiler or its environment *may* reject your program.
However, a computer scientist would be more concerned, not with the
subaltern-childish "rejection" of his program but whether his program
is correct.

You seem to have a consistent problem with the road not taken by your
logic, as in the case of your failure to properly assign db_header in
queue.c.
 
S

spinoza1111

[refuting Kennedy assination conspiracy theories (I couldn't parody this stuff)]
Similarly, Seebach lies about the
standard because it doesn't mandate int main(),

weeell,

"Hosted Environment
The function called at program startup is named main. [...] It can be
defined with no parameters
         int main (void) { /*...*/ }
"

(and then goes on the discuss argv and argc).

There is no hint of void main (or any other return type other than
int). This may be open to interpretation (I don't think so, but other
people do) but that isn't lieing.
it allows a hosted
implementation to expect something in the stack after the termination
of main().

Schildt isn't discussing standalone implementations.

He certainly isn't restricting the discussion to hosted Linux
implementations. He's discussing a variety of implementations where
the goal is not to create the Great American Portable Program, but to
get a job done. These would include many, many environments in Windows
where the C code is called by a GUI and for this reason, no main()
need appear.

To believe that the "typical" C program even has a main() is grandiose
folly, for it means that the "typical" C program is assigned some
important task by a Father (the OS, or an Important command shell).
But few people here seem to have the level of skill as computer
scientists or OS programmers to be other than Walter Mittys, who
fantasize that someday they might turn from ordinary application
programmers to Great OS and Compiler Developers.

No, we use C when we need to call a critical routine from Java which
won't call main() and will define the needs of the host. Hell, it
might need to "return" void.

Expecting portability from C is also grandiose folly, since its
semantics are so ill-defined that it's malpractice, when transferring
a C program to a different computer architecture, to not review every
line preferably in a group setting or in pair programming. If you
don't want to do this, use Java or C Sharp.

To infer from an int main() to portability is folly on steroids...as
most people here know. To gravely pronounce a code snippet here
submitted for serious review by the few grownups here "bad" because
its main() is void is more foolishness.

Like the Troglodytes in Plato's cave of Unknowing, you confuse
Schildt's deliberately dumbed down examples, and your own production,
with the reality...say the reality I faced when I had to write an
actual, 26000 line compiler for most of Quick Basic on my own time and
dime in San Francisco budget hotels, and I toasted my friend's laptop
with a Starbuck's venti.

Harbison and Steele looks better than Schildt, because the issue is
Seebach's uninformed stalking, not the quality of Schildt.

But it doesn't look like a book with truly portable code that works
anywhere. To get that, you have to use Java or C Sharp.
 
S

spinoza1111

[refuting Kennedy assination conspiracy theories (I couldn't parody this stuff)]

No, you couldn't [even] parody it, because you don't read outside your
field, and you move your lips when you read inside it. The fact is
that Bugliosi exposes the same childish thought patterns manifest in
Seebach: the failure to do homework, the deliberate concealment of
evidence, the use of the Internet to lend false authority, and the
dreamlike associativity of thought.
 
S

spinoza1111

Please put [NILGES] in subject lines when responding to him or threads
about him so people can killfile them more easily,
As I understand it, Google's posting interface strips tags in square
brackets from subject lines, so your proposed fix here may not be as
effective as you might like.  Just sayin'.
this is a test.
this is posted from google and the subject line should contain square
brackets
well I can see em

As can I (using news.individual.net).  However, Seebs's subject line
was

"Re: [NILGES] Son of Snarky Tirade: a response to Seebach's new CTCN: part 1"

and yours doesn't seem to have the beginning "[NILGES]".  That's what
I thought would happen.

So maybe the trick is to put the text in square brackets at the end
rather than the beginning?

(Cue chorus of ungrateful whining about what GG has done for/to/with
Usenet .... )

The hatred in this discussion, the ignorance, and the fear...you're
discussing how to kill someone metaphorically. You're not even human
enough to be real Nazis. Instead, you're in many ways more evil since
so cowardly wanting a Second Life as powerful beings who can
"kill" (file) people you don't like. You also seem to me to be
simultaneously fascinated by the technology of eliminating the most
intelligent and best-educated discussant, and incompetent even at
that.

Seebach refused McGraw Hill's offer of a tech review job, probably not
mainly because it wasn't enough money, but because that would involve
meeting with Schildt, and Seebach is a coward. That's plain. Early in
this discussion, I sent him email as is customary in an incipient
flame war to avoid a flame war. He refused to answer or read that
email.

What an asshole!

This has gone to a formal wikipedia complaint. The next step will be a
book or an article on Internet bullying by employed "professionals"
and this will be a case study.
 
J

J de Boyne Pollard

Actually, there is.  You've stopped reading one third of
the way through a sentence.  Read all of the way to the
end of that sentence.

continuing
"or with two parameters (refered to here as argc and argv [...])"

You've still stopped before the end of the sentence. READ ALL
OF THE WAY TO THE END OF THAT SENTENCE.
I have to confess I was surprised becasue I'm sure I've seen
people say there was something like like "main shall look
like this and may also be defined in some implementaion
dependent manner". but now I look I can't see text like
that. Can you give me a quote?

It's at the end of the very sentence that you are not
reading all of the way through!
well I got to "Program Execution" (section 2.1.2.3).
How far would you like me to go?

If you reached that, then you've just read the
relevant section.
 
S

Seebs

You've still stopped before the end of the sentence. READ ALL
OF THE WAY TO THE END OF THAT SENTENCE.

That sentence does not allow a C program to use another form of main(),
it allows an implementation to allow another form of main.

Think about it like integer ranges. An implementation *may* define a
range of int larger than +/- 32,767 -- but the C standard mandates that
you not assume a larger range for int. Because an implementation doesn't
*have* to define a larger range.

If you want to write a program for a hosted enviornment, and you want it
to work on a hosted environment that some other person might provide, your
only choice for main's return type is int. It really is mandated.

-s
 
S

spinoza1111

Yes.  I made one attempt to get the publisher to address the technical
errors, they were unwilling to pay an amount I thought reasonable at the
time for the service, I wrote up a page documenting it and forgot about
it.

1. I think you're lying. You didn't want to meet with Schildt because
in fact you were afraid you might be proven wrong.

2. The person you're talking to is a complete "Lanier" troll, since he
has contributed no code nor any insights on C to these threads and
appears to know nothing about computing. He is a loser who seeks out
people being bullied and joins in because that's how he gets his rocks
off.
Seriously, until Nilges started this stuff up again, I didn't even *know*
that there'd ever been a fourth edition of that stupid book.  I had no
interest in the topic.  As time passed and people stopped recommending
Schildt's books, and thus readers of those books stopped showing up
confused in comp.lang.c, it dropped completely off my radar.

But this means you are reviewing, and changing wikipedia, in a
Biography of Living Persons, based on a biased review of a book you're
opening at random and that you haven't even read.

And again, to amplify:  I had no clue that anyone was linking to the
page.  In fact, if you'd asked me if I had a page on the topic, I woulda
guessed that I used to but that it had been lost during site organization
at some point.  I had no idea it was still there, let alone still in
any way relevant to any of this.

What part of tort negligence don't you understand?
As to whether it's "trivia", I don't think a consistent, in-every-example,
failure to use getc() or getchar() correctly, as well as a precisely
false explanation of EOF, is "trivial" for a newbie C programmer.  Neither
is failing to mention struct padding.

No competent programmer makes code depend on struct padding. Many
competent C programmers consistently do not interact with character
IO, since C is no longer useful for user interfacing; news flash; the
Teletypewriter model of Linux is out of date.

Are we done here yet?  Nilges has been being unpersuadable on Usenet for

Not by you, certainly.
a *long* time.  Nothing suggests that this is going to be the time he
finally seeks treatment for whatever he did to ruin his life.  Arguing

**** you VERY much, since you make excuses for your bad code based on
ADHD and autism. Again, and again until you get it, asshole, how dare
you accuse anyone of mentally disordered posting when you use your
dysfunction as an excuse for your errors?
with him does nothing.  So far as I can tell, if people would just ignore

But you're not. In fact, you are getting quotes from blm and hiding
behind her whilst libeling me.
him and let him be, this would be an extremely good solution for
everything -- Nilges would be devoting his considerable time and effort
trying to defame me, and no one else would have to deal with it.  Since

So sue me for defamation, big man. I need the free publicity for a
counter-suit that will be filed that you've committed a criminal act,
electronic stalking of Schildt and myself. Per Blackstone the truth of
what I say is not enough to protect me from civil defamation lawsuits.
Instead, I can establish that

* I am acting according to wikipedia policy in protecting wikipedia
against a charge of libel for carrying the Schildt article for four
years, referencing your crap

* I am trying to end a criminal case of electronic defamation and
stalking on your part in the interests of this community and the
numerous Windows programmers who come here and are defamed for
violating your shibboleths

* Since I'm not a "deep pocket defendant" (are you?) I'm not going to
be worth your attorney's time.

none of the people in the corporate hierarchy above me are dumb enough
to fall for his crap, this is pretty much the ideal output.  Let Nilges
lie about me all he wants; it's not hurting anyone.

Please put [NILGES] in subject lines when responding to him or threads
about him so people can killfile them more easily, and let's get back
to talking about C.  This has been about as amusing as it's going to
get unless he actually sues, and since that won't happen, we're done
here; this is now a sitcom in reruns, and there is No Point.

But you keep on replying.
 
J

J de Boyne Pollard

There is no hint of void main (or any other return
Actually, there is.  You've stopped reading one third of
the way through a sentence.  Read all of the way to the
end of that sentence.  Then read for a few more sections
beyond that point, as well.

Have read the whole thing.  [...]

The standard does allow an implementation freedom to
define additional forms of main() that it will accept,
true.  But that doesn't mean that it doesn't mandate a
return type of int.  [...]

Read the standard more carefully. It most definitely
doesn't mandate such a thing. Read what was being
refuted carefully, too. M. Keighley was asserting
that there's "no hint of [...] any other return
type other than int". Clearly, there's not only a
hint, there's explicit wording devoted to that
very thing.

I'm surprised that you're getting this wrong. This
ground has been covered ad nauseam over the years.
I have a Frequently Given Answer on the subject that
lays out how the punctuation breaks up the list and
what sections deal with alternative types for the
return value of main(). I even put together, back
in 2002, exactly what wording changes would be
needed to make the standard actually say what
people so often assert it to say. You want the
standard to "mandate a return type of int"? You
know exactly what to vote in at the next
WG14 meeting. (-:
 
S

Seebs

Read the standard more carefully. It most definitely
doesn't mandate such a thing.

Having been involved in the discussions that led to the current
wording, I am convinced that it does.

To state that the standard "mandates" something does not imply that
an implementation does not have the freedom to accept something else;
it only asserts that that is the only thing the implementation *must*
accept.

The only declarations of main() that a hosted implementation *must*
accept are two forms, both of which return int. If you write something
else, you are relying on the implementation choosing to support a
feature not required by the standard.
I'm surprised that you're getting this wrong. This
ground has been covered ad nauseam over the years.
I have a Frequently Given Answer on the subject that
lays out how the punctuation breaks up the list and
what sections deal with alternative types for the
return value of main().

That's nice. It doesn't matter, though. The standard, while
allowing implementations freedom to accept other forms, mandates
a return type of int for programs written in standard C. The
assertion being made has never been that no compiler anywhere
could accept other types; it is that no program which relies on
such a feature is strictly conforming code, or reliably portable
to additional implementations.

-s
 
P

Phil Carmody

[ snip ]
Please put [NILGES] in subject lines when responding to him or threads
about him so people can killfile them more easily,

As I understand it, Google's posting interface strips tags in square
brackets from subject lines, so your proposed fix here may not be as
effective as you might like. Just sayin'.

Killfiling anything from googlegroups is always a solution to
that problem.

Phil
 
T

Tim Rentsch

Malcolm McLean said:
Ad hominem is a bit more subtle than it might first appear. The ad
hominem fallacy is to assert that an argument is wrong or invalid
because of the person who is making it. However we do this all the
time. No-one's bothered what some schoolkid says about the deficit
reduction plan. If some central banker says "this is the only policy
which will reduce the deficit without substantial economic
dislocation", everyone sits up and takes notice.

This description glosses over an important distinction. Almost
everyone uses ad hominem judgments in forming their own
opinions, in their own private thoughts. That's quite different
from making an ad hominem argument as part of a public
statement. I choose whom I listen to, and sometimes whom not
to, because it's my decision and I have only so much time to
spend. But making such a statement in a public forum is like
saying, "You shouldn't listen to person X, because _I_ don't
think he's worth listening to." Each person has a right to
choose for themselves which people are worth listening to, using
whatever criteria they think are important. Arguments should be
made based on merit; arguments based on personalities are a
waste of bandwidth.
 
S

spinoza1111

This description glosses over an important distinction.  Almost
everyone uses ad hominem judgments in forming their own
opinions, in their own private thoughts.  That's quite different
from making an ad hominem argument as part of a public
statement.  I choose whom I listen to, and sometimes whom not
to, because it's my decision and I have only so much time to
spend.  But making such a statement in a public forum is like
saying, "You shouldn't listen to person X, because _I_ don't
think he's worth listening to."  Each person has a right to
choose for themselves which people are worth listening to, using
whatever criteria they think are important.  Arguments should be
made based on merit;  arguments based on personalities are a
waste of bandwidth.

Agreed. And Seebach made an issue that has nothing to do with
personalities, the inaccuracy of code snippets in computer books, into
an issue named "Schildt", and through tortious negligence caused
Schildt to be stalked by several people, including, in effect, by
Seebach.

Whereas if Seebach had done his homework (something he repeatedly
fails to do, whether in code samples or "in the matter of Herbert
Schildt"), he would have found that Brian Kernighan had raised
precisely this issue in Kernighan's book "The Elements of Programming
Style".

When I spoke with Kernighan about this in 1988, I asked him if anyone
had been offended by his harsh words, and he said that they were
grateful for his input. My guess would be that like Dijsktra, and
unlike Seebach, Kernighan had (1) courage and (2) decency.

Kernighan had courage because in saying "Houston, we have a problem"
as regards software in books, he was speaking truth to power; he was
an individual person criticising a publishing apparatus, a group of
individuals and companies. Such courage is now out of date in American
programming circles simply because the remaining American programmers
whose jobs haven't gone overseas to overall more competent and decent
foreigners depend upon the grace and favor as courtiers, retainers and
eunuchs on corporate feudal lords.

Kernighan had decency because in 1976, computers mattered less than
people including professional standing which is not lightly defamed.

There are plenty of computer books with errors in them. There are,
probably, any number of C books with void main in them. However,
younger "professionals" no longer have courage, decency or a work
ethic and for this reason they preferred linking to CTCN and
essentially mocking real academic "cites". Nobody in the "get Schildt"
crowd has the courage, decency, work ethic, or computer science
background to ask why publishers must all compete to produce computer
books so quickly that errors appear.

It's easier to regress to name-calling, but Seebach should not be
surprised to eat his own dog food, and be subject to the same
treatment.

Attorney: Mr. Seebach, for the record, would you please provide the
court with your formal qualifications in software?

Seebach: I am self-taught.

Attorney: Have you taken any classes in computer science?

Seebach (rattling his worry balls obsessively) N..nnn...no...

Attorney: Thank you Mr Seebach. You may step down.

....

Attorney (for Seebach): Mr. Nilges, for the record, would you please
provide the court with your formal qualifications in software?

Nilges: Certainly. I completed the first class ever offered at my
university in 1970 in computer science with the grade of B. I
completed 8 classes towards the MSCS in computer science with 7 As and
one B+. Based on this, I was an adjunct professor of computer science
from 1998 to 2000.

Attorney: And why did you fail in 1970 to get an A?

Nilges: This was because I joined the nationwide student strike
against Nixon's invasion of Cambodia and did not attend classes.

Attorney: Certainly not a very impressive record, Mr. Nilges, indeed
rather troubling. Would you say that this less than stellar record of
low achievement and stirring up trouble qualifies you to be so
critical of a member of the C99 working group?

Nilges: I am no spring chicken. At the time I started out, theory and
practice were ill-formed; for example, Andrew Tanenbaum, the author of
our textbook on computer architecture, felt that a layered approach to
computer architecture was best for in 1974, memory was cheap but CPU
power relatively expensive; Tanenbaum seems not to have foreseen that,
quite independent of Moore's law, the ratio of memory to CPU costs
would change in such a manner that by 1987, when I attended ACM's
ASPLOS conference on new developments in architecture for my
professional development, highly pipelined, single-level and C
optimized processors were in fashion. Therefore education requirements
were often waived for my "baby boom" generation in a way that in my
personal view, should not longer apply.

Attorney for Seebach (whose supervising attorney has been frantically
signalling her to shut Nilges up by making sawing motions with his
hand): ...v-very well, Mr. Nilges, you may step down.

....

Attorney for either side: Mr Schildt, will you please describe your
educational qualifications?

Schildt: I have the MSCS in computer science.

Attorney: Thank you, Mr Schildt


To avoid these scenes all Peter needs to do is apologize for his
conduct and remove the wikipedia biography.
 
N

Nick Keighley

SG wrote:
On 12 Apr., 15:07, spinoza wrote:
Similarly, Seebach lies about the standard
because it doesn't mandate int main(),
What's your definition of "it mandates" in this context? The standard
says that implementations must accept main functions of type
void(void) and void(int,char*[]) (or equivalent).
No, it most certainly does not say any such thing. What it says is that
*hosted* implementations must accept main functions of type int(void),
int(int, char **), or equivalent (note the return type - int, not void).
Implementations *may* accept main functions of other types, but are not
required so to do.
does it explicitly say that?

     5.1.2.2.1p1.

I've got the ANSI standard. Is that "Program Startup"? (ie. the bit I
already quoted?)
 
N

Nick Keighley

Nick said:
SG wrote:
On 12 Apr., 15:07, spinoza wrote:
Similarly, Seebach lies about the standard
because it doesn't mandate int main(),
What's your definition of "it mandates" in this context? The standard
says that implementations must accept main functions of type
void(void) and void(int,char*[]) (or equivalent).
No, it most certainly does not say any such thing. What it says is that
*hosted* implementations must accept main functions of type int(void),
int(int, char **), or equivalent (note the return type - int, not void).
Implementations *may* accept main functions of other types, but are not
required so to do.
does it explicitly say that?

See 2.1.2.2, or its C99 equivalent.

Note the introductory words: "A hosted environment need not be provided,
but *shall* conform to the following specifications if present." (My
*asterisks*.)

so a hosted implememntation must use one of the forms specified?
 
N

Nick Keighley

Nick Keighley said:
On 12 Apr, 14:07, J de Boyne Pollard <[email protected]>
continuing
"or with two parameters (refered to here as argc and argv [...])"
no I'm sorry I'm not going to type the whole bloody spec in. There is
nothing in the remainder of the sentence that mentions return types.

Yes, there's an ambiguity there.

where? Look I'm not trying to be awkward but I really can't see the
text that everyone else can see!!

 It says, in outline that main()
shall be defined with a return type of int and with no parameters ...
or with two parameters [argc and argv] or equivalent; or in some other
implementation-defined manner.

My text doesn't have that last bit.

The question is, what is the scope of the "or"?  It's usually
assumed that it means

        with a return type of int
    and
        with no parameters
            or
        with two parameters
or
    in some other implementation-defined manner

But the wording and punctuation could easily imply:

    with a return type of int
and
        with no parameters
    or
        with two parameters
    or
        in some other implementation-defined manner

which requires any implementation-defined manner to have a return type
of int.

But if you read on to 5.1.2.2.3p1, you'll see:

    If the return type is not compatible with int, the termination
    status returned to the host environment is unspecified.

I don't have that text either. Is this a C99 change? If so it was a
retrograde one!
 
N

Nick Keighley

continuing
"or with two parameters (refered to here as argc and argv [...])"

You've still stopped before the end of the sentence.  READ ALL
OF THE WAY TO THE END OF THAT SENTENCE.

quote it. What terminates the sentence? (It's a long way to the next
full stop). I'm beginning to think we aren't reading the same text.
 
S

Seebs

You're resting your hopes on the inability of non-experts to distinguish
between pseudo-experts and genuine experts.

Right. Think about it this way:

Of people who have been on the ISO C committee, what percentage would
you expect to claim that Schildt is a more reliable source of information
about C than I am?

(Hint: I would not expect the total number to exceed one, and that one
never attended a meeting that I know of.)

Expertise does not begin and end with formal education. One way people
tend to evaluate claims of expertise is to test a person's claims about
the subject matter against the claims of other people.

What percentage of books about C do you think get EOF wrong? I haven't
seen many that get that one wrong; it's basic, it's easily explained,
it's clearly documented...

-s
 
N

Nick Keighley

Similarly, Seebach lies about the standard
because it doesn't mandate int main(),
weeell,
"Hosted Environment
The function called at program startup is named main. [...] It can be
defined with no parameters
         int main (void) { /*...*/ }
"
(and then goes on the discuss argv and argc).
There is no hint of void main (or any other return type
other than int).
Actually, there is.  You've stopped reading one third of
the way through a sentence.  Read all of the way to the
end of that sentence.  Then read for a few more sections
beyond that point, as well.

Full quote from n1256:




5.1.2.2 Hosted environment
1 A hosted environment need not be provided, but shall conform to the
following specifications if present.
5.1.2.2.1 Program startup
1 The function called at program startup is named main. The implementation
declares no prototype for this function. It shall be defined with a return
type of int and with no parameters:
   int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names
may be used, as they are local to the function in which they are declared):
   int main(int argc, char *argv[]) { /* ... */ }
or equivalent;9) or in some other implementation-defined manner.

that last line isn't present in X3.159-1989
I don't understand why it was added.

So Schildt's book is working to the the 1999 standard. Now we know
that does it increas or decrease the number of errors?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,777
Messages
2,569,604
Members
45,216
Latest member
topweb3twitterchannels

Latest Threads

Top