C the complete nonsense

  • Follow


I've been asked by Edward Nilges to comment on this webpage.
I had kept out of it, partly because of the tone of the debate, partly
because, not having read "C the complete reference" I don't have a
qualified opinion on the book.
The webpage is too focused on errors to be considered a review, and it
is too partisan to be considered an errata document. Much mention has
been made on comp.lang.c of legal liability. I've no idea what the
legal situation would be, except that this sort of "knocking copy" is
very commonly available on the web.

I think the title of Schildt's book invites misplaced criticism.
Whilst the book is entitled a "reference" it is in fact a tutorial.
The needs of pedagogy and definition are often opposed. A beginner
needs an explanation in simple, everyday language. A reference work
requires definitions, free from all error. It's very easy to find
errata in books full of teaching code, particularly if you adopt
stringent criteria. One reason is that the code is written for
demonstrating purposes,a nd never tested in a real environment. The
errors are obviously undesireable, but seldom have much impact on the
book's effectiveness for its purpose.

The very first error in "C the complete nonsense" is:

In general, negative numbers are represented using the two's
complement approach...
This is not a C feature. It is a common implementation, but it is
specifically not required. (Binary is, but one's complement is not
unheard of.)

This is suprious, Schildt qualifes by "in general".

The next one is
The following heading occurs:

static Global Variables
No such thing. A static variable outside of a function has file scope,
which is distinct from global scope.

Whilst I haven't read the book, this is probably spurious as well. The
term "global variable" can be used either for file scope variables or
variables with external linkage.


Enough said. Two errors in two errata. I could go on, doing exactly
the same thing to "C the complete nonsense" as Seebs has done to
Schildt.


I don't like libel laws and I think threats of legal action are heavy-
handed, and not credible unless they come from the person allegedly
libelled himself. I suspect Schildt himself just regards this sort of
criticism as the inevitable concomitant of success. The books do very
well on the market, and no-one is forced to buy them. However Nilges
is actually right, "C the complete nonsense" is a bad webpage and
should be either removed or substantially revised.
0
Reply malcolm.mclean5 (725) 4/4/2010 8:54:58 PM

Malcolm McLean wrote:
> I've been asked by Edward Nilges to comment on this webpage.
> I had kept out of it, partly because of the tone of the debate, partly
> because, not having read "C the complete reference" I don't have a
> qualified opinion on the book.
> The webpage is too focused on errors to be considered a review, and it
> is too partisan to be considered an errata document. Much mention has
> been made on comp.lang.c of legal liability. I've no idea what the
> legal situation would be, except that this sort of "knocking copy" is
> very commonly available on the web.
> 
> I think the title of Schildt's book invites misplaced criticism.
> Whilst the book is entitled a "reference" it is in fact a tutorial.

So what you're actually saying is that the first error is on the front 
cover.

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/4/2010 9:00:41 PM


Malcolm McLean <malcolm.mclean5@btinternet.com> writes:
> I've been asked by Edward Nilges to comment on this webpage.

And you decided to do so?  Ok, whatever.

> I had kept out of it, partly because of the tone of the debate, partly
> because, not having read "C the complete reference" I don't have a
> qualified opinion on the book.
> The webpage is too focused on errors to be considered a review, and it
> is too partisan to be considered an errata document. Much mention has
> been made on comp.lang.c of legal liability. I've no idea what the
> legal situation would be, except that this sort of "knocking copy" is
> very commonly available on the web.
>
> I think the title of Schildt's book invites misplaced criticism.
> Whilst the book is entitled a "reference" it is in fact a tutorial.

What is misplaced about criticizing a misleading title?

> The needs of pedagogy and definition are often opposed. A beginner
> needs an explanation in simple, everyday language.

A beginner also needs an explanation that's *correct*.  Many of
Schildt's errors are just errors; there would be no pedagogical harm
in correcting them.

[...]

> The very first error in "C the complete nonsense" is:
>
> In general, negative numbers are represented using the two's
> complement approach...
> This is not a C feature. It is a common implementation, but it is
> specifically not required. (Binary is, but one's complement is not
> unheard of.)
>
> This is suprious, Schildt qualifes by "in general".

The phrase "in general" is ambiguous; it can mean either "usually" or
"always".  Assuming that "in general" was meant as "usually", he could
(and IMHO should) have mentioned that other representations exist.

> The next one is
> The following heading occurs:
>
> static Global Variables
> No such thing. A static variable outside of a function has file scope,
> which is distinct from global scope.
>
> Whilst I haven't read the book, this is probably spurious as well. The
> term "global variable" can be used either for file scope variables or
> variables with external linkage.

And is therefore ambiguous, and therefore IMHO should be avoided in a
book that purports to teach C.

> Enough said. Two errors in two errata. I could go on, doing exactly
> the same thing to "C the complete nonsense" as Seebs has done to
> Schildt.

So why did you stop after just two errors?  If it was inappropriate
for Seebs to list just a subset of the errors rather than covering the
entire book, is it fair (to your readers, if not to Seebs, Schildt,
or Nilges) to criticize C:TCN based on just the first two errors?

In a quick reading, it appears to me that the first two listed errors
happen to be the least substantial.  Keep reading.  The third error
is a use of "%f" to print an expression of type size_t (followed by
a use of "%d" for the same purpose, but that's not *quite* as bad
an error).  The fourth is an application of sizeof to a parameter
of type int[6], which is really of type int*.  These are just plain
wrong, and they're demonstrations that Schildt didn't even try his
code before publishing it.  The printf format error *might* be a
typo, perhaps one introduced in typesetting, but the sizeof error
is just a fundamental conceptual misunderstanding on Schildt's part.

And he claims to be teaching C.

As long as I'm posting I'll mention that
    The "heap" is a DOS term...
is a perfectly correct statement.  It doesn't necessarily imply
that it's *only* a DOS term.  It also happens to be a Unix term,
and a Windows term, and a Symbian term, and so forth (and yes,
an updated version of the web page should probably clarify that).
The point is that it isn't a C term.

(Nilges doesn't seem to understand -- or maybe he does -- that the
more he keeps pushing his agenda, the more attention will be brought
to Schildt's errors.)

> I don't like libel laws and I think threats of legal action are heavy-
> handed, and not credible unless they come from the person allegedly
> libelled himself. I suspect Schildt himself just regards this sort of
> criticism as the inevitable concomitant of success. The books do very
> well on the market, and no-one is forced to buy them. However Nilges
> is actually right, "C the complete nonsense" is a bad webpage and
> should be either removed or substantially revised.

I disagree completely.  "C: The Complete Nonsense" is a valuable
warning to those who might otherwise be misled by reading Schildt's
books.  It could stand some revision, particularly an update to the
latest edition of the book.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/4/2010 9:48:38 PM

On 2010-04-04, Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:
> I think the title of Schildt's book invites misplaced criticism.
> Whilst the book is entitled a "reference" it is in fact a tutorial.

I disagree.  It *contains* a tutorial, but it also *contains* a reference.
The book has whole chapters of material which is structured and presented
as a reference.

It is a reference.  It is sold as a reference, it claims to be a reference,
and it contains material structured like a reference.  That it also contains
a tutorial doesn't change that.

It seems to me that maybe you ought to look at the book at least a little
before claiming that it's actually "a tutorial".

Furthermore, the fact is, when these books were selling well and people using
them came to this group, we consistently found that the book was a VERY BAD
tutorial -- people who learned C from Schildt had a horrible time learning
the language, because he does a very good job of creating cognitive maps
which are wrong, whether subtly or obviously.

> This is suprious, Schildt qualifes by "in general".

I don't think that qualification is strong enough to cover for the fact
that making this claim doesn't help at all with the teaching.

> Whilst I haven't read the book, this is probably spurious as well. The
> term "global variable" can be used either for file scope variables or
> variables with external linkage.

Not correctly.

> Enough said. Two errors in two errata. I could go on, doing exactly
> the same thing to "C the complete nonsense" as Seebs has done to
> Schildt.

You probably could -- but I think that you'd find that, even once you
nitpicked the nitpicks, you'd find that the substantive errors MASSIVELY
outweighed them.

Why did you pick two of the worst errata, rather than looking at, say,
the example where Schildt totally misidentifies the behavior of sizeof(),
or shows the use of %f to print a size_t?

> I don't like libel laws and I think threats of legal action are heavy-
> handed, and not credible unless they come from the person allegedly
> libelled himself. I suspect Schildt himself just regards this sort of
> criticism as the inevitable concomitant of success. The books do very
> well on the market, and no-one is forced to buy them. However Nilges
> is actually right, "C the complete nonsense" is a bad webpage and
> should be either removed or substantially revised.

Obviously, I don't agree.  I agree that it might be beneficial to revise
the page... But why bother?  The book in question is fifteen years old,
and modern editions, while they continue to teach extremely bad habits,
are still full of nonsense.

I am pretty offended that you seem to have gone out of your way to
cherry-pick bad examples rather than reading the whole selection and
developing an informed opinion.  All you're doing here is supporting
a pathological and unrepentant abuser who has stated that his goal
in participating here is to attack the C language, C users, and this
newsgroup.

I do not think the material in C:TCN is particularly bad.  Some of it's
not particularly good, but there's plenty there to demonstrate that
many of the errors in the book are absolutely beyond the scope of what
could reasonably come from someone even reasonably familiar with C.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/4/2010 10:57:31 PM

On 2010-04-04, Richard Heathfield <rjh@see.sig.invalid> wrote:
> Malcolm McLean wrote:
>> I think the title of Schildt's book invites misplaced criticism.
>> Whilst the book is entitled a "reference" it is in fact a tutorial.

> So what you're actually saying is that the first error is on the front 
> cover.

Basically.  I would really like to know where this notion that it was
not a "reference" came from.  Is this more Nilges stuff?  His never-ending
list of mutually-exclusive claims as to why the book should not be
panned is too large for me to remember.

But really, I've read it, I've seen people use it.  It's sold as a
reference, it's structured to be used as a reference, the book explicitly
states that it is intended for use by experienced programmers who need
to keep a reference around for looking things up...

The notion that it's "not a reference" is incomprehensible.  It's a BAD
reference, to be sure, but that doesn't mean it's not a reference.

Where did that notion come from?

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/4/2010 11:29:52 PM

On Apr 4, 1:54=A0pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
wrote:
>
> I've been asked by Edward Nilges to comment on this webpage.
> I had kept out of it, partly because of the tone of the debate, partly
> because, not having read "C the complete reference" I don't have a
> qualified opinion on the book.

And yet, like all members in good standing in this group,
here you are posting about it...

> The webpage is too focused on errors to be considered a review, and it
> is too partisan to be considered an errata document.

It might be good dessert topping...

> Much mention has
> been made on comp.lang.c of legal liability. I've no idea what the
> legal situation would be, except that this sort of "knocking copy" is
> very commonly available on the web.
>
I heard on TV that there's a bunch of crap on the
web but maybe they're just jealous...

> I think the title of Schildt's book invites misplaced criticism.
> Whilst the book is entitled a "reference" it is in fact a tutorial.
> The needs of pedagogy and definition are often opposed.

You know, you think and sound a little like "SpinNosey"
hisself...

> A beginner
> needs an explanation in simple, everyday language.

Well, this is an important point, but you're missing it,
again as a member in good standing in this group.

When you write a book (or a newspaper/magazine article,
or even a short story/novel, for that matter), you must
always consider two things: your target audience, and
where you want to take them.

Now when you say "beginner", what do you mean in the
context of the target audience for the book?  "SpinNosey"
seems to think that the target audience are people who
have college degrees in Computer Science or an equivalent
knowledge level.  This is fine, but does the book
really address THAT audience correctly in terms of
"taking them" to an understanding of "C" given their
CS knowledge?

> A reference work
> requires definitions, free from all error. It's very easy to find
> errata in books full of teaching code, particularly if you adopt
> stringent criteria.

I'm going to cut you off here, because you're talking
crap...you'd thank me if you knew how stupid you sound
in the next few sentences, so I'll snip them as a favor
to your family...
>
> The very first error in "C the complete nonsense" is:
>
> In general, negative numbers are represented using the two's
> complement approach...
> This is not a C feature. It is a common implementation, but it is
> specifically not required. (Binary is, but one's complement is not
> unheard of.)
>
> This is suprious, Schildt qualifes by "in general".
>
OK, but let's get back to my question: what PRACTICAL
lesson has a person with CS knowledge learned about "C"
from the above?

I'm actually thinking they may have a LITTLE something
out of it, so I kind of agree with you it may be "spurious"
to call that an "error"...but then I definitely DON'T
have a CS degree, you'd have to tell me what the point
is of the above...

> The next one is
> The following heading occurs:
>
> static Global Variables
> No such thing. A static variable outside of a function has file scope,
> which is distinct from global scope.
>
> Whilst I haven't read the book, this is probably spurious as well. The
> term "global variable" can be used either for file scope variables or
> variables with external linkage.
>
OK, here we go, read carefully.  Once again, I'm no
CS guru, but IN GENERAL I think those people are
concerned about SCOPE and DURATION of variables in
a program.

Now here is a defining moment to impart an important
lesson to the CS audience about "C", and to me it seems
he blows it.

As you may or may not know, "C" uses the "static"
keyword differently in different places, and I think
very counter-intuitively and confusingly for ANYBODY,
BUT PARTICULARLY I WOULD THINK FOR A CS PERSON.

I mean what's your first thought when you hear
the word "static" in a computer programming context?
I know what MINE is, but how about you?  Not that it
matters, since you're gonna be confused by the "static"
keyword no matter what.  "C" is a very democratic language,
it screws over EVERYBODY who comes in contact with it.

In fact, it's basically a "feature" of the language
to do things sideways, bass-ackwards, upside-down,
and as inconsistently as possible.  It's almost like
a practical joke played on the world by socially
maladjusted dorks taking out their revenge for
a tragic series of high school humiliations.

Now what I just wrote is, I believe, the only
CORRECT way to teach ANYBODY the "C" programming
language.  If you include this in the Forward
to the book, it alerts the reader that they will
be encountering numerous examples of confusing
non-logic as they "learn" about "C".

Then when you come to the "static" keyword,
they're prepared to be flummoxed by "C" using
the word to RESTRICT scope in some places
and EXPANDING duration in others...and they're
much more likely to learn AND REMEMBER the
"rules".

But every book about "C" I've ever read was
a COMPLETE WASTE OF TIME, even if it was "accurate",
because it failed to EXPLAIN the language, but
rather gave an implied EXCUSE by merely reciting
the "facts".  Then when somebody actually tries
to write a "C" program and fails, they think
it's THEIR fault, and not the fault of the
language creators and book authors...BUT THE
TRUTH IS, FAILURE TO WRITE A "C" PROGRAM JUST
MEANS YOU'RE AN INTELLIGENT, CARING, DECENT,
NORMAL HUMAN BEING!!!

And as far as the subject book is concerned,
a header of "static Global Variables" DEFINITELY
counts as an error in MY book, per the above...

> Enough said. Two errors in two errata. I could go on,

No you couldn't, because when people say, "I could
go on", THEY NEVER CAN, they're just quitting while
they're ahead...

> doing exactly
> the same thing to "C the complete nonsense" as Seebs has done to
> Schildt.
>
This is getting out of hand...reviews of the review
of the book, truncated reviews of the review of the
book by somebody who's never read the book, now I'm
reviewing the truncated review of the review of the
book by somebody who's never read the book...what's
next, reviews of the review of the book by people
who've never read the review of the book?

> I don't like libel laws

Great, I'll get to work on my web-site about
you, with your address and the libel that you
run a child prostitution ring from that address
(that's how the nutcases in misc.invest.stocks
roll, it's a lot of fun).  You have a poor
understanding of how civilized modern societies
MUST function...

> and I think threats of legal action are heavy-
> handed, and not credible unless they come from the person allegedly
> libelled himself.

In legal terms, nobody but the person libeled has
any "standing" to sue, which is just ONE of the
reasons that "SpinNosey" is so crazy with threats
lawsuits about stuff that's not about him...

> However Nilges
> is actually right, "C the complete nonsense" is a bad webpage and
> should be either removed or substantially revised.

Well, on careful review, it seems to bear out what the
guys on TV said about everything on the web being a
bunch of crap, but whaddaya gonna do?  Remove every
crummy ill-conceived poorly-written useless web-site
from the Internet, and Cisco would go out of business
in two days...

---
William Ernest Reid
0
Reply Bill 4/4/2010 11:48:20 PM

Keith Thompson wrote:
<snip>
> "C: The Complete Nonsense" is a valuable
> warning to those who might otherwise be misled by reading Schildt's
> books.  It could stand some revision, particularly an update to the
> latest edition of the book.

My preference would be for each entry to state which edition of CTCR it 
refers, and for a "Fixed in..." column to be added where appropriate. 
That way, the site would serve all those unfortunate enough to have a 
copy of CTCR, not just those with the latest edition.

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/5/2010 12:12:44 AM

Bill Reid wrote:
> On Apr 4, 1:54 pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
> wrote:
<snip>
>> I think the title of Schildt's book invites misplaced criticism.
>> Whilst the book is entitled a "reference" it is in fact a tutorial.
>> The needs of pedagogy and definition are often opposed.
> 
> You know, you think and sound a little like "SpinNosey"
> hisself...

No. Malcolm's sentences are coherent, meaningful, and almost invariably 
polite. He doesn't always think things through, he's by no means always 
right, and I certainly don't always agree with him (in fact, for some 
reason I rarely agree with Malcolm), but he's nothing like the moronic 
bozo with whom you are endeavouring to compare him.

<rant snipped>

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/5/2010 12:26:35 AM

On 2010-04-04, Keith Thompson <kst-u@mib.org> wrote:
> The phrase "in general" is ambiguous; it can mean either "usually" or
> "always".  Assuming that "in general" was meant as "usually", he could
> (and IMHO should) have mentioned that other representations exist.

Yes.  At the time, I understood "in general" to mean "always" -- now that
I'm aware that it could be used either way, I'd probably phrase such
a criticism differently, although I stand by the substance of it.

>> Whilst I haven't read the book, this is probably spurious as well. The
>> term "global variable" can be used either for file scope variables or
>> variables with external linkage.

> And is therefore ambiguous, and therefore IMHO should be avoided in a
> book that purports to teach C.

Or at least explained, or something.

> In a quick reading, it appears to me that the first two listed errors
> happen to be the least substantial.

Agreed.

>> I don't like libel laws and I think threats of legal action are heavy-
>> handed, and not credible unless they come from the person allegedly
>> libelled himself.

I still don't see the relevance here, except in that it's probably a
reference to the neverending flood of threats of legal action Nilges
seems to generate.

>> I suspect Schildt himself just regards this sort of
>> criticism as the inevitable concomitant of success.

This is true, I think -- and most significantly, *he does not care that
his books are wrong*.  Or if he does, he's never admitted it, acknowledged
it, or responded positively to any kind of criticism that I'm aware of.
I did once get a very condescending fax full of badly-argued attempts to
justify his use of "void main".  Was it sincere?  That he stopped using
it in future books suggests that it was not -- it was offered only to make
the publisher feel like he didn't think he was wrong.

>> The books do very
>> well on the market, and no-one is forced to buy them. However Nilges
>> is actually right, "C the complete nonsense" is a bad webpage and
>> should be either removed or substantially revised.

> I disagree completely.  "C: The Complete Nonsense" is a valuable
> warning to those who might otherwise be misled by reading Schildt's
> books.  It could stand some revision, particularly an update to the
> latest edition of the book.

The books don't seem to do as well now -- there hasn't been a new edition
for ten years, suggesting that it doesn't sell as well as the previous
ones.  Partially, I suspect, because a large number of people now know
that Schildt's writing on C is atrocious.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/5/2010 12:40:51 AM

Seebs <usenet-nospam@seebs.net> writes:
> On 2010-04-04, Keith Thompson <kst-u@mib.org> wrote:
>> The phrase "in general" is ambiguous; it can mean either "usually" or
>> "always".  Assuming that "in general" was meant as "usually", he could
>> (and IMHO should) have mentioned that other representations exist.
>
> Yes.  At the time, I understood "in general" to mean "always" -- now that
> I'm aware that it could be used either way, I'd probably phrase such
> a criticism differently, although I stand by the substance of it.

As a professional writer, Schildt should certainly be aware of the
ambiguity.

[...]

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/5/2010 2:18:39 AM

On 5 Apr, 00:48, Bill Reid <hormelf...@gmail.com> wrote:
> On Apr 4, 1:54=A0pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
>
> > Enough said. Two errors in two errata. I could go on,
>
> No you couldn't, because when people say, "I could
> go on", THEY NEVER CAN, they're just quitting while
> they're ahead...
>
Next error: Schild writes printf("%f", sizeof(int)) and printf("%d",
sizeof(int));
The first is indisputably a real error. Without a copy of the book we
can't tell whether it is glitch - the cast somehow missed - or a more
serious error. The second is an error because of the vandalism wreaked
on the C language by size_t. The proposed fix printf("%lu", (unsigned
long) sizeof(int)) would be very confusing to beginners. However we do
have the first real errata entry.

Next error - sizeof() an array that is passed as a parameter. A real
error. This is a confusing and inconsistent backwater of C syntax,
however it is a real error and it should be picked up.

Next error - "This shorthand [presumably +=3D, -=3D,*-, /=3D, %=3D, &=3D et=
c]
works for all the binary operators". Technically the structure member
operator is a binary operator, as are logical &&. So Schildt's
sentence is literally incorrect. However we don't use natural language
in that very qualified, literal sense. Not a real error.

Next error: a variable referenced when scanf() fails. I don't have a
copy of the book. However whilst the result is undefined behaviour, in
practice what will always happen is that a calculations is made with a
garbage value. A real error, but not a serious one.

Next error: Schildt uses the terms "stack" and "heap". To be ultra-
correct, of course, we should talk of automatic and dynamic memory, or
whatever the C term is for the malloc() pool, I've forgotten myself.
But this is a classic case of demanding definitions where the author
intends to give an explanation.

So OK, there are a few real errors in Schildt's book which the webpage
picks up. But the rate of real errors to errors created by an
insistence on over-literal interpretations, and the rejection of any
type of simplification for the purposes of readability, isn't very
high. Only one error (the sizeof a parameter) so far is both
unambigiously real and presented in a manner that is fair to Schildt,
and the scanf() error is also real. We're up to page 131 and we've
found one glitchy page where everything seems to be going wrong with
sizeof(), and one minor bug in the use of scanf(). That doesn't seem
to me a particuarly bad error rate for a programming book.


0
Reply Malcolm 4/5/2010 6:55:14 PM

Malcolm McLean a �crit :


[snip]

> 
> I don't like libel laws and I think threats of legal action are heavy-
> handed, and not credible unless they come from the person allegedly
> libelled himself. I suspect Schildt himself just regards this sort of
> criticism as the inevitable concomitant of success. The books do very
> well on the market, and no-one is forced to buy them. However Nilges
> is actually right, "C the complete nonsense" is a bad webpage and
> should be either removed or substantially revised.

I agree. When I presented sections of my tutorial here, some people
(heathfield, thompson and their acolytes) started destroying every
sentence with the peadntic remarks and style that seebs uses against schild.

Those people *need* to destroy to survive. The cult of pedantic
"correctness" over semantic understanding (you can't expect explaining
everything in a tutorial in the first page) and the desire to destroy
all work by people that doesn't belong to their group are their
principal characteristics.

I have been enduring those poeple for years (and I suppose I will have
to continue).

I find excellent that you stand against them.

jacob
0
Reply jacob 4/5/2010 7:23:50 PM

jacob navia <jacob@jacob.remcomp.fr> writes:
> Malcolm McLean a écrit :
>
> [snip]
>
>>
>> I don't like libel laws and I think threats of legal action are heavy-
>> handed, and not credible unless they come from the person allegedly
>> libelled himself. I suspect Schildt himself just regards this sort of
>> criticism as the inevitable concomitant of success. The books do very
>> well on the market, and no-one is forced to buy them. However Nilges
>> is actually right, "C the complete nonsense" is a bad webpage and
>> should be either removed or substantially revised.
>
> I agree. When I presented sections of my tutorial here, some people
> (heathfield, thompson and their acolytes) started destroying every
> sentence with the peadntic remarks and style that seebs uses against schild.

No, we were trying to help you improve it.  And my last name is
spelled with a capital 'T'; please treat it with the same respect
with which I treat yours.

> Those people *need* to destroy to survive.

As long as you believe that, you will never understand what we're
trying to do here.  I have no desire or ability to destroy you,
and I find your repeated claims that I do insulting.

>                                            The cult of pedantic
> "correctness" over semantic understanding (you can't expect explaining
> everything in a tutorial in the first page) and the desire to destroy
> all work by people that doesn't belong to their group are their
> principal characteristics.
>
> I have been enduring those poeple for years (and I suppose I will have
> to continue).
>
> I find excellent that you stand against them.

Of course you do.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/5/2010 7:37:17 PM

Keith Thompson a écrit :
> 
> No, we were trying to help you improve it.  And my last name is
> spelled with a capital 'T'; please treat it with the same respect
> with which I treat yours.
> 


So, let's make this clear:


(1) You have the right of treating me of "jerk" several times in public.
     In this same group.

(2) I mustn't forget to capitalize the t of your name because if I do,
     you feel upset.

I think that bothering to press the shift key is too much effort for
people like you. Either you accept the lower case or...

you learn how to use a killfile, that you brand here so often as a
"weapon".

I fear that you lack the mental abilities to do that though.

Good luck!

0
Reply jacob 4/5/2010 8:58:10 PM

On 2010-04-05, Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:
> Next error: Schild writes printf("%f", sizeof(int)) and printf("%d",
> sizeof(int));
> The first is indisputably a real error. Without a copy of the book we
> can't tell whether it is glitch - the cast somehow missed - or a more
> serious error. The second is an error because of the vandalism wreaked
> on the C language by size_t. The proposed fix printf("%lu", (unsigned
> long) sizeof(int)) would be very confusing to beginners. However we do
> have the first real errata entry.

In context, it's clearly the more serious error -- no intent of casting,
just a plain typo.

I don't think size_t is at fault here -- I think the language is about
as sane as it can be given its requirements.

> Next error - sizeof() an array that is passed as a parameter. A real
> error. This is a confusing and inconsistent backwater of C syntax,
> however it is a real error and it should be picked up.

That it is a confusing and inconsistent backwater is not a *mitigating*
factor; it is an *exacerbating* factor, making the error much more
serious.

It does, however, have room to get worse.

The original, from the 3rd edition:
	/* Write 6 integers to a disk file. */
	void put_rec(int rec[6], FILE *fp)
	{
	  int len;

	  len = fwrite(rec, sizeof rec, 1, fp);
	  if(len != 1) printf("write error");
	}

The description:
	"Coded as shown, put_rec() compiles and runs correctly on
	any computer, no matter how many bytes are in an integer."

This is a very well-written explanation of something which is totally
false.

So.  Let's see how it gets fixed in the 4th edition:

	/* Write 6 integers to a disk file. */
	void put_rec(int rec[6], FILE *fp)
	{
	  int len;

	  len = fwrite(rec, sizeof(int)*6, 1, fp);
	  if(len != 1) printf("Write Error");
	}

This is a work of art.  Schildt has replaced a very good example, which
would have illustrated something useful and interesting, with a very
bad example, which illustrates essentially nothing.  This example no
longer tells you anything about sizeof().

If you wanted to make a good example, you could do something like:

	int rec[6] = { 0, 1, 2, 3, 4, 5 };

	len = fwrite(rec, 1, sizeof(rec), fp);
	if (len != sizeof(rec)) printf("write error\n");

The problem is that, by declaring that we are writing a single object
of that size, Schildt has made it impossible to understand what's happening;
more useful by far would be to show writing a given number of bytes, not
a single object of some other size.

> Next error - "This shorthand [presumably +=, -=,*-, /=, %=, &= etc]
> works for all the binary operators". Technically the structure member
> operator is a binary operator, as are logical &&. So Schildt's
> sentence is literally incorrect. However we don't use natural language
> in that very qualified, literal sense. Not a real error.

We do use natural language that way when we are writing a "reference".

> Next error: a variable referenced when scanf() fails. I don't have a
> copy of the book. However whilst the result is undefined behaviour, in
> practice what will always happen is that a calculations is made with a
> garbage value. A real error, but not a serious one.

Your "in practice... always" is vastly overclaimed.

Please do us all a favor, though, and write the guy treated with
THERAC-25 and let him know that calculations made with a garbage
value are "not a serious error".

> Next error: Schildt uses the terms "stack" and "heap". To be ultra-
> correct, of course, we should talk of automatic and dynamic memory, or
> whatever the C term is for the malloc() pool, I've forgotten myself.
> But this is a classic case of demanding definitions where the author
> intends to give an explanation.

Except that the EXPLANATION IS WRONG.

That's the problem you seem to be missing.  His explanation of the interaction
of these two kinds of memory is just plain useless in most cases, and flatly
wrong for a lot of systems.  I haven't seen anything in years where you
can actually overrun program code or memory by filling up the stack.

> So OK, there are a few real errors in Schildt's book which the webpage
> picks up. But the rate of real errors to errors created by an
> insistence on over-literal interpretations, and the rejection of any
> type of simplification for the purposes of readability, isn't very
> high.

Oversimplification for purposes of "readability", when it produces false
beliefs about a topic one is purporting to teach, is indeed a real error.

> Only one error (the sizeof a parameter) so far is both
> unambigiously real and presented in a manner that is fair to Schildt,
> and the scanf() error is also real. We're up to page 131 and we've
> found one glitchy page where everything seems to be going wrong with
> sizeof(), and one minor bug in the use of scanf(). That doesn't seem
> to me a particuarly bad error rate for a programming book.

But:
1.  I wasn't listing everything up to that page; I was just listing things
that stuck out as interesting.
2.  Getting everything wrong with sizeof() is a totally fatal flaw in a
book purporting to teach, or describe, C.
3.  Your belief that the bug is "minor" is not supported by the evidence
of the real world.

Mostly, though... This was *typical*.  The whole book is like this.

Okay, flipped to a random pgae.

	#include <stdio.h>

	void main(void)
	{
	  char str[80];
	  freopen("OUTPUT", "w", stdout);
	  printf("Enter a string: ");
	  gets(str);
	  printf(str);
	}

Let's see.

1.  main declared incorrectly.
2.  No error check for freopen.
3.  No newline or flush for the prompt, so no guarantee that
it's actually been written.
4.  Who cares whether it's flushed?  If the freopen() succeeded,
"stdout" will now be the file OUTPUT, so the user won't see the
prompt anyway.
5.  gets() is unsafe and should never be used on buffers, let alone
tiny buffers.
6.  printf(str) can quite easily explode spectacularly if "str"
happens to have any format characters in it.

Seriously.  Flip the book open to a random page, get garbage code.
Sure, you could argue that some of these don't have much of an
effect, but the net result is that there is no reasonable expectation
that the program will do what it is described as doing in a useful
way under any conceivable circumstances.

Oh, wait.  I'm not even done.  He then "explains":

	In general, redirecting the standard streams by using freopen() is
	useful in special circumstances, such as debugging.  However,
	performing disk I/O using redirected stdin and stdout is not as
	efficient as using functions like fread() or fwrite().

This makes no sense.  No hint is given as to what the difference
in "efficiency" might be.

This example, and description, are unchanged in the 4th edition.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/5/2010 8:58:22 PM

On 2010-04-05, jacob navia <jacob@jacob.remcomp.fr> wrote:
> I agree. When I presented sections of my tutorial here, some people
> (heathfield, thompson and their acolytes) started destroying every
> sentence with the peadntic remarks and style that seebs uses against schild.

I haven't seen it, but... I don't think you are quite understanding this.

> Those people *need* to destroy to survive.

No.

You should have SEEN the floods of corrections I got from my tech reviewer
on some early drafts of my book.  That happens.  It's not "destroying" -- it's
what is necessary to make a good book possible.

> The cult of pedantic
> "correctness" over semantic understanding (you can't expect explaining
> everything in a tutorial in the first page) and the desire to destroy
> all work by people that doesn't belong to their group are their
> principal characteristics.

There is no desire to destroy any work.  I just want work to be *good*.
I would love to see a good, readable, and accurate C tutorial.  I haven't
yet.

I agree that you can't explain everything in a tutorial on the first page.
I put a lot of blood, sweat, and tears into building a shell book which
is able to give a reader a decent overview of the shell, by picking easy
things to explain early, building on those, and... <drumroll>  WARNING
THE READER WHEN I AM OVERSIMPLIFYING.  With a forward reference to the
more detailed discussion.

I've not yet heard any complaints about that aspect of the book.  There
are indeed errata (various typos, mostly, occasional historical errors),
but for the most part, it seems to be solid and usable.

Because I had a tech reviewer who was pedantic, thorough, and cared about
getting things right, not about making me feel good.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/5/2010 9:01:48 PM

Malcolm McLean wrote:

<snip>

> Next error: Schild writes printf("%f", sizeof(int)) and printf("%d",
> sizeof(int));
> The first is indisputably a real error. Without a copy of the book we
> can't tell whether it is glitch - the cast somehow missed - or a more
> serious error. The second is an error because of the vandalism wreaked
> on the C language by size_t.

No, the second is an error because he got the format specifier wrong.

<snip>

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/5/2010 9:08:24 PM

jacob navia wrote:
> Malcolm McLean a �crit :
> 
> 
> [snip]
> 
>>
>> I don't like libel laws and I think threats of legal action are heavy-
>> handed, and not credible unless they come from the person allegedly
>> libelled himself. I suspect Schildt himself just regards this sort of
>> criticism as the inevitable concomitant of success. The books do very
>> well on the market, and no-one is forced to buy them. However Nilges
>> is actually right, "C the complete nonsense" is a bad webpage and
>> should be either removed or substantially revised.
> 
> I agree. When I presented sections of my tutorial here, some people
> (heathfield, thompson and their acolytes) started destroying every
> sentence with the peadntic remarks and style that seebs uses against 
> schild.

I won't presume to speak for Keith, but what I did when you presented 
sections of your tutorial here was point out some errors that you had 
made. If you fixed those errors, good came out of the criticism - and 
that was the intent. If you didn't fix the errors, why not?

> Those people *need* to destroy to survive.

No, those people are trying to improve the tutorial by pointing out 
inaccuracies, *so that you can remove those inaccuracies*.

> The cult of pedantic
> "correctness" over semantic understanding 

The cult of pretending it's okay to mis-teach your subject.

 > (you can't expect explaining
> everything in a tutorial in the first page)

Of course not. But you don't have to be wrong on the first page, either.

> and the desire to destroy
> all work by people that doesn't belong to their group are their
> principal characteristics.

I have neither the desire nor the ability to destroy your tutorial. Only 
you can do that.

> I have been enduring those poeple for years (and I suppose I will have
> to continue).

It would be better if you stopped enduring your critics and started 
paying attention to them instead.

> I find excellent that you stand against them.

That doesn't surprise me in the slightest.

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/5/2010 9:13:37 PM

jacob navia wrote:
> Keith Thompson a écrit :
>>
>> No, we were trying to help you improve it.  And my last name is
>> spelled with a capital 'T'; please treat it with the same respect
>> with which I treat yours.
>>
> 
> 
> So, let's make this clear:
> 
> 
> (1) You have the right of treating me of "jerk" several times in public.
>     In this same group.

If you behave like a jerk, it is hardly surprising if, on occasion, 
people call you a jerk.

> (2) I mustn't forget to capitalize the t of your name because if I do,
>     you feel upset.

Getting people's names right is a matter of courtesy. Getting them wrong 
is a matter of discourtesy. Consider how you would react if Keith 
consistently referred to you as, say, "Nivia".

> I think that bothering to press the shift key is too much effort for
> people like you.

When I first read that sentence, I thought you were accusing Keith of 
being too lazy to use the shift key appropriately. But now I realise 
that what you really meant is that you don't think Keith is sufficiently 
valuable for you to expend your valuable shift-key-pressing energy on 
him. Such arrogance is staggering. I sincerely hope that the above is a 
mis-translation of your real meaning, and that you did not intend to 
come across as such a conceited moron.


> Either you accept the lower case or...

Oh, it's easy to accept that you're too stupid or too ill-mannered to 
get his name right. What's harder to accept is that you desire to be 
stupid or ill-mannered. But that does seem to be your intent.

> you learn how to use a killfile, that you brand here so often as a
> "weapon".

A killfile isn't a weapon. It's just a tool to filter out morons. Are 
you suggesting that you're a moron?

> I fear that you lack the mental abilities to do that though.

Check your pronouns.

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/5/2010 9:24:37 PM

On Apr 5, 2:55=A0pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
wrote:
> Next error - "This shorthand [presumably +=3D, -=3D,*-, /=3D, %=3D, &=3D =
etc]
> works for all the binary operators". Technically the structure member
> operator is a binary operator, as are logical &&. So Schildt's
> sentence is literally incorrect.

Actual, the structure member operator is a postfix operator.

REH
0
Reply REH 4/5/2010 9:30:04 PM

REH <spamjunk@stny.rr.com> writes:

> On Apr 5, 2:55 pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
> wrote:
>> Next error - "This shorthand [presumably +=, -=,*-, /=, %=, &= etc]
>> works for all the binary operators". Technically the structure member
>> operator is a binary operator, as are logical &&. So Schildt's
>> sentence is literally incorrect.
>
> Actual, the structure member operator is a postfix operator.

The structure member operator has two operands.  That makes it a
binary operator.
-- 
char a[]="\n .CJacehknorstu";int putchar(int);int main(void){unsigned long b[]
={0x67dffdff,0x9aa9aa6a,0xa77ffda9,0x7da6aa6a,0xa67f6aaa,0xaa9aa9f6,0x11f6},*p
=b,i=24;for(;p+=!*p;*p/=4)switch(0[p]&3)case 0:{return 0;for(p--;i--;i--)case+
2:{i++;if(i)break;else default:continue;if(0)case 1:putchar(a[i&15]);break;}}}
0
Reply Ben 4/5/2010 9:39:13 PM

jacob navia <jacob@jacob.remcomp.fr> writes:
> Keith Thompson a écrit :
>> No, we were trying to help you improve it.  And my last name is
>> spelled with a capital 'T'; please treat it with the same respect
>> with which I treat yours.
>
> So, let's make this clear:

Yes, let's.

> (1) You have the right of treating me of "jerk" several times in public.
>     In this same group.

I'm not sure what "treating me of" is supposed to mean.  I understand
that English isn't your first language, and you're certainly
far better at it than I am at any language other than English,
so don't take this as a criticism.  I *called" you an "arrogant
jerk" exactly once.  Apparently you still haven't gotten over it.
At the time, I felt it was justified.  We can discuss the reasons
further if you insist, but I'd prefer to let it drop.

> (2) I mustn't forget to capitalize the t of your name because if I do,
>     you feel upset.

I calmly *asked* you to spell my name correctly, as a simple human
courtesy.  I have consistently referred to you as "jacob" with a lower
case 'j' because that's how you sign your own name.

> I think that bothering to press the shift key is too much effort for
> people like you. Either you accept the lower case or...

No, pressing the shift key is not any significant effort at all.  I'd
be glad to refer to you as "Jacob" rather than "jacob" if you ever
said that that's what you prefer.

> you learn how to use a killfile, that you brand here so often as a
> "weapon".

No, it's not a weapon, and I don't believe I've ever branded it as
one, but I'm certainly considering it.

> I fear that you lack the mental abilities to do that though.

I'll read the rest of this thread before responding to that.  In the
meantime, please consider whether you really want this discussion to
take place on that level.

> Good luck!

Same to you.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/5/2010 9:58:15 PM

"bartc" <bartc@freeuk.com> writes:

> "Ben Pfaff" <blp@cs.stanford.edu> wrote in message
> news:87eiit37ge.fsf@blp.benpfaff.org...
>> REH <spamjunk@stny.rr.com> writes:
>>
>>> On Apr 5, 2:55 pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
>>> wrote:
>>>> Next error - "This shorthand [presumably +=, -=,*-, /=, %=, &= etc]
>>>> works for all the binary operators". Technically the structure member
>>>> operator is a binary operator, as are logical &&. So Schildt's
>>>> sentence is literally incorrect.
>>>
>>> Actual, the structure member operator is a postfix operator.
>>
>> The structure member operator has two operands.  That makes it a
>> binary operator.
>
> It's a strange one. The right-hand operand can't be any conventional
> expression. I wouldn't call it a proper binary operator.
>
> And (having a quick look in the C99 reference) it does seem to be a
> post-fix op followed by an identifier.

The structure member operator's second operand is unusual, but it
certainly has two.  That makes it binary.

Whether it is a postfix operator is irrelevant, since that is an
orthogonal classification.  I can imagine postfix, infix, and
prefix binary operators: e.g. 1 2 + versus 1 + 2 versus + 1 2.
(I'm not claiming that C has a binary operator with each kind of
syntax.)
-- 
char a[]="\n .CJacehknorstu";int putchar(int);int main(void){unsigned long b[]
={0x67dffdff,0x9aa9aa6a,0xa77ffda9,0x7da6aa6a,0xa67f6aaa,0xaa9aa9f6,0x11f6},*p
=b,i=24;for(;p+=!*p;*p/=4)switch(0[p]&3)case 0:{return 0;for(p--;i--;i--)case+
2:{i++;if(i)break;else default:continue;if(0)case 1:putchar(a[i&15]);break;}}}
0
Reply Ben 4/5/2010 10:13:59 PM

Ben Pfaff <blp@cs.stanford.edu> writes:
> REH <spamjunk@stny.rr.com> writes:
>> On Apr 5, 2:55 pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
>> wrote:
>>> Next error - "This shorthand [presumably +=, -=,*-, /=, %=, &= etc]
>>> works for all the binary operators". Technically the structure member
>>> operator is a binary operator, as are logical &&. So Schildt's
>>> sentence is literally incorrect.
>>
>> Actual, the structure member operator is a postfix operator.
>
> The structure member operator has two operands.  That makes it a
> binary operator.

It's listed in C99 6.5.2 "Postfix operators".

The suffix of a "." operator isn't what I'd call an "operand".
The prefix is an expression.  The suffix is not, and cannot be,
an expression.

One (IMHO reasonable) way to look at it is that ".foo" is a distinct
postfix operator for each member name "foo".  That's how I tend
to think of it, but it does have the drawback of creating a nearly
unlimited number of operators.

Another way to look at it is that "." is a binary operator whose
right operand is special in that it must be a member name, not an
expression in its own right.

Another might be to treat it as a special syntactic form that isn't
really an "operator" at all.

The overriding consideration, IMHO, is that the C standard calls
it a postfix operator.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/5/2010 10:16:19 PM

"Ben Pfaff" <blp@cs.stanford.edu> wrote in message 
news:87eiit37ge.fsf@blp.benpfaff.org...
> REH <spamjunk@stny.rr.com> writes:
>
>> On Apr 5, 2:55 pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
>> wrote:
>>> Next error - "This shorthand [presumably +=, -=,*-, /=, %=, &= etc]
>>> works for all the binary operators". Technically the structure member
>>> operator is a binary operator, as are logical &&. So Schildt's
>>> sentence is literally incorrect.
>>
>> Actual, the structure member operator is a postfix operator.
>
> The structure member operator has two operands.  That makes it a
> binary operator.

It's a strange one. The right-hand operand can't be any conventional 
expression. I wouldn't call it a proper binary operator.

And (having a quick look in the C99 reference) it does seem to be a post-fix 
op followed by an identifier.

-- 
Bartc 

0
Reply bartc 4/5/2010 10:19:35 PM

On 5 Apr, 21:58, Seebs <usenet-nos...@seebs.net> wrote:

....

> Mostly, though... This was *typical*. =A0The whole book is like this.
>
> Okay, flipped to a random pgae.
>
> =A0 =A0 =A0 =A0 #include <stdio.h>
>
> =A0 =A0 =A0 =A0 void main(void)
> =A0 =A0 =A0 =A0 {
> =A0 =A0 =A0 =A0 =A0 char str[80];
> =A0 =A0 =A0 =A0 =A0 freopen("OUTPUT", "w", stdout);
> =A0 =A0 =A0 =A0 =A0 printf("Enter a string: ");
> =A0 =A0 =A0 =A0 =A0 gets(str);
> =A0 =A0 =A0 =A0 =A0 printf(str);
> =A0 =A0 =A0 =A0 }
>
> Let's see.
>
> 1. =A0main declared incorrectly.
> 2. =A0No error check for freopen.
> 3. =A0No newline or flush for the prompt, so no guarantee that
> it's actually been written.
> 4. =A0Who cares whether it's flushed? =A0If the freopen() succeeded,
> "stdout" will now be the file OUTPUT, so the user won't see the
> prompt anyway.
> 5. =A0gets() is unsafe and should never be used on buffers, let alone
> tiny buffers.
> 6. =A0printf(str) can quite easily explode spectacularly if "str"
> happens to have any format characters in it.

Your web page is useful. Thanks for writing it. If Nilges causes you
genuine trouble at your publisher's - in other words they choose to
give him any credibility whatsoever - I'd be glad to send them some
comments to redress the balance.

That said, they should see him for what he is: a total kook with
personality problems.

James
0
Reply James 4/5/2010 10:26:12 PM

Keith Thompson <kst-u@mib.org> writes:
> Ben Pfaff <blp@cs.stanford.edu> writes:
>> REH <spamjunk@stny.rr.com> writes:
>>> On Apr 5, 2:55 pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
>>> wrote:
>>>> Next error - "This shorthand [presumably +=, -=,*-, /=, %=, &= etc]
>>>> works for all the binary operators". Technically the structure member
>>>> operator is a binary operator, as are logical &&. So Schildt's
>>>> sentence is literally incorrect.
>>>
>>> Actual, the structure member operator is a postfix operator.
>>
>> The structure member operator has two operands.  That makes it a
>> binary operator.
>
> It's listed in C99 6.5.2 "Postfix operators".
>
> The suffix of a "." operator isn't what I'd call an "operand".
> The prefix is an expression.  The suffix is not, and cannot be,
> an expression.
[...]

I'm going to backtrack a bit.  I hadn't realize that the C99 standard
has a definition for the word "operand".  C99 6.4.6p2:

    An _operand_ is an entity on which an operator acts.

There's no actual definition of "entity", but the implication is that
it's (at least) anything designated by an identifier.  C99 6.2.1p1..2:

  1 An identifier can denote an object; a function; a tag or a member
    of a structure, union, or enumeration; a typedef name; a label
    name; a macro name; or a macro parameter.
    [...]

  2 For each different entity that an identifier designates, the
    identifier is _visible_ (i.e., can be used) only within a region
    of program text called its _scope_.

So by my own argument (terms mean what the standard says they mean),
the member name following the "." operator is an operand.

The standard uses the phrase "binary operator" in several places, but
I don't believe it defines it or uses it in a section header.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/5/2010 10:29:28 PM

On 5 Apr, 23:26, James Harris <james.harri...@googlemail.com> wrote:
> On 5 Apr, 21:58, Seebs <usenet-nos...@seebs.net> wrote:
>
> ...
>
>
>
> > Mostly, though... This was *typical*. =A0The whole book is like this.
>
> > Okay, flipped to a random pgae.
>
> > =A0 =A0 =A0 =A0 #include <stdio.h>
>
> > =A0 =A0 =A0 =A0 void main(void)
> > =A0 =A0 =A0 =A0 {
> > =A0 =A0 =A0 =A0 =A0 char str[80];
> > =A0 =A0 =A0 =A0 =A0 freopen("OUTPUT", "w", stdout);
> > =A0 =A0 =A0 =A0 =A0 printf("Enter a string: ");
> > =A0 =A0 =A0 =A0 =A0 gets(str);
> > =A0 =A0 =A0 =A0 =A0 printf(str);
> > =A0 =A0 =A0 =A0 }
>
> > Let's see.
>
> > 1. =A0main declared incorrectly.
> > 2. =A0No error check for freopen.
> > 3. =A0No newline or flush for the prompt, so no guarantee that
> > it's actually been written.
> > 4. =A0Who cares whether it's flushed? =A0If the freopen() succeeded,
> > "stdout" will now be the file OUTPUT, so the user won't see the
> > prompt anyway.
> > 5. =A0gets() is unsafe and should never be used on buffers, let alone
> > tiny buffers.
> > 6. =A0printf(str) can quite easily explode spectacularly if "str"
> > happens to have any format characters in it.
>
> Your web page is useful. Thanks for writing it. If Nilges causes you
> genuine trouble at your publisher's - in other words they choose to
> give him any credibility whatsoever - I'd be glad to send them some
> comments to redress the balance.
>
> That said, they should see him for what he is: a total kook with
> personality problems.

By the way, it would be helpful if the page said at the top what
edition of the book it referred to. That doesn't diminish the
fundamental message to be wary of even well-known writers but it would
make it easier to cross check.

James
0
Reply James 4/5/2010 10:29:57 PM

On 04/ 6/10 07:23 AM, jacob navia wrote:
>
> Those people *need* to destroy to survive. The cult of pedantic
> "correctness" over semantic understanding (you can't expect explaining
> everything in a tutorial in the first page) and the desire to destroy
> all work by people that doesn't belong to their group are their
> principal characteristics.

Try explaining that to a compiler.  Programming is as much about 
correctness as it is about clarity.

Where you get that weird notion about the desire to "destroy" from is 
anybody's guess.

-- 
Ian Collins
0
Reply Ian 4/5/2010 10:31:25 PM

Keith Thompson <kst-u@mib.org> writes:

> Ben Pfaff <blp@cs.stanford.edu> writes:
>> REH <spamjunk@stny.rr.com> writes:
>>> On Apr 5, 2:55 pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
>>> wrote:
>> The structure member operator has two operands.  That makes it a
>> binary operator.
>
> It's listed in C99 6.5.2 "Postfix operators".

That's convenient, because it fits in the grammar at the same
level of precedence as the postfix operators.

> The suffix of a "." operator isn't what I'd call an "operand".
> The prefix is an expression.  The suffix is not, and cannot be,
> an expression.

One form of "sizeof" does not take an expression as its operand.
Do you consider that form of "sizeof" a nullary operator?  I have
not heard it described that way before.

[...]
> The overriding consideration, IMHO, is that the C standard calls
> it a postfix operator.

The C standard lists the "<" operator in a section titled
"Relational operators".  Do you consider "<" to be a binary
operator?
-- 
char a[]="\n .CJacehknorstu";int putchar(int);int main(void){unsigned long b[]
={0x67dffdff,0x9aa9aa6a,0xa77ffda9,0x7da6aa6a,0xa67f6aaa,0xaa9aa9f6,0x11f6},*p
=b,i=24;for(;p+=!*p;*p/=4)switch(0[p]&3)case 0:{return 0;for(p--;i--;i--)case+
2:{i++;if(i)break;else default:continue;if(0)case 1:putchar(a[i&15]);break;}}}
0
Reply Ben 4/5/2010 10:33:30 PM

On 2010-04-05, James Harris <james.harris.1@googlemail.com> wrote:
> On 5 Apr, 21:58, Seebs <usenet-nos...@seebs.net> wrote:
>> Mostly, though... This was *typical*. �The whole book is like this.
>>
>> Okay, flipped to a random pgae.
>>
>> � � � � #include <stdio.h>
>>
>> � � � � void main(void)
>> � � � � {
>> � � � � � char str[80];
>> � � � � � freopen("OUTPUT", "w", stdout);
>> � � � � � printf("Enter a string: ");
>> � � � � � gets(str);
>> � � � � � printf(str);
>> � � � � }
>>
>> Let's see.
>>
>> 1. �main declared incorrectly.
>> 2. �No error check for freopen.
>> 3. �No newline or flush for the prompt, so no guarantee that
>> it's actually been written.
>> 4. �Who cares whether it's flushed? �If the freopen() succeeded,
>> "stdout" will now be the file OUTPUT, so the user won't see the
>> prompt anyway.
>> 5. �gets() is unsafe and should never be used on buffers, let alone
>> tiny buffers.
>> 6. �printf(str) can quite easily explode spectacularly if "str"
>> happens to have any format characters in it.

Thanks for quoting this, I missed one.

gets() strips a trailing newline, printf() does not add it, so the
material written to the output file may not be usable; as the default
mode in C is "text mode", the above opened stdout in text mode, and the
behavior of writing text with no line terminator to text mode is not
particularly well-defined.

(That said, I think the fourth edition does change this program; it's
now "int main" and ends with "return 0".  None of the other issues are
addressed.)

> Your web page is useful. Thanks for writing it. If Nilges causes you
> genuine trouble at your publisher's - in other words they choose to
> give him any credibility whatsoever - I'd be glad to send them some
> comments to redress the balance.

I appreciate the offer.  I don't imagine it'll come up, but you never know.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/5/2010 10:37:07 PM

Ben Pfaff <blp@cs.stanford.edu> writes:
> Keith Thompson <kst-u@mib.org> writes:
>> Ben Pfaff <blp@cs.stanford.edu> writes:
>>> REH <spamjunk@stny.rr.com> writes:
>>>> On Apr 5, 2:55 pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
>>>> wrote:
>>> The structure member operator has two operands.  That makes it a
>>> binary operator.
>>
>> It's listed in C99 6.5.2 "Postfix operators".
>
> That's convenient, because it fits in the grammar at the same
> level of precedence as the postfix operators.

Are you suggesting that it's listed there *only* for convenience,
much as "typedef" is treated as a storage-class specifier?
Interesting, I hadn't thought of that.

>> The suffix of a "." operator isn't what I'd call an "operand".
>> The prefix is an expression.  The suffix is not, and cannot be,
>> an expression.
>
> One form of "sizeof" does not take an expression as its operand.
> Do you consider that form of "sizeof" a nullary operator?  I have
> not heard it described that way before.

Hmm.  I probably would think of it as a nullary operator if the
language didn't call it a unary operator.

> [...]
>> The overriding consideration, IMHO, is that the C standard calls
>> it a postfix operator.
>
> The C standard lists the "<" operator in a section titled
> "Relational operators".  Do you consider "<" to be a binary
> operator?

Certainly.

It has a section called "Unary operators", so we can reasonably assume
that the unary operators are exactly those listed in that section.
(All the unary operators have the same precedence.)  It doesn't have a
section called "Binary operators"; instead, the binary operators are
scattered across several sections.  It also doesn't have a definition
of "binary operator", so we have to depend on common sense.

I'm a bit uncomfortable with "." being both a postfix operator and a
binary operator, but I can live with it.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/5/2010 10:44:12 PM

Keith Thompson <kst-u@mib.org> writes:

> I'm going to backtrack a bit.  I hadn't realize that the C99 standard
> has a definition for the word "operand".  C99 6.4.6p2:
>
>     An _operand_ is an entity on which an operator acts.

I didn't know that either.  Thanks for the information.
-- 
"IMO, Perl is an excellent language to break your teeth on"
--Micah Cowan
0
Reply Ben 4/5/2010 10:44:16 PM

Keith Thompson <kst-u@mib.org> writes:

> It has a section called "Unary operators", so we can reasonably assume
> that the unary operators are exactly those listed in that section.
> (All the unary operators have the same precedence.)  

Postfix ++ and -- each have one operand, yet they are not in the
"unary operators" section.  (Maybe you consider that not an
exception because prefix ++ and -- are in the "unary operators"
section?)

> I'm a bit uncomfortable with "." being both a postfix operator and a
> binary operator, but I can live with it.

"Postfix" and "binary" are along two different orthogonal
classification axes.  As far as I can tell, an operator can be
postfix, prefix, or infix independently of being unary, binary,
ternary, or N-ary.  (I'm not sure that an unary operator can be
infix, unless parentheses for grouping is an example of an infix
unary operator.)
-- 
char a[]="\n .CJacehknorstu";int putchar(int);int main(void){unsigned long b[]
={0x67dffdff,0x9aa9aa6a,0xa77ffda9,0x7da6aa6a,0xa67f6aaa,0xaa9aa9f6,0x11f6},*p
=b,i=24;for(;p+=!*p;*p/=4)switch(0[p]&3)case 0:{return 0;for(p--;i--;i--)case+
2:{i++;if(i)break;else default:continue;if(0)case 1:putchar(a[i&15]);break;}}}
0
Reply Ben 4/5/2010 11:04:51 PM

On 2010-04-05, Keith Thompson <kst-u@mib.org> wrote:
> I'm a bit uncomfortable with "." being both a postfix operator and a
> binary operator, but I can live with it.

I'm not even entirely sure "operator" is the right name for it.

[] is a postfix-formed binary operator; it needs two things both of which
are values on which to operate.  I'm not at all convinced that the structure
member things are exactly "binary operators" in the same sense.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/5/2010 11:05:37 PM

On Apr 5, 5:39=A0pm, Ben Pfaff <b...@cs.stanford.edu> wrote:
> The structure member operator has two operands. =A0That makes it a
> binary operator.

Not according to the standard. It is classified as a postfix operator.
All binary operators using the E op E syntax, where E is an
expression. The member operator (also the indirection operator) can
only take an expression as the left-hand operator, like all postfix
operators. Its right-hand operand must be a member name.

REH
0
Reply REH 4/5/2010 11:40:49 PM

REH <spamjunk@stny.rr.com> writes:
> On Apr 5, 5:39 pm, Ben Pfaff <b...@cs.stanford.edu> wrote:
>> The structure member operator has two operands.  That makes it a
>> binary operator.
>
> Not according to the standard. It is classified as a postfix operator.
> All binary operators using the E op E syntax, where E is an
> expression. The member operator (also the indirection operator) can
> only take an expression as the left-hand operator, like all postfix
> operators. Its right-hand operand must be a member name.

Please cite the section of the standard that says the right operand of
a "binary operator" must be an expression, or that an operator cannot
be both postfix and binary.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 12:11:58 AM

On Apr 5, 8:11=A0pm, Keith Thompson <ks...@mib.org> wrote:
> REH <spamj...@stny.rr.com> writes:
> > On Apr 5, 5:39=A0pm, Ben Pfaff <b...@cs.stanford.edu> wrote:
> >> The structure member operator has two operands. =A0That makes it a
> >> binary operator.
>
> > Not according to the standard. It is classified as a postfix operator.
> > All binary operators using the E op E syntax, where E is an
> > expression. The member operator (also the indirection operator) can
> > only take an expression as the left-hand operator, like all postfix
> > operators. Its right-hand operand must be a member name.
>
> Please cite the section of the standard that says the right operand of
> a "binary operator" must be an expression, or that an operator cannot
> be both postfix and binary.
>

Show me an operator listed in the standard as a binary operator that
doesn't take expressions as both the left and right hand operator, or
one that is listed in both sections.

Mathematically, I would agree that the member operator is a binary
operator. But in C is a postfix operator, and the distinction is
relevant when writing a parser. If you've ever written a C parser, the
member operator parser perfectly as a postfix operator (with one extra
lexeme to the right of it), than some special form of binary
operator.

REH
0
Reply REH 4/6/2010 12:28:23 AM

On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
> Please cite the section of the standard that says the right operand of
> a "binary operator" must be an expression, or that an operator cannot
> be both postfix and binary.

Interestingly, the only time I see "binary operator" is by contrast to a
unary operator; thus, "binary +", "binary -", etcetera.

I think I'm going to concede this, based on:

	6.5.2.3 Structure and union members

	Constraints

	1  The first operand of the . operator shall have a qualified or
	   unqualified structure or union type, and the second operand shall
	   name a member of that type.

If the second thing, which "shall name a member of that type", is an
"operand", then "." is a binary operator.

I think the use of "operand" is sufficient to make this unambiguous.  My
instinctive dislike of calling it a "binary operator" is not enough to
win against the clear text of the standard.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 12:32:06 AM

On Apr 5, 8:32=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> I think the use of "operand" is sufficient to make this unambiguous. =A0M=
y
> instinctive dislike of calling it a "binary operator" is not enough to
> win against the clear text of the standard.
>

Really? I think the standard is quite clear that it is not (in the
sense of the language) a binary operator, unless someone on the
committee wants to chime in and tell me I am interpreting it wrong.


REH
0
Reply REH 4/6/2010 1:02:36 AM

Malcolm McLean <malcolm.mclean5@btinternet.com> writes:

> On 5 Apr, 00:48, Bill Reid <hormelf...@gmail.com> wrote:
>> On Apr 4, 1:54 pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
>>
>> > Enough said. Two errors in two errata. I could go on,
>>
>> No you couldn't, because when people say, "I could
>> go on", THEY NEVER CAN, they're just quitting while
>> they're ahead...
>>
> Next error: Schild writes printf("%f", sizeof(int)) and printf("%d",
> sizeof(int));
> The first is indisputably a real error. Without a copy of the book we
> can't tell whether it is glitch - the cast somehow missed - or a more
> serious error. The second is an error because of the vandalism wreaked
> on the C language by size_t. The proposed fix printf("%lu", (unsigned
> long) sizeof(int)) would be very confusing to beginners. However we do
> have the first real errata entry.

This same error occurs 6 times.  At no point does the code from the
book show the beginner how to print a size correctly.  The problem
isn't the one error as listed on Seebs's page, but that the book never
seems to tell the reader what they need to know.  Sure, gloss over it
early on (though I'd not gloss over it like this) but at some stage
the correct way to print a size_t should be in a "complete reference"
to C.

(Somewhere in the 4the edition it must do so because the author will
have to describe the new printf format letters.  No examples appear in
collected code, though.)

> Next error - sizeof() an array that is passed as a parameter. A real
> error. This is a confusing and inconsistent backwater of C syntax,
> however it is a real error and it should be picked up.

If the book is a reference (as per the title) then "inconsistent
backwaters" have to be included.  If it is a tutorial for beginners
(as you claim) why is this experienced writer including examples that
use "inconsistent backwaters" of the language?  It is either an error
of fact or an error of style.

> Next error - "This shorthand [presumably +=, -=,*-, /=, %=, &= etc]
> works for all the binary operators". Technically the structure member
> operator is a binary operator, as are logical &&. So Schildt's
> sentence is literally incorrect. However we don't use natural language
> in that very qualified, literal sense. Not a real error.

What, I wonder, is a "real" error -- do you mean that you don't
consider it significant?  I don't think it is all that significant
either except that it so easy to avoid.  "This shorthand works for
many of the binary operators" or "this shorthand works for all the
arithmetic and bitwise binary operators" would both work, or the
author could simply state the combinations that are permitted.

There are more binary operators than more critics have mentioned.
This statement calls into question the meaning of >= and <= (which now
appear to be assignments) and is posits the existence of ===, !==, >==
and <== which don't exist.

> Next error: a variable referenced when scanf() fails. I don't have a
> copy of the book. However whilst the result is undefined behaviour, in
> practice what will always happen is that a calculations is made with a
> garbage value. A real error, but not a serious one.

Except that, in what you call a tutorial, it is repeated time and time
again.  I don't think there is a single example that tests the return
form scanf, fscanf or sscanf in the whole book.  What a shame that
this tutorial never suggests the useful idiom:

  if (scanf("what I want", &where, ...) == number_of_items) {
      /* do stuff with my data... */
  }

> Next error: Schildt uses the terms "stack" and "heap". To be ultra-
> correct, of course, we should talk of automatic and dynamic memory, or
> whatever the C term is for the malloc() pool, I've forgotten myself.
> But this is a classic case of demanding definitions where the author
> intends to give an explanation.
>
> So OK, there are a few real errors in Schildt's book which the webpage
> picks up. But the rate of real errors to errors created by an
> insistence on over-literal interpretations, and the rejection of any
> type of simplification for the purposes of readability, isn't very
> high. Only one error (the sizeof a parameter) so far is both
> unambigiously real and presented in a manner that is fair to Schildt,
> and the scanf() error is also real. We're up to page 131 and we've
> found one glitchy page where everything seems to be going wrong with
> sizeof(), and one minor bug in the use of scanf(). That doesn't seem
> to me a particuarly bad error rate for a programming book.

I've commented on you comments just because I take a different view.
I fact I think this to-and-fro over the points in one commentary is
futile and not, ultimately, important.

Focusing on Seeb's web page misses the point.  I, too, have not read
the book, but the code is on-line and the examples don't show C being
used well and wisely.  This is a great shame in a popular book and is
(to my mind) far more significant than the details pointed out in the
error list.  One can argue endlessly if such and such a detail is a
"real error" or not, but i don't think anyone who knows C can argue
the book presents C as it should be written.

There are 92 examples of using gets and quite a few examples of
unconstrained %s input formats.  There are no examples of using the
return from scanf (and friends).  And then there are some of the most
convoluted input loops I've seem since I stopped marking first year
students' work[1].  printf(s) (or the equivalent) occurs often.  Not
every example is dangerous of course, but some are.  Why get this
anti-pattern into your reader's heads when there is not need to?

In an error list, you can claim that reading into a char and then
testing it against EOF is a detail, but when that incorrect idiom is
repeated several times the reader will surely come to think that it is
correct and "how things should be done".  Learners need to be told why
you read into a int, and not doing so at any point[2] is not a
simplification for the purposes of a smooth presentation of the
material -- it is a disservice to your readers.

If the author keeps passing one (or two) less than the size of the
array to fgets, readers will assume that you /need/ to do this.  If
the text explains that you don't have to do this, then readers will be
puzzled by the examples that do.  The best (simple) idiom for using
fgets with an array is

  if (fgets(buf, sizeof buf, fp)) /* ... use it */

but that is never illustrated.  Magic number sizes are used instead
and often odd ones to boot.

size_t values and objects are repeatedly treated as if they were ints.
You may disapprove of size_t, but someone learning C needs to know
what it is and how to use it correctly.  Using strlen(s)-1 without
testing for empty strings and printing size_t values using %d (ten
times at least) just gives the confused idea that string lengths and
object sizes are ints when they are not.  Learners deserve good,
clear, correct examples of how use these types, functions and
operators correctly.

Please, read the code (nearly 10,000 lines of it) and then report
back.  I would be very surprised if you think that it presents
beginners in C with good, clear, correct examples of how to use the
language?  That should be the real issue -- not whether this or that
error is a real error, a trivial error, or a serious error.

[1] For example:

  char ch;
  /* snip */
  while(!feof(in)) {
    ch = getc(in);
    if(!feof(in)) putc(ch, out);
  }

or:

  while(!feof(fp)) {
    fgets(str, 79, fp);
    printf(str);
  }

or:

  char c;
  /* snip */
  do {
    ch = getc(in);
    /* snip */
    if(ch=='\t') {
      /* snip */
    }
    else {
      putc(ch, out);
      /* snip */
    }
  } while(!feof(in));

or:

  while(*str) if(!ferror(fp)) fputc(*str++, fp);

or:

  while(!feof(fp)) putchar(getc(fp));

[2] It may be explained in the test but if it is, why is it not there
in the code examples?

-- 
Ben.
0
Reply Ben 4/6/2010 1:08:11 AM

On 2010-04-06, REH <spamjunk@stny.rr.com> wrote:
> On Apr 5, 8:32�pm, Seebs <usenet-nos...@seebs.net> wrote:
>> I think the use of "operand" is sufficient to make this unambiguous. �My
>> instinctive dislike of calling it a "binary operator" is not enough to
>> win against the clear text of the standard.

> Really? I think the standard is quite clear that it is not (in the
> sense of the language) a binary operator, unless someone on the
> committee wants to chime in and tell me I am interpreting it wrong.

The term "binary operator" is never formally defined.  As such, I'm
going to fall back on "a binary operator is an operator with two operands".

Since the name-of-a-member is the second of two "operands", the thing it is
an operand of is a binary operator.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 1:09:15 AM

On 2010-04-06, Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:
> And then there are some of the most
> convoluted input loops I've seem since I stopped marking first year
> students' work[1].

> [1] For example:

>   char ch;
>   /* snip */
>   while(!feof(in)) {
>     ch = getc(in);
>     if(!feof(in)) putc(ch, out);
>   }

This one is, strictly speaking, at least correct.  Mostly.

But why not write:

	int ch;
	while ((ch = getc(in)) != EOF)
		putc(ch, out);

>   while(!feof(fp)) {
>     fgets(str, 79, fp);
>     printf(str);
>   }

This one, I'd point out, is essentially GUARANTEED to print the last
line twice.  There is no way this code was ever tested.

>   char c;
>   /* snip */
>   do {
>     ch = getc(in);
>     /* snip */
>     if(ch=='\t') {
>       /* snip */
>     }
>     else {
>       putc(ch, out);
>       /* snip */
>     }
>   } while(!feof(in));

This one will, in general, at least once putc(EOF).

(I'm assuming the "char c" and "putc(ch, ...)" is a typo from your post,
Ben?  Or is that an even MORE obvious proof that this stuff never got
compiled?)

> or:

>   while(*str) if(!ferror(fp)) fputc(*str++, fp);

The wrongness of this one is going to be non-obvious to many readers.

As long as you never have a write error, of course, this will work.

Think about what happens if you have a write error, though:  When will
the loop terminate?  You're never going to increment "str", because the
increment is inside a test against ferror(), which will just keep
returning true.

This is an exceptionally bad illustration of testing an error.

> or:

>   while(!feof(fp)) putchar(getc(fp));

Same deal as the other one; will putchar(EOF) at least once.

And this seems to be *consistent* -- all of the code is crap.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 1:17:11 AM

"Seebs" <usenet-nospam@seebs.net> wrote in message 
news:slrnhrl0f4.n2f.usenet-nospam@guild.seebs.net...
> On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
>> Please cite the section of the standard that says the right operand of
>> a "binary operator" must be an expression, or that an operator cannot
>> be both postfix and binary.
>
> Interestingly, the only time I see "binary operator" is by contrast to a
> unary operator; thus, "binary +", "binary -", etcetera.
>
> I think I'm going to concede this, based on:
>
> 6.5.2.3 Structure and union members
>
> Constraints
>
> 1  The first operand of the . operator shall have a qualified or
>    unqualified structure or union type, and the second operand shall
>    name a member of that type.
>
> If the second thing, which "shall name a member of that type", is an
> "operand", then "." is a binary operator.
>
> I think the use of "operand" is sufficient to make this unambiguous.  My
> instinctive dislike of calling it a "binary operator" is not enough to
> win against the clear text of the standard.

The standard is being sloppy. The "." symbol is just a bit of syntax that 
superficially resembles a proper operator.

But if you think that the "." symbol is an operator, because the standard 
says it is, then that's fine...

-- 
Bartc 

0
Reply bartc 4/6/2010 1:20:06 AM

Seebs <usenet-nospam@seebs.net> writes:

> On 2010-04-06, Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:
>> And then there are some of the most
>> convoluted input loops I've seem since I stopped marking first year
>> students' work[1].
>
>> [1] For example:
>
>>   char ch;
>>   /* snip */
>>   while(!feof(in)) {
>>     ch = getc(in);
>>     if(!feof(in)) putc(ch, out);
>>   }
>
> This one is, strictly speaking, at least correct.  Mostly.
>
> But why not write:
>
> 	int ch;
> 	while ((ch = getc(in)) != EOF)
> 		putc(ch, out);
>

Yes, there was no claim that this is wrong, just convoluted.  It is a
shame that the book does not present a clear and simple pattern for
using the various input primitives correctly.

I worried that by citing more code my point would get diluted.  I
don't mind an error or two.  I don't mind the odd idiosyncratic usage.
What I mind is the absence of good advice on (and examples of) how to
use the various input functions correctly:

That you read characters into an int (or a wint_t if you are using
wide characters) and test for EOF (or WEOF); that you test the result
of fgets in the loop; that you test the result of scanf (and friends)
for success rather than failure, and so on.  C was designed to be used
in a particular way and to fight against that gives rise to obtuse and
(in some cases) erroneous code.

<snip detailed discussion>

> And this seems to be *consistent* -- all of the code is crap.

I'd rather not say that.  In all seriousness, I don't know what the
criteria are for "crap" code -- it means different things to different
people.  Going simply by the code examples, the reader will not learn
how to use C simply and correctly and that means that I could not
recommend the book at anyone learning C.  That, ultimately, is what
matters.

-- 
Ben.
0
Reply Ben 4/6/2010 1:50:53 AM

On 2010-04-06, Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:
> Seebs <usenet-nospam@seebs.net> writes:
>> On 2010-04-06, Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:
>>> And then there are some of the most
>>> convoluted input loops I've seem since I stopped marking first year
>>> students' work[1].

>>>   /* snip */
>>>   while(!feof(in)) {
>>>     ch = getc(in);
>>>     if(!feof(in)) putc(ch, out);
>>>   }

>> This one is, strictly speaking, at least correct.  Mostly.

> Yes, there was no claim that this is wrong, just convoluted.  It is a
> shame that the book does not present a clear and simple pattern for
> using the various input primitives correctly.

Right.  I was pointing it out, not because I thought you thought otherwise,
but because it was unusual in that it didn't actually do anything
obviously incorrect, it was just clumsy.

> I worried that by citing more code my point would get diluted.  I
> don't mind an error or two.  I don't mind the odd idiosyncratic usage.

What I mind is that:
1.  Every usage is idiosyncratic.
2.  More examples seem to be buggy than not, at least of those you
found.

> What I mind is the absence of good advice on (and examples of) how to
> use the various input functions correctly:

Agreed.

>> And this seems to be *consistent* -- all of the code is crap.

> I'd rather not say that.  In all seriousness, I don't know what the
> criteria are for "crap" code -- it means different things to different
> people.  Going simply by the code examples, the reader will not learn
> how to use C simply and correctly and that means that I could not
> recommend the book at anyone learning C.  That, ultimately, is what
> matters.

What I mean by "crap" is that a large number of the examples are
sufficiently poorly-written that I would not expect them to pass any
halfway-decent code review.  They are bad examples, they don't
illustrate the points they're supposed to, they don't illustrate how
to do these things expressively or cleanly...  It's not useful as
teaching material.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 1:57:31 AM

On Tue, 06 Apr 2010 10:31:25 +1200
Ian Collins <ian-news@hotmail.com> wrote:

> On 04/ 6/10 07:23 AM, jacob navia wrote:
> >
> > Those people *need* to destroy to survive. The cult of pedantic
> > "correctness" over semantic understanding (you can't expect
> > explaining everything in a tutorial in the first page) and the
> > desire to destroy all work by people that doesn't belong to their
> > group are their principal characteristics.
> 
> Try explaining that to a compiler.  Programming is as much about 
> correctness as it is about clarity.
> 
> Where you get that weird notion about the desire to "destroy" from is 
> anybody's guess.
> 

Maybe from Nilges, maybe from Han from China, maybe from both...
0
Reply Lorenzo 4/6/2010 2:09:06 AM

On Apr 5, 1:58=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-05, Malcolm McLean <malcolm.mcle...@btinternet.com> wrote:
>
> > Next error - sizeof() an array that is passed as a parameter. A real
> > error. This is a confusing and inconsistent backwater of C syntax,
> > however it is a real error and it should be picked up.
>
> That it is a confusing and inconsistent backwater is not a *mitigating*
> factor; it is an *exacerbating* factor, making the error much more
> serious.
>
Well, of course, except for people with "SpinNosey" "logic",
which is apparently "catching"...

> It does, however, have room to get worse.
>
> The original, from the 3rd edition:
> =A0 =A0 =A0 =A0 /* Write 6 integers to a disk file. */
> =A0 =A0 =A0 =A0 void put_rec(int rec[6], FILE *fp)
> =A0 =A0 =A0 =A0 {
> =A0 =A0 =A0 =A0 =A0 int len;
>
> =A0 =A0 =A0 =A0 =A0 len =3D fwrite(rec, sizeof rec, 1, fp);
> =A0 =A0 =A0 =A0 =A0 if(len !=3D 1) printf("write error");
> =A0 =A0 =A0 =A0 }
>
> The description:
> =A0 =A0 =A0 =A0 "Coded as shown, put_rec() compiles and runs correctly on
> =A0 =A0 =A0 =A0 any computer, no matter how many bytes are in an integer.=
"
>
Well, for people with "SpinNosey" "logic", it WOULD
compile and run "correctly" (without crashing), so,
NOT AN ERROR!!!

> This is a very well-written explanation of something which is totally
> false.
>
Impossible...if it's "clear" it must be correct...

> So. =A0Let's see how it gets fixed in the 4th edition:
>
> =A0 =A0 =A0 =A0 /* Write 6 integers to a disk file. */
> =A0 =A0 =A0 =A0 void put_rec(int rec[6], FILE *fp)
> =A0 =A0 =A0 =A0 {
> =A0 =A0 =A0 =A0 =A0 int len;
>
> =A0 =A0 =A0 =A0 =A0 len =3D fwrite(rec, sizeof(int)*6, 1, fp);
> =A0 =A0 =A0 =A0 =A0 if(len !=3D 1) printf("Write Error");
> =A0 =A0 =A0 =A0 }
>
> This is a work of art. =A0

If we define "art" as "not knowing "C" from a
hole in the ground"...

> Schildt has replaced a very good example, which
> would have illustrated something useful and interesting, with a very
> bad example, which illustrates essentially nothing. =A0This example no
> longer tells you anything about sizeof().
>
Was THAT the point of the "example"?  I thought it
was how NOT to work with arrays passed as parameters
to a function...now THAT would have been useful...

> If you wanted to make a good example, you could do something like:
>
> =A0 =A0 =A0 =A0 int rec[6] =3D { 0, 1, 2, 3, 4, 5 };
>
> =A0 =A0 =A0 =A0 len =3D fwrite(rec, 1, sizeof(rec), fp);
> =A0 =A0 =A0 =A0 if (len !=3D sizeof(rec)) printf("write error\n");
>
> The problem is that, by declaring that we are writing a single object
> of that size, Schildt has made it impossible to understand what's happeni=
ng;
> more useful by far would be to show writing a given number of bytes, not
> a single object of some other size.
>
OK, I'm about to go on another mini-"rant", as "HeathenFeld"
would describe it, about technical "tutorials".  I'll
keep it short, though, and just say another GIGANTIC
problem with most books is the fallacy of EXAMPLE IN
LIEU OF EXPLANATION.  Hopefully, the problem I'm alluding
to is self-evident, and is all the more damaging when
"describing" "C", since many TERRIBLE "examples" COULD work
some times but not at others, and rarely will illustrate
the important underlying principle...

---
William Ernest Reid
0
Reply Bill 4/6/2010 2:27:50 AM

On Apr 6, 9:57=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Ben Bacarisse <ben.use...@bsb.me.uk> wrote:
>
> > Seebs <usenet-nos...@seebs.net> writes:
> >> On 2010-04-06, Ben Bacarisse <ben.use...@bsb.me.uk> wrote:
> >>> And then there are some of the most
> >>> convoluted input loops I've seem since I stopped marking first year
> >>> students' work[1].
> >>> =A0 /* snip */
> >>> =A0 while(!feof(in)) {
> >>> =A0 =A0 ch =3D getc(in);
> >>> =A0 =A0 if(!feof(in)) putc(ch, out);
> >>> =A0 }
> >> This one is, strictly speaking, at least correct. =A0Mostly.
> > Yes, there was no claim that this is wrong, just convoluted. =A0It is a
> > shame that the book does not present a clear and simple pattern for
> > using the various input primitives correctly.
>
> Right. =A0I was pointing it out, not because I thought you thought otherw=
ise,
> but because it was unusual in that it didn't actually do anything
> obviously incorrect, it was just clumsy.
>
> > I worried that by citing more code my point would get diluted. =A0I
> > don't mind an error or two. =A0I don't mind the odd idiosyncratic usage=
..
>
> What I mind is that:
> 1. =A0Every usage is idiosyncratic.
> 2. =A0More examples seem to be buggy than not, at least of those you
> found.
>
> > What I mind is the absence of good advice on (and examples of) how to
> > use the various input functions correctly:
>
> Agreed.
>
> >> And this seems to be *consistent* -- all of the code is crap.
> > I'd rather not say that. =A0In all seriousness, I don't know what the
> > criteria are for "crap" code -- it means different things to different
> > people. =A0Going simply by the code examples, the reader will not learn
> > how to use C simply and correctly and that means that I could not
> > recommend the book at anyone learning C. =A0That, ultimately, is what
> > matters.
>
> What I mean by "crap" is that a large number of the examples are
> sufficiently poorly-written that I would not expect them to pass any
> halfway-decent code review. =A0They are bad examples, they don't
> illustrate the points they're supposed to, they don't illustrate how
> to do these things expressively or cleanly... =A0It's not useful as
> teaching material.

I shall rejoin this discussion prematurely to support Jacob and
Malcolm. "Cease-fire" is over a bit early, I'm afraid. I wanted, in
part, to see if things would "quiet down" if I suspended
participation, but when Malcolm, admittedly on my request, posted the
issue blew up, with undeserved attacks on his credibility.

Peter, the issue here isn't Schildt's book. It is "C: the Complete
Nonsense", not "C: the Complete Reference".

Even if all of what you say is true (and on specific errata you are
right), it doesn't add up to a proper critique, furthermore, it has a
silly and extreme attitude about "bad" books.

I have shown you, in a manner independent of big-E (where big-E is the
total number of errors in Schildt's book, your book, Heathfield's
book, or my book), that you don't even approximate the big-E for
Schildt. You have had 15 years to do this, and you failed. Therefore,
you need to withdraw the complaint. I will take responsibility for
repairing wikipedia after you do so in a manner that will not mention
your part in this rather sordid affair, but someone else will have to
change the C FAQ.

Furthermore, you have a strange and troubling intolerance about "bad"
books, whereas cultivated people normally have libraries filled with
incunabula and curiosities, including many books with "errors".

For example, Ayn Rand published an extremely silly book, "Notes for
the New Intellectual", in 1961. Sydney Hook, a real philosopher with
real credentials, showed in detail how Rand made several basic errors,
but at no time did he call for NFTNI to be pulped.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/6/2010 4:21:31 AM

Seebs <usenet-nospam@seebs.net> writes:
> On 2010-04-06, Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:
>> And then there are some of the most
>> convoluted input loops I've seem since I stopped marking first year
>> students' work[1].
>
>> [1] For example:
>
>>   char ch;
>>   /* snip */
>>   while(!feof(in)) {
>>     ch = getc(in);
>>     if(!feof(in)) putc(ch, out);
>>   }
>
> This one is, strictly speaking, at least correct.  Mostly.

Does your use of "Mostly" refer to the fact that the code will go into
an infinite loop on an input error?

> But why not write:
>
> 	int ch;
> 	while ((ch = getc(in)) != EOF)
> 		putc(ch, out);

Right.  Apart from being both clearer and more idiomatic, it
doesn't misbehavie *too* badly on an input error.  (Ideally it
should probably report the error somehow, but leaving that out in
a tutorial is understandable.)

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 4:37:58 AM

On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
> Does your use of "Mostly" refer to the fact that the code will go into
> an infinite loop on an input error?

No, it refers to me having missed that.  Good catch.

That's why Schildt's books are so bad -- the code is sufficiently badly
broken that several skilled professionals looking at it can *miss* some of
the errors, because they're masked by others.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 5:00:15 AM

On Apr 5, 5:00=A0am, Richard Heathfield <r...@see.sig.invalid> wrote:
> Malcolm McLean wrote:
> > I've been asked by Edward Nilges to comment on this webpage.
> > I had kept out of it, partly because of the tone of the debate, partly
> > because, not having read "C the complete reference" I don't have a
> > qualified opinion on the book.
> > The webpage is too focused on errors to be considered a review, and it
> > is too partisan to be considered an errata document. Much mention has
> > been made on comp.lang.c of legal liability. I've no idea what the
> > legal situation would be, except that this sort of "knocking copy" is
> > very commonly available on the web.
>
> > I think the title of Schildt's book invites misplaced criticism.
> > Whilst the book is entitled a "reference" it is in fact a tutorial.
>
> So what you're actually saying is that the first error is on the front
> cover.

If you wrote, or edited, C Unleashed, you'd know that the author is
not in charge of the cover material.
>
> --
> Richard Heathfield <http://www.cpax.org.uk>
> Email: -http://www. +rjh@
> "Usenet is a strange place" - dmr 29 July 1999
> Sig line vacant - apply within

0
Reply spinoza1111 4/6/2010 6:00:26 AM

On Apr 5, 5:48=A0am, Keith Thompson <ks...@mib.org> wrote:
> Malcolm McLean <malcolm.mcle...@btinternet.com> writes:
> > I've been asked by Edward Nilges to comment on this webpage.
>
> And you decided to do so? =A0Ok, whatever.

Bite me, Snidely.
>
> > I had kept out of it, partly because of the tone of the debate, partly
> > because, not having read "C the complete reference" I don't have a
> > qualified opinion on the book.
> > The webpage is too focused on errors to be considered a review, and it
> > is too partisan to be considered an errata document. Much mention has
> > been made on comp.lang.c of legal liability. I've no idea what the
> > legal situation would be, except that this sort of "knocking copy" is
> > very commonly available on the web.
>
> > I think the title of Schildt's book invites misplaced criticism.
> > Whilst the book is entitled a "reference" it is in fact a tutorial.
>
> What is misplaced about criticizing a misleading title?

It is in line with the ordinary usage of hard-working programmers who
mean by a USEFUL reference, a book which covers all issues but in a
usable way. The Standards document is a "reference" in a different and
legalistic sense. Kernighan and Ritchie is not a reference.

>
> > The needs of pedagogy and definition are often opposed. A beginner
> > needs an explanation in simple, everyday language.
>
> A beginner also needs an explanation that's *correct*. =A0Many of
> Schildt's errors are just errors; there would be no pedagogical harm
> in correcting them.

No, a brilliant teacher can make errors in detail. In fact, the best
are often admit doubt and error. Einstein in particular stumbled in
math, according to his 2007 biographer Walter Kauffman.

Sitting in front of, and auditing, a teacher who is always right is
neither a necessary nor a sufficient condition for learning.

Confucius asked more questions than he gave answers.

You are correct, however, in saying that there would be no harm in
correcting Schildt. But CTCN fails to do this in relation to its
implication that there are "hundreds" (n>100) or "dozens" (n >
approximately 48) errors. And CTCN, not CTCR, is the problem here.

Furthermore, to the ordinary, hard-working programmer, C then and now
constitutes a language with many different dialects. A Platonic idea
of absolute truth as regards such a gelatinous artifact as C does not
exist. Instead, everyday pragmatism (is the book useful) applies, and
this is ordinarily verified by what the free market says. In the free
market, the book went to four editions. Case closed.


>
> [...]
>
> > The very first error in "C the complete nonsense" is:
>
> > In general, negative numbers are represented using the two's
> > complement approach...
> > This is not a C feature. It is a common implementation, but it is
> > specifically not required. (Binary is, but one's complement is not
> > unheard of.)
>
> > This is suprious, Schildt qualifes by "in general".
>
> The phrase "in general" is ambiguous; it can mean either "usually" or
> "always". =A0Assuming that "in general" was meant as "usually", he could
> (and IMHO should) have mentioned that other representations exist.

That's just wrong. The only use of "general" to mean "always" is in
formal logic, which is signally misleading as regards English usage
(as in the case of the false belief that in ordinary language anything
can be clear and wrong). A logical "generalization" is a statement
symbolized (x)[P(x)] which is true for all x.

In ordinary English usage, however, "in general" means "usually".
>
> > The next one is
> > The following heading occurs:
>
> > static Global Variables
> > No such thing. A static variable outside of a function has file scope,
> > which is distinct from global scope.
>
> > Whilst I haven't read the book, this is probably spurious as well. The
> > term "global variable" can be used either for file scope variables or
> > variables with external linkage.
>
> And is therefore ambiguous, and therefore IMHO should be avoided in a
> book that purports to teach C.

Sez who? My experience in the corporation is that newbie C
programmers, especially in financial firms, fail to have a computer
science background save in "rocket science" on Wall Street, not, in my
experience, in credit scoring on LaSalle Street. They need to learn
important CS distinctions before language law.


>
> > Enough said. Two errors in two errata. I could go on, doing exactly
> > the same thing to "C the complete nonsense" as Seebs has done to
> > Schildt.
>
> So why did you stop after just two errors? =A0If it was inappropriate
> for Seebs to list just a subset of the errors rather than covering the
> entire book, is it fair (to your readers, if not to Seebs, Schildt,
> or Nilges) to criticize C:TCN based on just the first two errors?

Blow me. I then treated ALL of CTCN, point by point and as usual
you're lying here.
>
> In a quick reading, it appears to me that the first two listed errors
> happen to be the least substantial. =A0Keep reading. =A0The third error
> is a use of "%f" to print an expression of type size_t (followed by
> a use of "%d" for the same purpose, but that's not *quite* as bad
> an error). =A0The fourth is an application of sizeof to a parameter
> of type int[6], which is really of type int*. =A0These are just plain
> wrong, and they're demonstrations that Schildt didn't even try his
> code before publishing it. =A0The printf format error *might* be a
> typo, perhaps one introduced in typesetting, but the sizeof error
> is just a fundamental conceptual misunderstanding on Schildt's part.

You don't know this, and there is no confirmation of your theory in
the noncode text.

Furthermore, the issue isn't Schildt: it's Seebach. He's plainly
incompetent as a C programmer according to the evidence he's posted
and CTCN is inadequate.


>
> And he claims to be teaching C.
>
> As long as I'm posting I'll mention that
> =A0 =A0 The "heap" is a DOS term...
> is a perfectly correct statement. =A0It doesn't necessarily imply
> that it's *only* a DOS term. =A0It also happens to be a Unix term,
> and a Windows term, and a Symbian term, and so forth (and yes,
> an updated version of the web page should probably clarify that).
> The point is that it isn't a C term.

Again, misuse of ill-understood and second-hand concepts from formal
logic to criticise ordinary English shows that you understand neither
formal logic nor English, which is a common failure of incompetent
programmers. Just as "clear but wrong" is a solecism except when
applied to relatively uninteresting analytic falsehoods expressed in
formal language, and just as you confused the English phrase "in
general" with universal quantification in formal logic, here you rely
on the overgeneral, logical fact that the English copular verb "is"
can mean logical identity OR subset inclusion to buttfuck "is" into a
true interpretation.

However, a literate person knows how to disambiguate "is", as do
literate OO programmers, who use "is-a" to show subset in inheritance
as opposed to "has-a" to show reference to an object, and "=3D=3D" in C
Sharp in Java to show identity.

The rule is that for "a is b", if a names a class with > 1 members n
or (in "the 'heap' is a DOS term") a unit set of one member
coextensive with the member, and b obviously names a class with m>n
members, then its being stated, formally, that a is either a member or
a subset of b.

Whereas when a and b are at the same level, if they are both singular
things or unit sets, or sets of roughly equal cardinality, "a is b"
asserts "a=3D=3Db".

Since there are many "DOS terms" whereas "the heap" is one "term",
Seebach was asserting, wrongly, that the word "heap" is used only in
reference to MS-DOS.

You barbarize language to be right.

The only thing that you say that's true is that "the 'heap' is not a C
term". No, it isn't. But it is impossible, an ignotus per ignotum
(explaining the unknown using the unknown) to "teach" C using only C
terms. As I have said, Herb was describing an instance of runtime in
the same way the high school teacher illustrates the Pythagorean
theorem using chalk.

>
> (Nilges doesn't seem to understand -- or maybe he does -- that the
> more he keeps pushing his agenda, the more attention will be brought
> to Schildt's errors.)

That is unfortunately true, and a concern of mine. I would be
delighted if you downloaded Microsoft .Net Visual Basic Express and my
compiler for Quickbasic written for my book "Build Your Own .Net
Language and Compiler", and analyzed my code for errors since this
would increase my sales and make me money..."there is no such thing as
bad publicity".

But the problem at this time is not Schildt, it is Seebach, who has
fraudulently based his career in some measure on a document that is
far more flawed than Schildt.

The ball is in your court, and that of Seebach. You can end this,
including the troubling information that has emerged about Seebach's
competence, by encouraging Peter to simply withdraw the document and
substituting a blank page. If he does so, I will not post on this
issue. At this point, to spare Schildt further anguish, I waive my
request for an apology.



>
> > I don't like libel laws and I think threats of legal action are heavy-
> > handed, and not credible unless they come from the person allegedly
> > libelled himself. I suspect Schildt himself just regards this sort of
> > criticism as the inevitable concomitant of success. The books do very
> > well on the market, and no-one is forced to buy them. However Nilges
> > is actually right, "C the complete nonsense" is a bad webpage and
> > should be either removed or substantially revised.
>
> I disagree completely. =A0"C: The Complete Nonsense" is a valuable
> warning to those who might otherwise be misled by reading Schildt's
> books. =A0It could stand some revision, particularly an update to the
> latest edition of the book.

To believe that anyone can be "misled" by a book is Fascism. I was
assigned Sherman's "Programming and Coding for Digital Computers" in
my first computer science class. It described the IBM 7094 computer, a
fixed word length, single address mainframe with a 36 bit word. The
computer the class used was the IBM 1401, a "variable word length",
two address mainframe. I failed to attend the lecture in which the
professor explained this, sharing some of Peter's intellectual vanity
when I was 20.

Because Sherman provided no clue on 1401 machine language programming
for the first assignment, I bought a separate McGraw Hill book on the
1401 and a 1401 reference manual from the IBM shop in the IBM building
which used to be on the Chicago river.

However, despite the fact that Sherman was globally wrong in relation
to our needs, I read it from cover to cover several times and it was
valuable, since it, and not the McGraw Hill book or the IBM manual,
described how a computer could simulate another. It also explained
floating point, and a number of other computer science topics.

The worst books on "programming" (where "programming" books bear an
ambiguous and rather louche relationship to computer science) I ever
saw were written by the manager in the computer center at my uni. They
concerned a forgotten mini-mainframe, the IBM System/3 of 1970, which
was intended for small and medium businesses so IBM could stop
supporting the extremely popular 1401.

This manager was a nice guy, if stuffy and pompous to a fault; a
former IBMer, he wore blue suits and pocket hankies. Once he got a
load of my long hair and antiwar armband, he was hostile until he
happened to pick up a listing of my assembler code, and liked the
facts that on each side of each line I had a literate comment and that
the code was great.

This was because we were both of Irish Catholic educated background
and were both verbose...he perhaps to a fault, since his books were
absurdly stuffy and pompous in tone. Many people think there's nothing
more stuffy and pompous than my own prose, but he broke the mold.

After he discovered my list he was much kinder, but still advised me
to get a haircut.

His books were "bad" in your sense. But intelligent people never use
the mental model in which one can be misled by a book. That in fact
was the philosophy behind the Catholic Church's "index of prohibited
books" which is no more. A grown up knows that it is his
responsibility to evaluate all books fairly. A grownup programmer
tests code snippets, and treats time taken to correct the creator's
mistake as a valuable time for learning.

Look at

http://www.cvm.qc.ca/gconti/905/BABEL/Index%20Librorum%20Prohibitorum-1948.=
htm

This is the Catholic Church's "Index of Prohibited Books" in 1948.
Here are entries for Spinoza:

Spinoza, Benedictus de	Tractatus theologico-politicus, continens
dissertationes aliquot, quibus ostenditur libertatem philosophandi non
tantum salva pietate et reipublicae pace posse concedi, sed eandem
nisi cum pace reipublicae ipsaque pietate tolli non posse.	1679
Spinoza, Benedictus de	"Opera posthuma."	1690

Imagine what it would mean for someone to find himself on this index.
How they feel.

I'm afraid that for you, technology has been marked-off as a laager or
zone of control in which you don't have to intellectually mature, and
can practice out of date habits of intolerance. And I'm afraid that
given your approval of a buggy off by one strlen last month, this
intolerance does not imply competence.


>
> --
> Keith Thompson (The_Other_Keith) ks...@mib.org =A0<http://www.ghoti.net/~=
kst>
> Nokia
> "We must do something. =A0This is something. =A0Therefore, we must do thi=
s."
> =A0 =A0 -- Antony Jay and Jonathan Lynn, "Yes Minister"

0
Reply spinoza1111 4/6/2010 7:06:09 AM

On Apr 5, 6:57=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-04, Malcolm McLean <malcolm.mcle...@btinternet.com> wrote:

snip snip snip

> Furthermore, the fact is, when these books were selling well and people u=
sing
> them came to this group, we consistently found that the book was a VERY B=
AD
> tutorial -- people who learned C from Schildt had a horrible time learnin=
g
> the language, because he does a very good job of creating cognitive maps
> which are wrong, whether subtly or obviously.

I think that they were, in actuality, Microsoft people whom you
bullied, since Schildt is Microsoft centric. Neither you, nor Richard,
nor Kiki give any evidence of teaching or programming competence.

>
> > This is suprious, Schildt qualifes by "in general".
>
> I don't think that qualification is strong enough to cover for the fact
> that making this claim doesn't help at all with the teaching.

Actually, "in general" was both true and useful. As I have said, real
programmers are mostly, and perhaps unfortunately, like you: they
didn't take CS. In your case, the failure is inexcusable, since Mommie
and Daddy, in your case, sent you to university. In the case of a
programmer in credit scoring on LaSalle Street in Chicago, the failure
may be excusable because Daddy left and Mommie struggled to support
him.

But in either case, you'd have learned in class that it's more
important to first learn that most modern machines use twos complement
than the language law of C, since they are learning CS in parallel
with a programming language. You act so precious about the laws of C,
but have nothing but contempt for wider rules.



>
> > Whilst I haven't read the book, this is probably spurious as well. The
> > term "global variable" can be used either for file scope variables or
> > variables with external linkage.
>
> Not correctly.
>
> > Enough said. Two errors in two errata. I could go on, doing exactly
> > the same thing to "C the complete nonsense" as Seebs has done to
> > Schildt.
>
> You probably could -- but I think that you'd find that, even once you
> nitpicked the nitpicks, you'd find that the substantive errors MASSIVELY
> outweighed them.

"Massively" in upper case? You haven't made your case. You listed
twenty "errors" only 6 of which we have confirmed.

>
> Why did you pick two of the worst errata, rather than looking at, say,
> the example where Schildt totally misidentifies the behavior of sizeof(),
> or shows the use of %f to print a size_t?

He did this in code, not in discussion.

>
> > I don't like libel laws and I think threats of legal action are heavy-
> > handed, and not credible unless they come from the person allegedly
> > libelled himself. I suspect Schildt himself just regards this sort of
> > criticism as the inevitable concomitant of success. The books do very
> > well on the market, and no-one is forced to buy them. However Nilges
> > is actually right, "C the complete nonsense" is a bad webpage and
> > should be either removed or substantially revised.
>
> Obviously, I don't agree. =A0I agree that it might be beneficial to revis=
e
> the page... But why bother? =A0The book in question is fifteen years old,
> and modern editions, while they continue to teach extremely bad habits,
> are still full of nonsense.
>
> I am pretty offended that you seem to have gone out of your way to
> cherry-pick bad examples rather than reading the whole selection and
> developing an informed opinion. =A0

Wow. The hypocrisy. Oh the hypocrisy. Peter, you cherry picked twenty
trivial things out of a large book because you had no qualifications
worth note as a programmer, thinking that if you trashed Schildt, you
would magically be qualified.


> All you're doing here is supporting
> a pathological and unrepentant abuser who has stated that his goal
> in participating here is to attack the C language, C users, and this
> newsgroup.
>
> I do not think the material in C:TCN is particularly bad. =A0Some of it's
> not particularly good, but there's plenty there to demonstrate that
> many of the errors in the book are absolutely beyond the scope of what
> could reasonably come from someone even reasonably familiar with C.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/6/2010 7:16:48 AM

spinoza1111 wrote:

<snip>

> I shall rejoin this discussion prematurely

Prediction fulfilled. (See Message-ID: 
<quqdnVofP5fuDSXWnZ2dnUVZ7sSdnZ2d@bt.com> for details.)

 > to support Jacob and Malcolm.

If they're not capable of arguing a point without help, then there's 
something wrong with their argument.

> "Cease-fire" is over a bit early, I'm afraid. I wanted, in
> part, to see if things would "quiet down" if I suspended
> participation, but when Malcolm, admittedly on my request, posted the
> issue blew up, with undeserved attacks on his credibility.

I see no attacks on Malcolm's credibility in this thread. I do see some 
fairly hefty attacks on his argument, but that's only because his 
argument is broken.

> Peter, the issue here isn't Schildt's book. It is "C: the Complete
> Nonsense", not "C: the Complete Reference".

The one is a commentary on the other. Therefore, both are relevant to 
the thread.

> Even if all of what you say is true (and on specific errata you are
> right), it doesn't add up to a proper critique,

If on specific errata he is right, it adds up to a proper critique, 
unless there are a significant number of specific errata that he got 
wrong. This you have failed to demonstrate.

<nonsense snipped>

> I will take responsibility for
> repairing wikipedia

No wonder it has such a bad reputation, if people like you are 
"repairing" it. But I thought you'd been banned from "repairing" Wikipedia?

<snip>

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 7:20:18 AM

On Apr 6, 6:16=A0am, Keith Thompson <ks...@mib.org> wrote:
> Ben Pfaff <b...@cs.stanford.edu> writes:
> > REH <spamj...@stny.rr.com> writes:
> >> On Apr 5, 2:55=A0pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
> >> wrote:
> >>> Next error - "This shorthand [presumably +=3D, -=3D,*-, /=3D, %=3D, &=
=3D etc]
> >>> works for all the binary operators". Technically the structure member
> >>> operator is a binary operator, as are logical &&. So Schildt's
> >>> sentence is literally incorrect.
>
> >> Actual, the structure member operator is a postfix operator.
>
> > The structure member operator has two operands. =A0That makes it a
> > binary operator.
>
> It's listed in C99 6.5.2 "Postfix operators".
>
> The suffix of a "." operator isn't what I'd call an "operand".
> The prefix is an expression. =A0The suffix is not, and cannot be,
> an expression.
>
> One (IMHO reasonable) way to look at it is that ".foo" is a distinct
> postfix operator for each member name "foo". =A0That's how I tend
> to think of it, but it does have the drawback of creating a nearly
> unlimited number of operators.
>
> Another way to look at it is that "." is a binary operator whose
> right operand is special in that it must be a member name, not an
> expression in its own right.
>
> Another might be to treat it as a special syntactic form that isn't
> really an "operator" at all.
>
> The overriding consideration, IMHO, is that the C standard calls
> it a postfix operator.
>
> --
> Keith Thompson (The_Other_Keith) ks...@mib.org =A0<http://www.ghoti.net/~=
kst>
> Nokia
> "We must do something. =A0This is something. =A0Therefore, we must do thi=
s."
> =A0 =A0 -- Antony Jay and Jonathan Lynn, "Yes Minister"

OK, so structure dot is NOT a "binary" operator. Likewise, in certain
contexts, "binary" means "arithmetic" and not logic.

You and Peter seem to be unclear on many issues on formal logic which
coupled with your deficiencies in English means that you're signally
uneducated. One is the distinction between language and meta-language.
In a metalanguage, the meaning of "binary operator" can change as we
see here.
0
Reply spinoza1111 4/6/2010 7:20:32 AM

On Apr 6, 6:31=A0am, Ian Collins <ian-n...@hotmail.com> wrote:
> On 04/ 6/10 07:23 AM, jacob navia wrote:
>
>
>
> > Those people *need* to destroy to survive. The cult of pedantic
> > "correctness" over semantic understanding (you can't expect explaining
> > everything in a tutorial in the first page) and the desire to destroy
> > all work by people that doesn't belong to their group are their
> > principal characteristics.
>
> Try explaining that to a compiler. =A0Programming is as much about
> correctness as it is about clarity.

Not in practice. With all this talk about "precision" and
"correctness", the track record of programmers has been laughable.

A compiler is not something to which anything is "explained".
>
> Where you get that weird notion about the desire to "destroy" from is
> anybody's guess.
>
> --
> Ian Collins

0
Reply spinoza1111 4/6/2010 7:22:46 AM

On Apr 6, 6:33=A0am, Ben Pfaff <b...@cs.stanford.edu> wrote:
> Keith Thompson <ks...@mib.org> writes:
> > Ben Pfaff <b...@cs.stanford.edu> writes:
> >> REH <spamj...@stny.rr.com> writes:
> >>> On Apr 5, 2:55=A0pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
> >>> wrote:
> >> The structure member operator has two operands. =A0That makes it a
> >> binary operator.
>
> > It's listed in C99 6.5.2 "Postfix operators".
>
> That's convenient, because it fits in the grammar at the same
> level of precedence as the postfix operators.
>
> > The suffix of a "." operator isn't what I'd call an "operand".
> > The prefix is an expression. =A0The suffix is not, and cannot be,
> > an expression.
>
> One form of "sizeof" does not take an expression as its operand.
> Do you consider that form of "sizeof" a nullary operator? =A0I have
> not heard it described that way before.
>
> [...]
>
> > The overriding consideration, IMHO, is that the C standard calls
> > it a postfix operator.
>
> The C standard lists the "<" operator in a section titled
> "Relational operators". =A0Do you consider "<" to be a binary
> operator?

Way to go Ben. Kicking the ball towards our goal. You're the wee man,
you are.

"Binary operator" does not have, any more than many English
expressions, a fixed meaning. In the context, Herb meant "binary
arithmetic operator" since K & R thought it would be cool to combine
simple and common arithmetic operators with assignment, but not so
cool to do this for logic operators.

> --
> char a[]=3D"\n .CJacehknorstu";int putchar(int);int main(void){unsigned l=
ong b[]
> =3D{0x67dffdff,0x9aa9aa6a,0xa77ffda9,0x7da6aa6a,0xa67f6aaa,0xaa9aa9f6,0x1=
1f6} ,*p
> =3Db,i=3D24;for(;p+=3D!*p;*p/=3D4)switch(0[p]&3)case 0:{return 0;for(p--;=
i--;i--)case+
> 2:{i++;if(i)break;else default:continue;if(0)case 1:putchar(a[i&15]);brea=
k;}}}

0
Reply spinoza1111 4/6/2010 7:25:09 AM

On 2010-04-06, Richard Heathfield <rjh@see.sig.invalid> wrote:
> spinoza1111 wrote:
>> I shall rejoin this discussion prematurely

> Prediction fulfilled. (See Message-ID: 
><quqdnVofP5fuDSXWnZ2dnUVZ7sSdnZ2d@bt.com> for details.)

I think that's shooting fish in a barrel territory.

> I see no attacks on Malcolm's credibility in this thread. I do see some 
> fairly hefty attacks on his argument, but that's only because his 
> argument is broken.

And also a bit of concern about why he would jump in and make silly
claims ("it's a tutorial, not a reference" -- HUH?!).

>> Peter, the issue here isn't Schildt's book. It is "C: the Complete
>> Nonsense", not "C: the Complete Reference".

> The one is a commentary on the other. Therefore, both are relevant to 
> the thread.

Yes.  The commentary can only be evaluated in terms of the thing commented
on.

> If on specific errata he is right, it adds up to a proper critique, 
> unless there are a significant number of specific errata that he got 
> wrong. This you have failed to demonstrate.

I think there's certainly a meaningful sense in which it's not a
"proper critique"; if I went to someone for a professional-quality
book review, and got back C:TCN, I'd be upset.

But as things posted on the internet for free roughly 15 years ago go,
it's not bad.

>> I will take responsibility for
>> repairing wikipedia

> No wonder it has such a bad reputation, if people like you are 
> "repairing" it. But I thought you'd been banned from "repairing" Wikipedia?

Well, yes.  The purpose of this whole thing seems to be that the Wikipedia
admins chose to accept the C:TCN page as sufficient evidence that the
"controversy" section deserved to be there.  Thus, if Nilges can get enough
people to argue that C:TCN isn't a very good critique...  nothing happens.

Because the underlying point isn't anything to do with C:TCN.  It's that
the page is an *example* of the general category of "reputable C experts who
have served on the committee pan Schildt's work".  Clive's commentary would
do just as well.  For that matter, even if C:TCN went away, it wouldn't
change the fact that I'm quite clearly on the record as stating that the
book is junk that I would never inflict on someone trying to learn C.

If people really care, hey, I can always do a proper critique.  I've got
another ~15 years of writing and programming experience to draw on since
the days when I wrote C:TCN.  That said...

If I were to write such a page today, based on the 4th edition, it would have
fewer nitpicking errors, but I could do a much better job of explaining in
detail, and presenting effectively, the case that the remaining errors both
conceptual and technical are serious enough to utterly dispel any notion
that the book ought to be used to learn from.  I know a lot more about
writing, and about how to teach people about computers, and about C, than I
did back in ~1995 or so.  My impressions of Schildt's work have not changed
for the better.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 7:26:17 AM

On Apr 6, 6:37=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-05, James Harris <james.harri...@googlemail.com> wrote:
>
>
>
>
>
> > On 5 Apr, 21:58, Seebs <usenet-nos...@seebs.net> wrote:
> >> Mostly, though... This was *typical*. =A0The whole book is like this.
>
> >> Okay, flipped to a random pgae.
>
> >> =A0 =A0 =A0 =A0 #include <stdio.h>
>
> >> =A0 =A0 =A0 =A0 void main(void)
> >> =A0 =A0 =A0 =A0 {
> >> =A0 =A0 =A0 =A0 =A0 char str[80];
> >> =A0 =A0 =A0 =A0 =A0 freopen("OUTPUT", "w", stdout);
> >> =A0 =A0 =A0 =A0 =A0 printf("Enter a string: ");
> >> =A0 =A0 =A0 =A0 =A0 gets(str);
> >> =A0 =A0 =A0 =A0 =A0 printf(str);
> >> =A0 =A0 =A0 =A0 }
>
> >> Let's see.
>
> >> 1. =A0main declared incorrectly.
> >> 2. =A0No error check for freopen.
> >> 3. =A0No newline or flush for the prompt, so no guarantee that
> >> it's actually been written.
> >> 4. =A0Who cares whether it's flushed? =A0If the freopen() succeeded,
> >> "stdout" will now be the file OUTPUT, so the user won't see the
> >> prompt anyway.
> >> 5. =A0gets() is unsafe and should never be used on buffers, let alone
> >> tiny buffers.
> >> 6. =A0printf(str) can quite easily explode spectacularly if "str"
> >> happens to have any format characters in it.
>
> Thanks for quoting this, I missed one.
>
> gets() strips a trailing newline, printf() does not add it, so the
> material written to the output file may not be usable; as the default
> mode in C is "text mode", the above opened stdout in text mode, and the
> behavior of writing text with no line terminator to text mode is not
> particularly well-defined.
>
> (That said, I think the fourth edition does change this program; it's
> now "int main" and ends with "return 0". =A0None of the other issues are
> addressed.)
>
> > Your web page is useful. Thanks for writing it. If Nilges causes you
> > genuine trouble at your publisher's - in other words they choose to
> > give him any credibility whatsoever - I'd be glad to send them some
> > comments to redress the balance.
>
> I appreciate the offer. =A0I don't imagine it'll come up, but you never k=
now.

How would we know that CTCN is useful.

"Duh, I didn't know C too good because I read Schildt but then I read
CTCN and I'se seen da light".

This model simply doesn't apply. Instead a competent programmer (who
is in fact an extremely rara avis or rare bird in developed countries)
would learn from experience, merely supplemented by interaction with
texts, that MS DOS or Windows C is very different from unix or linux
C.

In the linux world, he would indeed be careful to int the return of
main.

In Windows, he would see no need because in Windows we can't plug
stuff together in the way we did on unix.

My experience in Asia is that most computer books are prohibitively
priced in relation to Asian programmer salaries, yet they are more
competent than programmers in America or Britain. A book by itself can
neither make nor unmake a competent programmer.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/6/2010 7:30:17 AM

On Apr 6, 8:11=A0am, Keith Thompson <ks...@mib.org> wrote:
> REH <spamj...@stny.rr.com> writes:
> > On Apr 5, 5:39=A0pm, Ben Pfaff <b...@cs.stanford.edu> wrote:
> >> The structure member operator has two operands. =A0That makes it a
> >> binary operator.
>
> > Not according to the standard. It is classified as a postfix operator.
> > All binary operators using the E op E syntax, where E is an
> > expression. The member operator (also the indirection operator) can
> > only take an expression as the left-hand operator, like all postfix
> > operators. Its right-hand operand must be a member name.
>
> Please cite the section of the standard that says the right operand of
> a "binary operator" must be an expression, or that an operator cannot
> be both postfix and binary.

Oh the post-humanity...oh the autism...
>
> --
> Keith Thompson (The_Other_Keith) ks...@mib.org =A0<http://www.ghoti.net/~=
kst>
> Nokia
> "We must do something. =A0This is something. =A0Therefore, we must do thi=
s."
> =A0 =A0 -- Antony Jay and Jonathan Lynn, "Yes Minister"

0
Reply spinoza1111 4/6/2010 7:31:50 AM

On Apr 6, 9:08=A0am, Ben Bacarisse <ben.use...@bsb.me.uk> wrote:
> Malcolm McLean <malcolm.mcle...@btinternet.com> writes:

....snip Malcolm and Ben's acute commentary...

Ben, with your usual care, you have shown that there are many errors
in Schildt as there often are in computer books and especially online.
These errors are exacerbated by the fact that C was not designed for
Ms DOS but for unix. Arguably it is best used with unix, as my
experience with Nash (who was using C on MS DOS and has converted to
Mathematica) shows.

But: the problem here is Seebach, who did nothing like your homework
but who has become the sole source of a charge that has been
globalized to all of Schildt's output and which has unnecessarily
harmed him. He's the zero-cite, not you.

Your honesty and your competence is such that I believe that if you
and not Seebach had posted CTCN, you would have posted ALL errors you
found, and you would have said, explicitly, that your concern was ONLY
this book. You would have concluded that it is useful to MS DOS
programmers but not "recommended" for prospective unix or linux
programmers.

But this isn't what has happened. This is why Seebach needs to replace
CTCN with a blank document or a picture of a bunny.

0
Reply spinoza1111 4/6/2010 7:41:40 AM

[Seebs - please read this, as I have a question for you at the end.]

spinoza1111 wrote:
> On Apr 5, 5:00 am, Richard Heathfield <r...@see.sig.invalid> wrote:
>> Malcolm McLean wrote:
<snip>

>>> I think the title of Schildt's book invites misplaced criticism.
>>> Whilst the book is entitled a "reference" it is in fact a tutorial.
>> So what you're actually saying is that the first error is on the front
>> cover.
> 
> If you wrote, or edited, C Unleashed, you'd know that the author is
> not in charge of the cover material.

Having been involved from the very beginning in the design of "C 
Unleashed", I knew the proposed title right from the outset, because it 
was given to me in the email in which I was first asked to get involved 
with the project. I also knew I couldn't change the title, even though I 
wasn't very happy with it. So, instead, I inserted some text into the 
book that pointed out the issue I had with the title, the finding of 
which I will leave as a not-very-difficult exercise.

Here is a quote from Schildt's preface:

"I had been given the mission of creating a complete reference guide to 
the C programming language. Not just /any/ book, but the /complete/ book."

So Schildt thinks it's a reference book. For Malcolm to be right, 
Schildt has to be wrong. And if Malcolm is wrong, then Schildt is 
/still/ wrong because the book is clearly /not/ a "complete reference", 
nor even an adequate one.

Let's play the random game again.

Okay, this is from page 420 of the second edition of CTCR, not a page I 
recall seeing before. It is discussing the _dos_read function, which 
Schildt rightly points out is not part of the C language proper, but 
"only applies to DOS-based C compilers" (and by no means all of them, he 
fails to say, but he does add "It may also have a slightly different 
name, so check your user's manual". So let's cut to the code:

Example

This fragment reads up to 128 characters from the file described by fd:

unsigned count
char *buf[128];

if(_dos_read(fd, buf, 128, &count))
   printf("error reading file");

In those four lines of code, I can see three bugs without even trying. 
The missing semicolon will of course result in a diagnostic message from 
the compiler. The missing newline escape sequence may result in the 
error output not appearing immediately (or indeed at all, if it's the 
last data written to that stream before program termination). But most 
importantly, the array is of 128 char *, whereas it should be of 128 
char. He is reading arbitrary byte values into an array of pointers!

But the worst mistake of all is not a bug in the sense that it's a code 
error. The worst mistake is that he utterly fails to explain why anyone 
would ever bother to use this function, given the availability of fread. 
I'm not saying no such reason exists. I'm saying he fails to give it.

Seebs: was this corrected in CTCR3?

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 7:48:47 AM

On Apr 6, 1:00=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Keith Thompson <ks...@mib.org> wrote:
>
> > Does your use of "Mostly" refer to the fact that the code will go into
> > an infinite loop on an input error?
>
> No, it refers to me having missed that. =A0Good catch.
>
> That's why Schildt's books are so bad -- the code is sufficiently badly

This is the sort of irresponsible statement that is legally actionable
on your part. Schildt is unlike you an educated generalist who focuses
on Microsoft but also, whether you like it or not, has linux and unix
experience. My experience at Bell Northern Research is that people who
in fact failed to become educated in computer science often learned
unix only and saw everything through a distorted unix lens, in the
same way old IBM 1401 programmers wanted everything to be a 1401 ever
after, and C++ programmers try to code C++ as C.

"Schildt's books are so bad" is libel. He's published a lot more than
you have because his educational background allows him to ascribe
unfamiliar features of a new platform urbanely and civilly to his own
ignorance. Based on finding 6 errors and inflating them to only 20,
you've made an absurd generalization.



> broken that several skilled professionals looking at it can *miss* some o=
f
> the errors, because they're masked by others.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/6/2010 7:49:25 AM

Keith Thompson <kst-u@mib.org> writes:
> Malcolm McLean <malcolm.mclean5@btinternet.com> writes:
[SNIP - countering PS's C:TCN]
> As long as I'm posting I'll mention that
>     The "heap" is a DOS term...
> is a perfectly correct statement.  It doesn't necessarily imply
> that it's *only* a DOS term.  It also happens to be a Unix term,
> and a Windows term, and a Symbian term, and so forth (and yes,
> an updated version of the web page should probably clarify that).
> The point is that it isn't a C term.

When I first learnt C, it was being called the "free store" or 
something so similar my memory cannot distinguish it. Given that
the 'heap' isn't structurally or algorithmically a 'heap', I always
wondered why a less baggage-laden term wasn't more popular.

This is probably an issue for a.f.c, though.

Phil
-- 
I find the easiest thing to do is to k/f myself and just troll away
-- David Melville on r.a.s.f1
0
Reply Phil 4/6/2010 7:49:52 AM

spinoza1111 wrote:
> And I'm afraid that
> given your approval of a buggy off by one strlen last month, this
> intolerance does not imply competence.

gets(s);
if(*s==0) break; /* no entry */
p = malloc(strlen(s));
if(!p) {
   printf("out of memory.\n");
   return;
}
strcpy(p, s);

Code taken from p550 of CTCR, 2nd edition.

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 7:55:51 AM

spinoza1111 wrote:
> On Apr 5, 6:57 am, Seebs <usenet-nos...@seebs.net> wrote:
>> On 2010-04-04, Malcolm McLean <malcolm.mcle...@btinternet.com> wrote:
> 
<snip>

>>> Enough said. Two errors in two errata. I could go on, doing exactly
>>> the same thing to "C the complete nonsense" as Seebs has done to
>>> Schildt.
>> You probably could -- but I think that you'd find that, even once you
>> nitpicked the nitpicks, you'd find that the substantive errors MASSIVELY
>> outweighed them.
> 
> "Massively" in upper case? You haven't made your case. You listed
> twenty "errors" only 6 of which we have confirmed.

Random quote from CTCR 2nd edition. This is from p241:

The remove() function erases the specified file. Its prototype is

   int remove(char *filename);

The error is, I hope, obvious enough that I don't have to point it out. 
No? Okay, I'll tell you. The prototype is actually:

   int remove(const char *filename);

and the difference is significant. For example, the const means we can 
do this:

if(remove(fname) == 0)
{
   if(rename(tname, fname) == 0)
   {
     /* update of original file with original name was successful */
   }
   else { /* recover */ } } else {  /* recover */ }

Without the const, we would have no guarantee that fname remained 
unchanged (the ISO C Standard contains no explicit guarantees to that 
effect in the descriptive text that follows the synopsis of either 
remove() or rename()), so we'd have to make a safe copy first. But the 
const means we don't have to do that.

<snip>

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 8:15:09 AM

spinoza1111 wrote:

<snip>

> Your honesty and your competence is such that I believe that if you
> and not Seebach had posted CTCN, you would have posted ALL errors you
> found,

Life's too short.

 > and you would have said, explicitly, that your concern was ONLY
> this book. You would have concluded that it is useful to MS DOS
> programmers but not "recommended" for prospective unix or linux
> programmers.

The book claims to be "designed for all C programmers".

<nonsense snipped>

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 8:20:21 AM

Keith Thompson <kst-u@mib.org> writes:
> Seebs <usenet-nospam@seebs.net> writes:
>> On 2010-04-06, Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:
>>> And then there are some of the most
>>> convoluted input loops I've seem since I stopped marking first year
>>> students' work[1].
>>
>>> [1] For example:
>>
>>>   char ch;
>>>   /* snip */
>>>   while(!feof(in)) {
>>>     ch = getc(in);
>>>     if(!feof(in)) putc(ch, out);
>>>   }
>>
>> This one is, strictly speaking, at least correct.  Mostly.
>
> Does your use of "Mostly" refer to the fact that the code will go into
> an infinite loop on an input error?

I thought it referred mostly to /Aliens/. Mostly.

Phil
-- 
I find the easiest thing to do is to k/f myself and just troll away
-- David Melville on r.a.s.f1
0
Reply Phil 4/6/2010 8:20:55 AM

spinoza1111 wrote:

<snip>

> Based on finding 6 errors and inflating them to only 20,
> you've made an absurd generalization.

Random quote from CTCR 2nd edition. This one is from p154:

"The argc parameter holds the number of arguments on the command line 
and is an integer. It is always at least 1 because the name of the 
program qualifies as the first argument."

This is wrong. It is perfectly legal for argc to be 0 and argv[argc] to 
be a null pointer, and it's not even terribly difficult to do.

Since we're on that page anyway, here are two more errors, this time to 
do with argv:

"The argv parameter is a pointer to an array of character pointers. Each 
element in this array points to a command line argument."

Firstly, it's actually a pointer to *the first element of* an array of 
character pointers. Terminology is especially important in a tutorial! 
Secondly, argv[argc] is an element in the array which does not point to 
a command line argument.

<snip>

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 8:28:57 AM

Keith Thompson <kst-u@mib.org> writes:
> Ben Pfaff <blp@cs.stanford.edu> writes:
>> REH <spamjunk@stny.rr.com> writes:
>>> On Apr 5, 2:55 pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
>>> wrote:
>>>> Next error - "This shorthand [presumably +=, -=,*-, /=, %=, &= etc]
>>>> works for all the binary operators". Technically the structure member
>>>> operator is a binary operator, as are logical &&. So Schildt's
>>>> sentence is literally incorrect.
>>>
>>> Actual, the structure member operator is a postfix operator.
>>
>> The structure member operator has two operands.  That makes it a
>> binary operator.
>
> It's listed in C99 6.5.2 "Postfix operators".
>
> The suffix of a "." operator isn't what I'd call an "operand".

n869:
       [#1]  The  first  operand  of  the  .  operator shall have a
       qualified or unqualified structure or union  type,  and  the
       second operand shall name a member of that type.

....
> The overriding consideration, IMHO, is that the C standard calls
> it a postfix operator.

That has 2 explicitly-yclept operands.

Phil
-- 
I find the easiest thing to do is to k/f myself and just troll away
-- David Melville on r.a.s.f1
0
Reply Phil 4/6/2010 8:40:45 AM

On Apr 6, 3:26=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Richard Heathfield <r...@see.sig.invalid> wrote:
>
> > spinoza1111 wrote:
> >> I shall rejoin this discussion prematurely
> > Prediction fulfilled. (See Message-ID:
> ><quqdnVofP5fuDSXWnZ2dnUVZ7sSdn...@bt.com> for details.)
>
> I think that's shooting fish in a barrel territory.
>
> > I see no attacks on Malcolm's credibility in this thread. I do see some
> > fairly hefty attacks on his argument, but that's only because his
> > argument is broken.
>
> And also a bit of concern about why he would jump in and make silly
> claims ("it's a tutorial, not a reference" -- HUH?!).
>
> >> Peter, the issue here isn't Schildt's book. It is "C: the Complete
> >> Nonsense", not "C: the Complete Reference".
> > The one is a commentary on the other. Therefore, both are relevant to
> > the thread.
>
> Yes. =A0The commentary can only be evaluated in terms of the thing commen=
ted
> on.
>
> > If on specific errata he is right, it adds up to a proper critique,
> > unless there are a significant number of specific errata that he got
> > wrong. This you have failed to demonstrate.
>
> I think there's certainly a meaningful sense in which it's not a
> "proper critique"; if I went to someone for a professional-quality
> book review, and got back C:TCN, I'd be upset.

Very good. We're making progress. OK, you have write access to the
post. I will drop the matter if you replace it by a blank post, or
something saying "withdrawn". You do not need to apologize therein to
Herb, you do not need to apologize for the damage you've done to me,
and you do not need to notify me of your action.
>
> But as things posted on the internet for free roughly 15 years ago go,
> it's not bad.

I do not accept arguments of this form. "My classmates are stupid
therefore I am smart" is not a valid inference. Furthermore, viral
replication of the claims, scattered over many different sites, is the
problem.

If you would just blank the site, I can then go into wikipedia as an
anonymous ip address and quite properly remove the section of the
article on Schildt that continues to damage his reputation.

>
> >> I will take responsibility for
> >> repairing wikipedia
> > No wonder it has such a bad reputation, if people like you are
> > "repairing" it. But I thought you'd been banned from "repairing" Wikipe=
dia?
>
> Well, yes. =A0The purpose of this whole thing seems to be that the Wikipe=
dia
> admins chose to accept the C:TCN page as sufficient evidence that the
> "controversy" section deserved to be there. =A0Thus, if Nilges can get en=
ough
> people to argue that C:TCN isn't a very good critique... =A0nothing happe=
ns.

It is now a Reception section, but overgeneralizes the canard to apply
to all of Schildt's output, not just CTCR. If the page is blanked,
since the Schildt page isn't locked, this will justify even an
anonymous editor such as myself (who will possibly recognized as
someone who's "blocked" based on my self-defense over Kant changes in
2006) from removing an UNSOURCED "Reception" section, under the rules
of "biographies of living persons".

This will lay this matter to rest and demonstrate that the Internet
can arrive at a conclusion that is fair to all.

>
> Because the underlying point isn't anything to do with C:TCN. =A0It's tha=
t
> the page is an *example* of the general category of "reputable C experts =
who
> have served on the committee pan Schildt's work". =A0Clive's commentary w=
ould

Clive is a troll who was galvanized by your post.

> do just as well. =A0For that matter, even if C:TCN went away, it wouldn't
> change the fact that I'm quite clearly on the record as stating that the
> book is junk that I would never inflict on someone trying to learn C.
>
> If people really care, hey, I can always do a proper critique. =A0I've go=
t
> another ~15 years of writing and programming experience to draw on since
> the days when I wrote C:TCN. =A0That said...
>
> If I were to write such a page today, based on the 4th edition, it would =
have
> fewer nitpicking errors, but I could do a much better job of explaining i=
n
> detail, and presenting effectively, the case that the remaining errors bo=
th
> conceptual and technical are serious enough to utterly dispel any notion
> that the book ought to be used to learn from. =A0I know a lot more about
> writing, and about how to teach people about computers, and about C, than=
 I
> did back in ~1995 or so. =A0My impressions of Schildt's work have not cha=
nged
> for the better.

You can do that, of course. However, to do an acceptable job, you need
to provide all of what you think are errors, and you have to be
prepared to have to defend your document. It appears to me that you do
not have enough academic experience in this type of interchange to
know how time-consuming this would be for you. I think it would be
better for you to return to school and learn the trade you profess.

Just blank the page, Peter, and this matter will disappear and be
forgotten.

>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated
0
Reply spinoza1111 4/6/2010 8:43:11 AM

Richard Heathfield <rjh@see.sig.invalid> writes:
....
> Let's play the random game again.
>
> Okay, this is from page 420 of the second edition of CTCR, not a page
> I recall seeing before. It is discussing the _dos_read function, which
> Schildt rightly points out is not part of the C language proper, but
> "only applies to DOS-based C compilers" (and by no means all of them,
> he fails to say, but he does add "It may also have a slightly
> different name, so check your user's manual". So let's cut to the code:
>
> Example
>
> This fragment reads up to 128 characters from the file described by fd:
>
> unsigned count
> char *buf[128];
>
> if(_dos_read(fd, buf, 128, &count))
>   printf("error reading file");
>
> In those four lines of code, I can see three bugs without even
> trying. The missing semicolon will of course result in a diagnostic
> message from the compiler. The missing newline escape sequence may
> result in the error output not appearing immediately (or indeed at
> all, if it's the last data written to that stream before program
> termination). But most importantly, the array is of 128 char *,
> whereas it should be of 128 char. He is reading arbitrary byte values
> into an array of pointers!
>
> But the worst mistake of all is not a bug in the sense that it's a
> code error. The worst mistake is that he utterly fails to explain why
> anyone would ever bother to use this function, given the availability
> of fread. I'm not saying no such reason exists. I'm saying he fails to
> give it.
>
> Seebs: was this corrected in CTCR3?

I've previously been utterly content that I have no copies of
any edition of this book, for obvious reasons. However, you 
having turned it into a game have reversed that, and I have a
nasty feeling if I see one on the cheap, I'll not be able to 
resist...

Phil
-- 
I find the easiest thing to do is to k/f myself and just troll away
-- David Melville on r.a.s.f1
0
Reply Phil 4/6/2010 8:46:20 AM

On Apr 6, 4:28=A0pm, Richard Heathfield <r...@see.sig.invalid> wrote:
> spinoza1111 wrote:
>
> <snip>
>
> > Based on finding 6 errors and inflating them to only 20,
> > you've made an absurd generalization.
>
> Random quote from CTCR 2nd edition. This one is from p154:
>
> "The argc parameter holds the number of arguments on the command line
> and is an integer. It is always at least 1 because the name of the
> program qualifies as the first argument."
>
> This is wrong. It is perfectly legal for argc to be 0 and argv[argc] to
> be a null pointer, and it's not even terribly difficult to do.

Prints one with a command line with no arguments BEYOND the name of
the command:

#include "stdio.h"
int main(int argc, char *argv)
{
printf("%d\n", argc);
}

Prints "0 0":

#include "stdio.h"
int main(int argc, char *argv)
{
	argc =3D 0;
	argv =3D 0;
	printf("%d %d\n", argc, argv);
}

Sure, it's easy (especially, apparently, for you and Peter) to mess
up, but working programmers as opposed to corporate drones and casual
workers with too much time on their hands need to know the normed
case, which is that argc is going to be one when there are no
arguments other than the name of the command. This is because C, as
elsewhere, is a bit messed up in counting arguments, and includes the
name of the module. This is in turn because C was designed for
programming a command line interface which is pretty much out of date.

K & R were showing off their knowledge that zero is a number, and
admittedly, IBM in the 1960s and in Fortran had obscured this fact by
one-origin indexing. This was refreshing and enlightening at the time
but it's been FORTY YEARS since then, and today thinking of computing
as a series of commands on a Teletype is an absurd model.

You are as usual maliciously lying and will face the man in the grey
wig if you keep it up.
>
> Since we're on that page anyway, here are two more errors, this time to
> do with argv:
>
> "The argv parameter is a pointer to an array of character pointers. Each
> element in this array points to a command line argument."
>
> Firstly, it's actually a pointer to *the first element of* an array of
> character pointers. Terminology is especially important in a tutorial!

Utterly absurd. Will you PLEASE just crawl back to whatever rock you
crawled out of? In ordinary metalanguage, the first position
represents the array as a whole.

> Secondly, argv[argc] is an element in the array which does not point to
> a command line argument.

Oh gee you're so smart, aren't you. Heathfield, stop grandstanding;
you look like a fool.
>
> <snip>
>
> --
> Richard Heathfield <http://www.cpax.org.uk>
> Email: -http://www. +rjh@
> "Usenet is a strange place" - dmr 29 July 1999
> Sig line vacant - apply within

0
Reply spinoza1111 4/6/2010 9:27:54 AM

On Apr 6, 3:49=A0pm, Phil Carmody <thefatphil_demun...@yahoo.co.uk>
wrote:
> Keith Thompson <ks...@mib.org> writes:
> > Malcolm McLean <malcolm.mcle...@btinternet.com> writes:
>
> [SNIP - countering PS's C:TCN]
>
> > As long as I'm posting I'll mention that
> > =A0 =A0 The "heap" is a DOS term...
> > is a perfectly correct statement. =A0It doesn't necessarily imply
> > that it's *only* a DOS term. =A0It also happens to be a Unix term,
> > and a Windows term, and a Symbian term, and so forth (and yes,
> > an updated version of the web page should probably clarify that).
> > The point is that it isn't a C term.
>
> When I first learnt C, it was being called the "free store" or

Incorrect use of the participle "learnt" for the past tense of to
learn.

> something so similar my memory cannot distinguish it. Given that
> the 'heap' isn't structurally or algorithmically a 'heap', I always
> wondered why a less baggage-laden term wasn't more popular.

Actually, the primitive structure Herb was talking about is indeed a
"heap" in an abstract sense and in contrast to the stack. The stack
contains small and fixed length values. When a value (a struct or
array) doesn't fit, we use an address in a free store. OO practice was
based on this.

I first saw the usage of "heap" in Saul Rosen's 1968 collection of
papers on early software. A computer scientist who actually programs
narrates what she's doing in ways that may seem to uneducated mere
programmers as incorrect, but I prefer her definitions.

Scientists know what a word means. Little technicians rely on
"terminology".

>
> This is probably an issue for a.f.c, though.
>
> Phil
> --
> I find the easiest thing to do is to k/f myself and just troll away
> -- David Melville on r.a.s.f1

0
Reply spinoza1111 4/6/2010 9:33:27 AM

spinoza1111 wrote:

<snip>

> If you would just blank the site, I can then go into wikipedia as an
> anonymous ip address and quite properly remove the section of the
> article on Schildt that continues to damage his reputation.

That's the big problem with Wikipedia - any bozo can edit it, and many 
bozos do. Fortunately, Seebs isn't about to "blank the site" any time soon.

Random quote from CTCR2e. This one's from pages 510-511.

Example

This program uses the system time to randomly initialize the rand() 
function by using srand():

#include "stdio.h"
#include "stdlib.h"
#include "time.h"

/* Seed rand with the system time
    and display the first 10 numbers.
*/
void main(void)
{
   int i, stime;
   long ltime;

   /* get the current calendar time */
   ltime = time(NULL);
   stime = (unsigned) ltime/2;
   srand(stime);
   for(i=0; i<10; i++) printf("%d ", rand());
}

Here are the problems I can see at a quick glance:

1) incorrect claim about behaviour of program;
2) unwise use of quotes rather than angle-brackets for standard headers;
3) using the wrong return type for main;
4) using a long int instead of a time_t to accept the return value from 
time();
5) assigning an unsigned int value to an int object;
6) passing an int value to srand(), which expects an unsigned int;
7) failing to terminate a text stream;
8) failing to return a value from main.

When I tried to compile this code, Borland C rejected it (and refused to 
produce an object file or an executable image) on the grounds that the 
return type of main was wrong. When I told it not to be quite so fussy, 
I got the following results on three successive runs of the program:

Run 1: 13044 19141 284 32137 28152 23678 16250 10654 12234 27596

Run 2: 13044 19141 284 32137 28152 23678 16250 10654 12234 27596

Run 3: 13044 19141 284 32137 28152 23678 16250 10654 12234 27596

It doesn't take a genius to work out why.

<snip>

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 9:40:37 AM

On Apr 6, 3:26=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Richard Heathfield <r...@see.sig.invalid> wrote:
>
> > spinoza1111 wrote:
> >> I shall rejoin this discussion prematurely
> > Prediction fulfilled. (See Message-ID:
> ><quqdnVofP5fuDSXWnZ2dnUVZ7sSdn...@bt.com> for details.)
>
> I think that's shooting fish in a barrel territory.
>
> > I see no attacks on Malcolm's credibility in this thread. I do see some
> > fairly hefty attacks on his argument, but that's only because his
> > argument is broken.
>
> And also a bit of concern about why he would jump in and make silly
> claims ("it's a tutorial, not a reference" -- HUH?!).

Don't start in on Malcolm, please. You've done enough damage.
>
> >> Peter, the issue here isn't Schildt's book. It is "C: the Complete
> >> Nonsense", not "C: the Complete Reference".
> > The one is a commentary on the other. Therefore, both are relevant to
> > the thread.
>
> Yes. =A0The commentary can only be evaluated in terms of the thing commen=
ted
> on.

Wrong. The commentary is absurd.
>
> > If on specific errata he is right, it adds up to a proper critique,
> > unless there are a significant number of specific errata that he got
> > wrong. This you have failed to demonstrate.
>
> I think there's certainly a meaningful sense in which it's not a
> "proper critique"; if I went to someone for a professional-quality
> book review, and got back C:TCN, I'd be upset.
>
> But as things posted on the internet for free roughly 15 years ago go,
> it's not bad.
>
> >> I will take responsibility for
> >> repairing wikipedia
> > No wonder it has such a bad reputation, if people like you are
> > "repairing" it. But I thought you'd been banned from "repairing" Wikipe=
dia?
>
> Well, yes. =A0The purpose of this whole thing seems to be that the Wikipe=
dia
> admins chose to accept the C:TCN page as sufficient evidence that the
> "controversy" section deserved to be there. =A0Thus, if Nilges can get en=
ough
> people to argue that C:TCN isn't a very good critique... =A0nothing happe=
ns.
>
> Because the underlying point isn't anything to do with C:TCN. =A0It's tha=
t

It has everything to do with CTCN.

> the page is an *example* of the general category of "reputable C experts =
who

You are not a reputable C expert.

You have not published on C (please respond if you can with articles
on C only that I have missed).

You have shown yourself to be an incompetent C coder who fails to
write structured code and makes newbie errors in the last three
months.

Your only known confederates are Clive Feather, a nasty piece of work,
and Richard Heathfield, a nasty piece of work.

You have zero experience in the use of C outside of unix.

> have served on the committee pan Schildt's work". =A0Clive's commentary w=
ould

You paid your way in. I believe you did so as resume padding. You have
admitted padding your online resume to make it appear that you have
worked for Apple Computer since 1987 and are a venture capitalist for
them.

> do just as well. =A0For that matter, even if C:TCN went away, it wouldn't
> change the fact that I'm quite clearly on the record as stating that the
> book is junk that I would never inflict on someone trying to learn C.

Yes, but nobody would care.

>
> If people really care, hey, I can always do a proper critique. =A0I've go=
t
> another ~15 years of writing and programming experience to draw on since
> the days when I wrote C:TCN. =A0That said...
>
> If I were to write such a page today, based on the 4th edition, it would =
have
> fewer nitpicking errors, but I could do a much better job of explaining i=
n
> detail, and presenting effectively, the case that the remaining errors bo=
th
> conceptual and technical are serious enough to utterly dispel any notion
> that the book ought to be used to learn from. =A0I know a lot more about
> writing, and about how to teach people about computers, and about C, than=
 I
> did back in ~1995 or so. =A0My impressions of Schildt's work have not cha=
nged
> for the better.

Nobody would trust you. I think Ben should do this. And I believe he
would discover that he needs to learn more about Microsoft to do a job
according to his high standards, and would give up halfway through.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/6/2010 9:42:57 AM

spinoza1111 wrote:
> On Apr 6, 4:28 pm, Richard Heathfield <r...@see.sig.invalid> wrote:
>> spinoza1111 wrote:
>>
>> <snip>
>>
>>> Based on finding 6 errors and inflating them to only 20,
>>> you've made an absurd generalization.
>> Random quote from CTCR 2nd edition. This one is from p154:
>>
>> "The argc parameter holds the number of arguments on the command line
>> and is an integer. It is always at least 1 because the name of the
>> program qualifies as the first argument."
>>
>> This is wrong. It is perfectly legal for argc to be 0 and argv[argc] to
>> be a null pointer, and it's not even terribly difficult to do.
> 
> Prints one with a command line with no arguments BEYOND the name of
> the command:

Huh? That makes no sense at all.

> 
> #include "stdio.h"
> int main(int argc, char *argv)
> {
> printf("%d\n", argc);
> }
> 
> Prints "0 0":

No, it prints the value of argc. So, if there are no arguments, it will 
print 0, not 0 0.

> 
> #include "stdio.h"
> int main(int argc, char *argv)
> {
> 	argc = 0;
> 	argv = 0;
> 	printf("%d %d\n", argc, argv);
> }
> 
> Sure, it's easy (especially, apparently, for you and Peter) to mess
> up,

You misunderstand. It's Schildt who messed up, by making an incorrect 
claim that argc is always >= 1.

<nonsense snipped>

Let's play the random game again. P298 of CTCR2e:

int fflush(FILE *stream);

Description

If stream is associated with a file open for writing, a call to fflush() 
physically writes to the file the contents of the output buffer. If 
stream points to an input file, the contents of the input buffer are 
cleared. In either case, the file remains open.

Problems: firstly, the fflush() function doesn't physically write 
anything. What it does is to deliver any unwritten data for that stream 
to the host environment. It is the host environment that physically 
writes the data... at a time of its choosing! There is no guarantee 
that, on return from fflush(), the data have been written, even if no 
error occurred. Secondly, the behaviour of fflush() when passed a FILE * 
that is associated with an "input file" is undefined.

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 9:50:06 AM


spinoza1111 wrote:

> , you'd know that the author is
> not in charge of the cover material.

The text content of the cover is part of the galleys sent
to the author for fact checking and approval.


--- news://freenews.netfront.net/ - complaints: news@netfront.net ---
0
Reply Walter 4/6/2010 9:53:21 AM

On 6 Apr, 09:43, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 6, 3:26=A0pm, Seebs <usenet-nos...@seebs.net> wrote:

....

> > I think there's certainly a meaningful sense in which it's not a
> > "proper critique"; if I went to someone for a professional-quality
> > book review, and got back C:TCN, I'd be upset.
>
> Very good. We're making progress. OK, you have write access to the
> post. I will drop the matter if you replace it by a blank post, or
> something saying "withdrawn". You do not need to apologize therein to
> Herb, you do not need to apologize for the damage you've done to me,
> and you do not need to notify me of your action.

....

> If you would just blank the site, I can then go into wikipedia as an
> anonymous ip address and quite properly remove the section of the
> article on Schildt that continues to damage his reputation.

Weren't you "banned" from Wikipedia for making inappropriate edits
including under anonymous IP addresses?

Please don't even consider removing what you call "the section of the
article on Schildt that continues to damage his reputation." Apart
from Peter Seebach's comments the "section" refers to two other
sources of criticism. Even if Peter does what you request - and I hope
he does not - that would be no mandate for you to remove references to
other criticism.

....

> > If I were to write such a page today, based on the 4th edition, it woul=
d have
> > fewer nitpicking errors, but I could do a much better job of explaining=
 in
> > detail, and presenting effectively, the case that the remaining errors =
both
> > conceptual and technical are serious enough to utterly dispel any notio=
n
> > that the book ought to be used to learn from. =A0I know a lot more abou=
t
> > writing, and about how to teach people about computers, and about C, th=
an I
> > did back in ~1995 or so. =A0My impressions of Schildt's work have not c=
hanged
> > for the better.
>
> You can do that, of course. However, to do an acceptable job, you need
> to provide all of what you think are errors, and you have to be
> prepared to have to defend your document. It appears to me that you do
> not have enough academic experience in this type of interchange to
> know how time-consuming this would be for you. I think it would be
> better for you to return to school and learn the trade you profess.

An update to Peter's criticism would be beneficial. As he himself
recognises there are ways it could be improved such as by removing
nitpicking errors. Time has moved on but for a 15-year old document
it's not bad.

If you are an academic, Edward, you should recognise the value of
assertion and criticism. The presence of both serves to produce a
better-informed readership. Notwithstanding my view that the critical
page of Peter's would benefit from an update, ISTM that the Wikipedia
article is balanced as it stands. I don't understand what's motivating
your desire to change it.

James
0
Reply James 4/6/2010 9:58:47 AM

On Apr 6, 3:06=A0pm, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 5, 5:48=A0am, Keith Thompson <ks...@mib.org> wrote:

.... snip snip snippy snip: you nasty little clerks are right as you
often are, on something trivial: I need to snippety snip more ...


> However, a literate person knows how to disambiguate "is", as do
> literate OO programmers, who use "is-a" to show subset in inheritance
> as opposed to "has-a" to show reference to an object, and "=3D=3D" in C
> Sharp in Java to show identity.

Error: change in to or.

Snip snip snippety snip
I need to get wise, and I need to get hip,
And follow the trivial rules
That have lighted fools
The way to dusty death
Sorta like Macbeth.

You know the old play.
Glamis, then Cawdor, then the buttered Scone:
But what's little noticed and lesser known,
Is Macbeth's foolish logic...he's brainsick.
I mean, those bitches on the heath-field
Crones that call to Richard in his lonely room,
Prophesied he should be Cawdor, and he wuz:
So what does the kilted Jocko do?
He kilts Duncan like a scuz!

This sort of subhumanity
We see here, and it's a tragedy:
For 6 errata don't make your case
Any more than you prove jackshit when a mess you makes
Out of argc
And also argv.

Macbeth wanted the throne, to sit his arse upon the throne,
Before he met Heathfield's grannies and aunties in th' gloam.
Likewise Seebach plucks at prophesies and dreams
To pretend he's competent, and at night he screams.
0
Reply spinoza1111 4/6/2010 9:59:54 AM

On Apr 6, 5:53=A0pm, Walter Banks <wal...@bytecraft.com> wrote:
> spinoza1111 wrote:
> > , you'd know that the author is
> > not in charge of the cover material.
>
> The text content of the cover is part of the galleys sent
> to the author for fact checking and approval.

That is correct: Apress did that for me. However, in many situations,
it's too much "time" (especially in a larger company than Apress, like
McGraw Hill) to make the change on deadline.
>
> --- news://freenews.netfront.net/ - complaints: n...@netfront.net ---

0
Reply spinoza1111 4/6/2010 10:02:21 AM

spinoza1111 wrote:
> On Apr 6, 3:26 pm, Seebs <usenet-nos...@seebs.net> wrote:
>> On 2010-04-06, Richard Heathfield <r...@see.sig.invalid> wrote:
>>
>>> spinoza1111 wrote:
>>>> I shall rejoin this discussion prematurely
>>> Prediction fulfilled. (See Message-ID:
>>> <quqdnVofP5fuDSXWnZ2dnUVZ7sSdn...@bt.com> for details.)
>> I think that's shooting fish in a barrel territory.
>>
>>> I see no attacks on Malcolm's credibility in this thread. I do see some
>>> fairly hefty attacks on his argument, but that's only because his
>>> argument is broken.
>> And also a bit of concern about why he would jump in and make silly
>> claims ("it's a tutorial, not a reference" -- HUH?!).
> 
> Don't start in on Malcolm, please. You've done enough damage.
>>>> Peter, the issue here isn't Schildt's book. It is "C: the Complete
>>>> Nonsense", not "C: the Complete Reference".
>>> The one is a commentary on the other. Therefore, both are relevant to
>>> the thread.
>> Yes.  The commentary can only be evaluated in terms of the thing commented
>> on.
> 
> Wrong. The commentary is absurd.
>>> If on specific errata he is right, it adds up to a proper critique,
>>> unless there are a significant number of specific errata that he got
>>> wrong. This you have failed to demonstrate.
>> I think there's certainly a meaningful sense in which it's not a
>> "proper critique"; if I went to someone for a professional-quality
>> book review, and got back C:TCN, I'd be upset.
>>
>> But as things posted on the internet for free roughly 15 years ago go,
>> it's not bad.
>>
>>>> I will take responsibility for
>>>> repairing wikipedia
>>> No wonder it has such a bad reputation, if people like you are
>>> "repairing" it. But I thought you'd been banned from "repairing" Wikipedia?
>> Well, yes.  The purpose of this whole thing seems to be that the Wikipedia
>> admins chose to accept the C:TCN page as sufficient evidence that the
>> "controversy" section deserved to be there.  Thus, if Nilges can get enough
>> people to argue that C:TCN isn't a very good critique...  nothing happens.
>>
>> Because the underlying point isn't anything to do with C:TCN.  It's that
> 
> It has everything to do with CTCN.
> 
>> the page is an *example* of the general category of "reputable C experts who
> 
> You are not a reputable C expert.
> 
> You have not published on C (please respond if you can with articles
> on C only that I have missed).

As usual, you are wrong. Peter Seebach wrote the recursion and C99 
chapters of "C Unleashed". If you would care to check the errata for 
those chapters, you will find a total of seven mistakes by Seebs. Please 
feel free to use these very serious errors as ammunition in your 
campaign of personal destruction.

<nonsense snipped>

Oh yes, it's time to play the random game again.

CTCR2e, Herbert Schildt, p152:

For example, consider the function print_upper(), which prints its 
string argument in uppercase:

#include "stdio.h"
#include "ctype.h"

void print_upper(char *string);

void main(void)
{
   char s[80];

   gets(s);
   print_upper(s);
}

/* Print a string in uppercase. */
void print_upper(char *string)
{
   register int t;

   for(t=0; string[t]; ++t) {
     string[t] = toupper(string[t]);
     putchar(string[t]);
   }
}

After my usual plea with the compiler not to be too fussy about void 
main, I fed the program a file (redirected to stdin) that consisted 
entirely of upper case characters, and the program responded by 
crashing, without producing any output.

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 10:05:38 AM

On 6 Apr, 10:42, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 6, 3:26=A0pm, Seebs <usenet-nos...@seebs.net> wrote:

....

> > the page is an *example* of the general category of "reputable C expert=
s who
>
> You are not a reputable C expert.
>
> You have not published on C (please respond if you can with articles
> on C only that I have missed).
>
> You have shown yourself to be an incompetent C coder who fails to
> write structured code and makes newbie errors in the last three
> months.
>
> Your only known confederates are Clive Feather, a nasty piece of work,
> and Richard Heathfield, a nasty piece of work.

"A nasty piece of work"! Is this one of those irregular definitions
such as

  "I am forthright"
  "You are abusive"
  "He is a nasty piece of work"

Or is it a term which you use for those who disagree with you.
Perhaps: for those who disagree with you and for whom you are running
out of arguments to counter.

I've noticed that Richard has been making comments on the issues with
pieces of code in an edition of the book. And thanks to you bringing
the matter up in this thread some minor and some fairly serious
criticisms have been levelled at Schildt's work. The main problem with
your argument, ISTM, is that you haven't made an effective defence of
his code.

In fact you seem to focus on personal attacks on others. By doing so I
would say that you are showing yourself to be "a nasty piece of
work." (My definition, this time.)

> You have zero experience in the use of C outside of unix.

Are you unable to see that, even if true, this is irrelevant? If
something is misleading it is misleading no matter who says so.
Continually attacking or challenging where people come from is
immaterial if the points they are maing are valid.

If the points are wrong then say so, and say why. To waffle on about
who people knew or what their background is is irrelevant when the
issues are plain, unambiguous and open to discussion which is the case
here.

James
0
Reply James 4/6/2010 10:37:49 AM

On Apr 6, 5:58=A0pm, James Harris <james.harri...@googlemail.com> wrote:
> On 6 Apr, 09:43, spinoza1111 <spinoza1...@yahoo.com> wrote:
>
> > On Apr 6, 3:26=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
>
> ...
>
> > > I think there's certainly a meaningful sense in which it's not a
> > > "proper critique"; if I went to someone for a professional-quality
> > > book review, and got back C:TCN, I'd be upset.
>
> > Very good. We're making progress. OK, you have write access to the
> > post. I will drop the matter if you replace it by a blank post, or
> > something saying "withdrawn". You do not need to apologize therein to
> > Herb, you do not need to apologize for the damage you've done to me,
> > and you do not need to notify me of your action.
>
> ...
>
> > If you would just blank the site, I can then go into wikipedia as an
> > anonymous ip address and quite properly remove the section of the
> > article on Schildt that continues to damage his reputation.
>
> Weren't you "banned" from Wikipedia for making inappropriate edits
> including under anonymous IP addresses?

That's correct. And you can find a full discussion of this between
myself and someone who at least appears to be Jimmy Wales, wikipedia's
founder, at http://spinoza1111.wordpress.com/2010/01/06/wikipedias-racist-b=
ullying-redux/.

The fact is that in 2006, wikipedia drove out educated contributors
and replaced them by convenience store clerk types who applied rules
without subject matter knowledge. This is well known and is confirmed
by many former contributors.

In my case I was with the encouragement of the informal moderator of
changes to the Kant page (a uni prof) making contributions, but my
experience in teaching philosophy in various capacities since 1973 is
that to TEACH philosophy you must DO philosophy. This bothered
somebody called amerindianarts and he started edit warring my changes.

I was like, kemosabe, up yours because I don't suffer fools gladly.
However, today's techno-peasants (cf. Jaron Lanier, You Are Not a
Gadget) are taught to grin and shuffle, so I was tagged as a bad
nigra.

Several bigshots, perhaps Wales, would like me to come back little
Sheba in order to get free content. Unfortunately I make my living at
teaching among other things philosophy, so why be a cow when the milk
is free (or something like that). Wales et al. want me to subject
myself to a Stalinist show trial in which I like Bukharin humbly admit
my failings. Which I sure won't.

It is also said that I was "banned" from a local placeblog. What
happened was that (1) I was made a moderator by the big cheese. (2)
Other moderators, disturbed by my literacy and the fact that based on
original graphics I posted, I became "artist of the month" with a one
man show in a local gallery, started disrupting "my" group. (3) I
invited them to perform an aerial reproductive maneuver. (4) My
privileges were reduced by the big cheese. (5) I left since this was a
waste of time.

>
> Please don't even consider removing what you call "the section of the
> article on Schildt that continues to damage his reputation." Apart
> from Peter Seebach's comments the "section" refers to two other
> sources of criticism. Even if Peter does what you request - and I hope
> he does not - that would be no mandate for you to remove references to
> other criticism.

Excuse me, don't bore me with things I already know. The fact is that
before January of last year, the Schildt article, which was created to
trash the guy, was in serious violation of Biographies of Living
Persons, wikipedia's own policy. I changed it as a "blocked" user and
that change has been effective ever since. If Peter simply blanks CTCN
I can go back and get the Reception section changed.

The Reception section mischaracterises Seebach as "a former voting
member of ISO C committee and moderator of the Usenet group
comp.lang.c.moderated". The fact is, as he has himself confirmed, he
paid his way onto the ISO committee and as a moderator, he does no
work, allowing all posts through. But if we can get CTCN removed from
the Internet, this will make our case for the removal of the Reception
section.

It's not really appropriate that Schildt has a wikipedia biography in
the first place, since being a hard working computer author and
musician is not by itself significant enough. Dan Appleman has
published extensively on programming, is one of the nicest guys I'd
care to know, was slashdotted, and is currently a technology columnist
for the San Francisco Chronicle, but does not merit a wikipedia
biography. The Schildt biography was created, and sourced solely on
Seebach's attack on CTCR (and Feather's attack on C: the Annotated
Standard, a copycat crime), in order to pad the anti-Schildt "case".

Nobody's going to create a wikipedia article about me despite the fact
that I'm a hard working author and teacher and a good looking, sexy
guy, unless they wish to immortalize "Nilgewater" as a term of art;
but this was tried, I complained, and the entry disappeared into thin
air.

Private people who work hard, whether Schildt, Kathy Sierra, or Kim
Pring (a Miss Utah lampooned in Hustler) have a right under the UN
Declaration of Human Rights and the Ninth Amendment to the US
Constitution insofar as the latter applies to PRIVACY. As it is, even
defending them as I do (I got the Sierra article repaired as well as a
"blocked" user) can cause them further anxiety. That is why I am
asking Peter Seebach to be a man for a change, and blank CTCN. This
matter will end.

>
> ...
>
> > > If I were to write such a page today, based on the 4th edition, it wo=
uld have
> > > fewer nitpicking errors, but I could do a much better job of explaini=
ng in
> > > detail, and presenting effectively, the case that the remaining error=
s both
> > > conceptual and technical are serious enough to utterly dispel any not=
ion
> > > that the book ought to be used to learn from. =A0I know a lot more ab=
out
> > > writing, and about how to teach people about computers, and about C, =
than I
> > > did back in ~1995 or so. =A0My impressions of Schildt's work have not=
 changed
> > > for the better.
>
> > You can do that, of course. However, to do an acceptable job, you need
> > to provide all of what you think are errors, and you have to be
> > prepared to have to defend your document. It appears to me that you do
> > not have enough academic experience in this type of interchange to
> > know how time-consuming this would be for you. I think it would be
> > better for you to return to school and learn the trade you profess.
>
> An update to Peter's criticism would be beneficial. As he himself
> recognises there are ways it could be improved such as by removing
> nitpicking errors. Time has moved on but for a 15-year old document
> it's not bad.
>
> If you are an academic, Edward, you should recognise the value of
> assertion and criticism.

I am only an adjunct and free market academic. However, I have I think
a better sense of what "criticism" really is, based on teaching
logic.

It isn't inferring from finding 6 errata to a global charge that you
know will be replicated and amplified on the internet in the fallacy
of composition.

> The presence of both serves to produce a
> better-informed readership. Notwithstanding my view that the critical
> page of Peter's would benefit from an update, ISTM that the Wikipedia
> article is balanced as it stands. I don't understand what's motivating
> your desire to change it.

Such a Reception section could be made of most computer authors. Many
C programmers hate K & R. Shouldn't we give them a section in the
article on Kernighan? A coworker laughed at the title of The Art of
Computer Programming, since, he said, it's not an art. Shouldn't
ignorant people have a section in the Knuth article?

OF COURSE NOT, because Wikipedia's own Biographies of Living Persons
policy forbids gratuitous assaults on both people who are (in the
distinction made by the US Supreme Court in the case of Flynt v
Robertson) "public figures" and "private figures", with a higher, not
a lesser, standard for private figures.

The Wyoming lawyer Gerry Spence in fact lost a case in which he
defended a Utah beauty queen who was lampooned as giving blow jobs in
Hustler. I feel, however, his reasoning in this case was sound: it was
that private people who are for a temporary and special reason in the
public eye do not thereby become true public figures. A beauty queen
looks better in a bikini than I do as a computer author, but we're
both essentially private figures who for that reason deserve a higher
standard of care.

This is because mere employability is more important to most private
individuals, and these gratuitous "mean kids" attacks on Kim Pring,
Kathy Sierra, et al. harm their standing in their community and that
of their family members.

>
> James

0
Reply spinoza1111 4/6/2010 10:43:58 AM

On 06/04/2010 11:43, spinoza1111 wrote:
> [...]  The fact is, as he [Seebs] has himself confirmed, he
> paid his way onto the ISO committee [...]

So did Schildt.  So what?


0
Reply Richard 4/6/2010 10:59:10 AM

spinoza1111 wrote:

<nonsense snipped>

> I was like, kemosabe, up yours because I don't suffer fools gladly.

That must make it very difficult to live with yourself.

<nonsense snipped>

> 
> It isn't inferring from finding 6 errata to a global charge that you
> know will be replicated and amplified on the internet in the fallacy
> of composition.

Let's play the random game again.

Schildt's CTCR2e, p138. Note that the opening comment is Schildt's, not 
mine!

/* Display powers of the numbers 1 through 10.
    Note: even though this is a correct program,
    some compilers will issue a warning message
    concerning the argument to the functions
    table() and show(). If this happens, just
    ignore it.
*/

#include "stdio.h"
#include "stdlib.h"

int pwr(int a, int b);
void table(int p[4][10]);
void show(int p[4][10]);

void main(void)
{
   int *p;

   p = malloc(40*sizeof(int));

   if(!p) {
     printf("memory request failed\n");
     exit(1);
   }

   /* here, p is simply a pointer */
   table(p);
   show(p);
}

/* Build the table of powers. */
void table(int p[4][10]); /* now the compiler has an array
                        to work with */
{
   register int i,j;
   for(j=1; j<11; j++)
     for(i=1; i<5; i++) p[i][j] = pwr(j, i);
}

/* Display the table of integer powers. */
void show(int p[4][10]) /* now the compiler has an array
                       to work with */
{
   register int i,j;

   printf("%10s %10s %10s %10s\n",
          "N", "N^2", "N^3", "N^4");

   for(j=1; j<11; j++) {
     for(i=1; i<5; i++) printf("%10d ", p[i][j]);
     printf("\n");
   }
}

/* Raise an integer to the specified power. */
pwr(int a, int b)
{
   register int t=1;

   for(; b; b--) t = t*a;
   return t;
}

Okay, let's take it from the top:

1) the comment is wrong in claiming that the program is correct;
2) the comment contains unwise advice to ignore a useful warning;
3) the standard headers are unwisely enclosed in quotation marks
    rather than angle-brackets;
4) the return type of main is wrong;
5) the program passes a non-portable value to exit();
6) the program passes an int * to a function expecting int p[4][10]
    (this problem occurs twice on two consecutive lines);
7) a function takes a parameter of type int [4][10] (i.e. but
    then attempts to access several elements that don't exist:
    [0][10], [1][10], [2][10], [3][10], and [4][0] through [4][10];
8) another function does precisely the same thing.

I decided *not* to point out two other issues, one of them a matter of 
robustness and the other having regard to efficiency, on the grounds 
that this is supposed to be tutorial code for beginners - i.e. I 
recognise the validity of the "one mountain at a time" technique.

<nonsense snipped>

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 11:13:46 AM

Richard Harnden wrote:
> On 06/04/2010 11:43, spinoza1111 wrote:
>> [...]  The fact is, as he [Seebs] has himself confirmed, he
>> paid his way onto the ISO committee [...]
> 
> So did Schildt.

So did every member of the ISO C Committee, as far as I am aware. It's a 
bit like getting on the train - you're supposed to have a ticket first.

> So what?

Indeed.

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 11:15:02 AM

Phil Carmody wrote:

<snip>

> I've previously been utterly content that I have no copies of
> any edition of this book, for obvious reasons. However, you 
> having turned it into a game have reversed that, and I have a
> nasty feeling if I see one on the cheap, I'll not be able to 
> resist...

Oh, I'm sorry about that. But we have yet to turn it into a *drinking 
game*, as Seebs originally suggested.

Let's play the game again:

Schildt's CTCR2e, p502:

Example

This function converts the number entered at the keyboard into its 
absolute value:

#include "stdlib.h"

long int get_labs()
{
   char num[80];

   gets(num)

   return labs(atol(num));
}

Actually, of course, it does no such thing, because it won't compile.


I find it fascinating that I haven't yet had to search through the book 
looking for errors. I just open it at random, and bang! there's another 
one. I do have to do a /little/ work, though, because I'm trying to 
avoid posting any for which either Schildt has already posted an 
acknowledgement and correction or Seebs has already posted a critique. 
Schildt's Web site does contain an Errata section, but it has no entries 
for CTCR, so that's that - but I do have to keep checking Seebs's site. 
<sigh>

Those of you who have started looking forward in macabre glee to my next 
random Schildt bug will have to wait a few days, however, as my current 
schedule makes it difficult to get to Usenet except at the weekends (for 
a mildly bizarre definition of "weekends"). And no, I'm not planning on 
taking CTCR on the train with me...

-- 
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within
0
Reply Richard 4/6/2010 11:27:15 AM

In article <WOqdnUVJp80riibWnZ2dnUVZ8o1i4p2d@bt.com>,
 Richard Heathfield <rjh@see.sig.invalid> wrote:

> Richard Harnden wrote:
> > On 06/04/2010 11:43, spinoza1111 wrote:
> >> [...]  The fact is, as he [Seebs] has himself confirmed, he
> >> paid his way onto the ISO committee [...]
> > 
> > So did Schildt.
> 
> So did every member of the ISO C Committee, as far as I am aware. It's a 
> bit like getting on the train - you're supposed to have a ticket first.
> 
> > So what?
> 
> Indeed.

Ad hominem attacks are all that Spinny has left. He keeps being trumped 
by the facts and tries to squirm out of it each time.

-- 
Tim

"That excessive bail ought not to be required, nor excessive fines imposed,
nor cruel and unusual punishments inflicted"  --  Bill of Rights 1689
0
Reply Tim 4/6/2010 11:46:50 AM

On 6 Apr, 08:26, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Richard Heathfield <r...@see.sig.invalid> wrote:
>
> > I see no attacks on Malcolm's credibility in this thread. I do see some
> > fairly hefty attacks on his argument, but that's only because his
> > argument is broken.
>
> And also a bit of concern about why he would jump in and make silly
> claims ("it's a tutorial, not a reference" -- HUH?!).
>
I haven't actually read the book. However that's the impression I
gain. I think that "the book tries to be both a tutorial and a
reference" might be a valid criticism. But you don't actually make
that criticism.
>
> Yes. =A0The commentary can only be evaluated in terms of the thing commen=
ted
> on.
>
Whilst there are some things we cannot tell, for instance if you
happened to misquote Schildt there would be no way of knowing about it
without going to the original, you can tell whether a commentary is
trying to be balanced or not, or whether some of the points it makes
are fair, without actually seeing the original. Which is what I've
done.
>
> I think there's certainly a meaningful sense in which it's not a
> "proper critique"; if I went to someone for a professional-quality
> book review, and got back C:TCN, I'd be upset.
>
You said it. It's very unprofessional to make bug reports in a
sneering tone, so "C: the complete nonsense" is no good as an errata
page. However it's not a review. Slamming reviews are acceptable, but
they can't consist entirely or mainly of nitpicks, especially when the
book is over 700 pages long. When half of the nitpicks aren't even
right, the credibiility of the critique goes down even further.
      However "C: the complete nonsense is a bad webpage" isn't the
same as "C: the complete reference is a good book". It is possible to
make a bad criticism of a bad book.
0
Reply Malcolm 4/6/2010 12:17:11 PM


Richard Heathfield wrote:

> Richard Harnden wrote:
> > On 06/04/2010 11:43, spinoza1111 wrote:
> >> [...]  The fact is, as he [Seebs] has himself confirmed, he
> >> paid his way onto the ISO committee [...]
> >
> > So did Schildt.
>
> So did every member of the ISO C Committee, as far as I am aware. It's a
> bit like getting on the train - you're supposed to have a ticket first.
>
> > So what?
>
> Indeed.

It is splitting hairs but any fees maybe paid are to national standards
groups who are responsible for sending representatives to ISO meetings.
Fees are not normally paid by individuals to ISO.  In the US this is ANSI
which has a fee structure for individuals. In Canada the Canadian Stanadards
Association is our link to ISO.


Walter Banks

0
Reply Walter 4/6/2010 12:23:00 PM


spinoza1111 wrote:

> On Apr 6, 5:53 pm, Walter Banks <wal...@bytecraft.com> wrote:
> > spinoza1111 wrote:
> > > , you'd know that the author is
> > > not in charge of the cover material.
> >
> > The text content of the cover is part of the galleys sent
> > to the author for fact checking and approval.
>
> That is correct: Apress did that for me. However, in many situations,
> it's too much "time" (especially in a larger company than Apress, like
> McGraw Hill) to make the change on deadline.

The "bigger companies" it is not a question of time but due diligence.
The author signs off on the galleys before the book goes to press. The
actual press time is not scheduled until that point.

This is why Schildt not his publisher is ultimatly responsible for the
content.

w..


0
Reply Walter 4/6/2010 12:52:27 PM

On Apr 6, 8:17=A0pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
wrote:
> On 6 Apr, 08:26, Seebs <usenet-nos...@seebs.net> wrote:> On 2010-04-06, R=
ichard Heathfield <r...@see.sig.invalid> wrote:
>
> > > I see no attacks on Malcolm's credibility in this thread. I do see so=
me
> > > fairly hefty attacks on his argument, but that's only because his
> > > argument is broken.
>
> > And also a bit of concern about why he would jump in and make silly
> > claims ("it's a tutorial, not a reference" -- HUH?!).
>
> I haven't actually read the book. However that's the impression I
> gain. I think that "the book tries to be both a tutorial and a
> reference" might be a valid criticism. But you don't actually make
> that criticism.

Yes, and for most readers, all editions but the fourth are
unavailable. Libraries deaccess old computer books and used book
dealers don't want them unless they are known classics on computer
science...not programming. This means that if Seebach doesn't at least
keep the page up to date, it is not a valid criticism and should not
be referenced in wikipedia.

>
> > Yes. =A0The commentary can only be evaluated in terms of the thing comm=
ented
> > on.
>
> Whilst there are some things we cannot tell, for instance if you
> happened to misquote Schildt there would be no way of knowing about it
> without going to the original, you can tell whether a commentary is


....and as above the original is unavailable to most checkers...

> trying to be balanced or not, or whether some of the points it makes
> are fair, without actually seeing the original. Which is what I've
> done.

....as I have. Where Seebie seems to be right I have acknowledged it.
But there are only, as I have shown, six solid errata in CTCN. Not
enough to base his or anyone else's case.
>
> > I think there's certainly a meaningful sense in which it's not a
> > "proper critique"; if I went to someone for a professional-quality
> > book review, and got back C:TCN, I'd be upset.
>
> You said it. It's very unprofessional to make bug reports in a

I quite agree.

> sneering tone, so "C: the complete nonsense" is no good as an errata

Starting with its snarky title.

> page. However it's not a review. Slamming reviews are acceptable, but
> they can't consist entirely or mainly of nitpicks, especially when the
> book is over 700 pages long. When half of the nitpicks aren't even
> right, the credibiility of the critique goes down even further.
> =A0 =A0 =A0 However "C: the complete nonsense is a bad webpage" isn't the
> same as "C: the complete reference is a good book". It is possible to
> make a bad criticism of a bad book.

Quite so. In fact, Amazon contains thousands.

Peter: two distinguished people here, Dr. McClean and Navia, the
author of lcc as it exists today, have concurred in general with me.
Don't you think it's time to blank CTCN at a minimum?
0
Reply spinoza1111 4/6/2010 2:32:04 PM

On Apr 6, 7:27=A0pm, Richard Heathfield <r...@see.sig.invalid> wrote:
> Phil Carmody wrote:
>
> <snip>
>
> > I've previously been utterly content that I have no copies of
> > any edition of this book, for obvious reasons. However, you
> > having turned it into a game have reversed that, and I have a
> > nasty feeling if I see one on the cheap, I'll not be able to
> > resist...
>
> Oh, I'm sorry about that. But we have yet to turn it into a *drinking
> game*, as Seebs originally suggested.
>
> Let's play the game again:
>
> Schildt's CTCR2e, p502:
>
> Example
>
> This function converts the number entered at the keyboard into its
> absolute value:
>
> #include "stdlib.h"
>
> long int get_labs()
> {
> =A0 =A0char num[80];
>
> =A0 =A0gets(num)
>
> =A0 =A0return labs(atol(num));
>
> }
>
> Actually, of course, it does no such thing, because it won't compile.

Of course it won't. There is a missing semicolon at the end of gets. A
professional programmer sees this and fixes it without making absurd
generalizations about the computer author. Whereas incompetents like
to play the back-stabbing game.

Richard, this is a stupid game. Anyone's code snippets have any number
of preconditions, and no professional programmer cuts and pastes so
blindly. I realize that you're not a professional programmer, but
don't use your ignorance of your trade as an argument.

Furthermore, you're using an out of date edition.

For the last time, scumbag. Proving that your computer teachers were
mistaken about something, and proving that a computer author made
mistakes, does not make you competent or of service to others except
in a barbaric and fantasy logic. We have tools such as compiler
diagnostics for finding random errors. We expect from you
professionalism and decency, and you don't show it.
>
> I find it fascinating that I haven't yet had to search through the book
> looking for errors. I just open it at random, and bang! there's another
> one. I do have to do a /little/ work, though, because I'm trying to
> avoid posting any for which either Schildt has already posted an
> acknowledgement and correction or Seebs has already posted a critique.
> Schildt's Web site does contain an Errata section, but it has no entries
> for CTCR, so that's that - but I do have to keep checking Seebs's site.
> <sigh>
>
> Those of you who have started looking forward in macabre glee to my next
> random Schildt bug will have to wait a few days, however, as my current
> schedule makes it difficult to get to Usenet except at the weekends (for
> a mildly bizarre definition of "weekends"). And no, I'm not planning on
> taking CTCR on the train with me...
>
> --
> Richard Heathfield <http://www.cpax.org.uk>
> Email: -http://www. +rjh@
> "Usenet is a strange place" - dmr 29 July 1999
> Sig line vacant - apply within

0
Reply spinoza1111 4/6/2010 2:41:57 PM

On Apr 6, 8:52=A0pm, Walter Banks <wal...@bytecraft.com> wrote:

<snipped>

This group has some very evil people in it, so here's a revised and
corrected copy of my Macbeth poem. Poetry can drive out evil spirits.

Snip snip snippety snip
I need to get wise, and I need to get hip,
And follow the trivial rules
That have lighted fools
The way to dusty death
Sorta like Macbeth.
You know the old play.
Glamis, then Cawdor, then the buttered Scone:
But what's little noticed and lesser known,
Is Macbeth's foolish logic...he's brainsick.
I mean, those bitches on the heath-field
Crones that call to Richard in his lonely room,
Prophesied that Macbeth should be Cawdor, and he wuz:
So what did the kilted Jocko do?
He kilted Duncan like a scuz!

This sort of subhumanity
We see here, and it's a tragedy:
For six errata do not make your case
Any more than you prove jackshit when a mess you makes
Out of argc
And also argv.

Macbeth wanted the throne, to sit his arse upon the Stone,
Before he met Heathfield's grannies and aunties in th' gloam.
Likewise Seebach plucks at prophecies and dreams
To pretend he's competent, and at night he screams.

0
Reply spinoza1111 4/6/2010 2:46:44 PM

On 2010-04-06, Richard Heathfield <rjh@see.sig.invalid> wrote:
> [Seebs - please read this, as I have a question for you at the end.]

*bamf*

> "I had been given the mission of creating a complete reference guide to 
> the C programming language. Not just /any/ book, but the /complete/ book."

*snerk*

> Okay, this is from page 420 of the second edition of CTCR, not a page I 
> recall seeing before.

Well!  This is fortuitous.

The 2nd and 3rd edition are extremely similar in page numbering, and while
paging to it, I found my receipt.

I bought the 3rd edition on 1/22/96, specifically to write about it, so I
can now state that the page in question is just over 14 years old.  15 was
an estimate based on the book's copyright date.

It's now page 407, by the way.

> This fragment reads up to 128 characters from the file described by fd:
>
> unsigned count
> char *buf[128];
>
> if(_dos_read(fd, buf, 128, &count))
>    printf("error reading file");

> Seebs: was this corrected in CTCR3?

No.  But!

The error message was changed to "Error reading file."

So not only are the three obvious errors still there, but they are still
there despite the fact that, demonstrably, someone looked at the example.

I can't find any <dos.h> stuff in the 4th edition; it looks like it was
removed entirely.  So, to add insult to injury, not only is it an extremely
buggy example with no explanation offered, but it was NEVER fixed -- at
least some of the errors were "fixed" by making a new edition in which
they are corrected.

Flipped around a bit, found a new example.  4th edition, page 264:

	#define MAX_SIZE 100
	/* ... */
	float balance[MAX_SIZE];
	/* ... */
	for(i=0; i<MAX_SIZE; i++) printf("%f", balance[i]);
	/* ... */
	for(i=0; i<MAX_SIZE; i++) x =+ balance[i];

The reader is encouraged to try to spot errors.  I only found two; can
you do better?

(Note that the last line of the above example wasn't present in the 3rd
edition, where the example appears on page 262, but the other problem
existed then too.)

.... And dammit, looking it up, I found another one:

	#include <stdio.h>
	#define ABS(a)  (a)<0 ? -(a) : (a)
	void main(void)
	{
	  printf("abs of -1 and 1: %d %d", ABS(-1), ABS(1));
	}

	When this program is compiled, a in the macro definition will be
	substituted with the values -1 and 1.  The parentheses that enclose
	a ensure proper substitution in all cases.

Never mind the misdeclared main and the missing newline.  Who here can
come up with a case where ABS(x) doesn't produce the expected result?

.... Nevermind, it's like shooting fish in a barrel.

	printf("abs(3) - 1: %d\n", ABS(3) - 1);

The forth edition points out that the () around a are needed, and illustrates
that, without them, ABS(10-20) wouldn't produce the right results -- meaning
he reviewed this example again and still didn't spot the OBVIOUS BUG.

Seriously, guys, this book is MUCH WORSE than I claimed.  I thank Mr. Nilges
for making me aware of just how badly I understated the degree to which this
book is utterly unsuitable for teaching C, and if I'd had to review a book
like this, I woulda been quite tempted to argue that it was simply unsuitable
for publication without MASSIVE revisions and corrections.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 2:50:27 PM

On 2010-04-06, Richard Heathfield <rjh@see.sig.invalid> wrote:
> Schildt's CTCR2e, p502:

Now 483 in 3rd edition:

> #include "stdlib.h"
>
> long int get_labs()
> {
>    char num[80];
>
>    gets(num)
>
>    return labs(atol(num));
> }

> Actually, of course, it does no such thing, because it won't compile.

And the wrong markers for the standard header, and no main.  And no
declaration in scope for gets().

It's somewhat improved in 3E, where there's declarations for
num1[80], num2[80], they're both gets'd after prompts (no newlines
or flushes, of course) and then:
	printf("The sum is: %ld.", atol(num1) + atol(num2));

So it's only wrong in the usual ways (no newline on output, for instance).

(BTW, that's a DOSism, as I recall -- I believe MS-DOS printed a newline
before the prompt, so DOS programmers often habitually omitted trailing
newlines in the last output.)

4th edition fixes main's return type but does nothing else.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 2:57:03 PM

On 2010-04-06, Richard Heathfield <rjh@see.sig.invalid> wrote:
> Let's play the random game again. P298 of CTCR2e:

> int fflush(FILE *stream);
> [Schildt claims that fflush clears input buffers.]

> Secondly, the behaviour of fflush() when passed a FILE * 
> that is associated with an "input file" is undefined.

Still broken in 3rd edition.  In 4th edition, the claim about the input
file is gone, but the description is questionable; what about a file opened
for both reading and writing, on which the last operation was a read rather
than a write?  Then the behavior is undefined.  (We could argue that this
is a file "opened for update", not "opened for writing", but not telling
the reader that you can flush a file opened for both reading and writing,
and when you can do so, is ridiculous.)

But!  The 3rd edition example:

	fwrite(buf, sizeof(data_type), 1, fp);
	fflush(fp);

A little clumsy, but sure.

The 4th edition example:
	for(i=0; i<MAX; i++) {
	  fwrite(buf, sizeof(data_type), 1, fp);
	  fflush(fp);
	}

The astute reader will notice immediately that this has gone from a
slightly unimpressive example to an overtly stupid one.  This should be:

	fwrite(buf, sizeof(data_type), MAX, fp);
	fflush(fp);

.... Unless, of course, it was INTENTIONAL that it would write only the
first item in buf, MAX times.  Who can say?  Either it's an example of
how to do something extremely implausible, or it's another bug, INTRODUCED
in the 4th edition!

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 3:04:15 PM

On 2010-04-06, Richard Heathfield <rjh@see.sig.invalid> wrote:
> spinoza1111 wrote:
>> And I'm afraid that
>> given your approval of a buggy off by one strlen last month, this
>> intolerance does not imply competence.

(Did *anyone* "approve" of that?  Dismiss it as a minor fencepost
error of the sort people make when not reviewing or checking code,
sure.  *Approve*?  I sure don't think so.)

> gets(s);
> if(*s==0) break; /* no entry */
> p = malloc(strlen(s));
> if(!p) {
>    printf("out of memory.\n");
>    return;
> }
> strcpy(p, s);

> Code taken from p550 of CTCR, 2nd edition.

This one's actually fixed in the third edition!  That's surprising, since
the 3rd edition seems to have fixed very few bugs.

On the other hand, the example is more fundamentally broken.  The structure
of the "scheduler" is an array[MAX] of char *.  As you enter appointments,
they are appended to the list, and "spos" is incremented.  As you delete
appointments, "rpos" is incremented.  Note that no deallocation occurs.  Also,
there's no reuse of any sort.  So delete() just looks like:
	if((p=qretrieve())==NULL) return;
	printf("%s\n", p);
where qretrieve() is a destructive removal of exactly the first item in the
list, never any other.  And no deallocation occurs.  (delete() could have
reasonably freed p after printing it.)  The only change I see in 4th edition
is that it's been renamed to delete_ap(), and he's added a cast to malloc();
basically, he's made it more C++ friendly.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 3:11:49 PM

On 2010-04-06, Richard Heathfield <rjh@see.sig.invalid> wrote:
> spinoza1111 wrote:
><snip>

>> If you would just blank the site, I can then go into wikipedia as an
>> anonymous ip address and quite properly remove the section of the
>> article on Schildt that continues to damage his reputation.

> That's the big problem with Wikipedia - any bozo can edit it, and many 
> bozos do. Fortunately, Seebs isn't about to "blank the site" any time soon.

It's nice for Nilges to come out and say that his fundamental reason for
objecting to my page is that he wants to be able to commit a felony-level
unauthorized access to someone else's computers.  (Hint:  Once you're banned,
trying to sneak around the ban is, in fact, usually a felony, albeit not
one the cops are likely to pursue.)

However, he's wrong; there are other pages that support the same point just
as well.

> It doesn't take a genius to work out why.

But it might take someone to figure out WHY the "/2" is there.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 3:14:39 PM

On 2010-04-06, Richard Harnden <rh.nospam@tiscali-co-uk.invalid> wrote:
> On 06/04/2010 11:43, spinoza1111 wrote:
>> [...]  The fact is, as he [Seebs] has himself confirmed, he
>> paid his way onto the ISO committee [...]

> So did Schildt.  So what?

In fact, so did everyone I know of.  In fact, I'm the only person I know
to have been given a waiver of the fees (I was flat broke at the time) to
allow me to continue attending meetings and voting based on my contributions,
rather than based on sending in money.  (Only one year, but hey, it's a
data point.)

The difference is that Schildt paid the money for membership, then never
attended meetings or participated in any way that anyone I ever talked to is
aware of.  He paid money for the recognition and status.  Me, I went to
meetings and put in time and effort trying to find ways to improve the
language, working on defects, suggesting resolutions to wording problems, and
otherwise actually DOING STUFF.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 3:17:14 PM

"Ben Pfaff" <blp@cs.stanford.edu> wrote in message 
news:87aath35ug.fsf@blp.benpfaff.org...
> "bartc" <bartc@freeuk.com> writes:
>
>> "Ben Pfaff" <blp@cs.stanford.edu> wrote in message
>> news:87eiit37ge.fsf@blp.benpfaff.org...
>>> REH <spamjunk@stny.rr.com> writes:
>>>
>>>> On Apr 5, 2:55 pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
>>>> wrote:
>>>>> Next error - "This shorthand [presumably +=, -=,*-, /=, %=, &= etc]
>>>>> works for all the binary operators". Technically the structure member
>>>>> operator is a binary operator, as are logical &&. So Schildt's
>>>>> sentence is literally incorrect.
>>>>
>>>> Actual, the structure member operator is a postfix operator.
>>>
>>> The structure member operator has two operands.  That makes it a
>>> binary operator.
>>
>> It's a strange one. The right-hand operand can't be any conventional
>> expression. I wouldn't call it a proper binary operator.
>>
>> And (having a quick look in the C99 reference) it does seem to be a
>> post-fix op followed by an identifier.
>
> The structure member operator's second operand is unusual, but it
> certainly has two.  That makes it binary.
>
> Whether it is a postfix operator is irrelevant, since that is an
> orthogonal classification.  I can imagine postfix, infix, and
> prefix binary operators: e.g. 1 2 + versus 1 + 2 versus + 1 2.
> (I'm not claiming that C has a binary operator with each kind of
> syntax.)

Wouldn't "a . b" be written "a b ." if "." was a postfix op with two 
operands?

-- 
Bartc 

0
Reply bartc 4/6/2010 3:20:10 PM

On 2010-04-06, Richard Heathfield <rjh@see.sig.invalid> wrote:
>> You have not published on C (please respond if you can with articles
>> on C only that I have missed).

> As usual, you are wrong. Peter Seebach wrote the recursion and C99 
> chapters of "C Unleashed". If you would care to check the errata for 
> those chapters, you will find a total of seven mistakes by Seebs. Please 
> feel free to use these very serious errors as ammunition in your 
> campaign of personal destruction.

WTF.

Nilges apparently can't use Google.

Anyway...

http://www.ibm.com/developerworks/power/library/pa-ctypes1/

I assume Nilges is now gonna send a bunch of complaints to the dW people
bitching about this.  I apologize in advance to the dW editors, but it's
not as though it would have taken anyone in the world but Nilges more than
a few seconds to find these.

http://www.ibm.com/developerworks/library/l-c99.html
http://www.ibm.com/developerworks/library/pa-spec3.html

(For the curious among CLC:  I was laid off in 2003, and spent a couple of
years working primarily as a freelance writer.  The economy improved, and in
2007 I was head-hunted by the same people as soon as they found out I might
be open to employment.)

> After my usual plea with the compiler not to be too fussy about void 
> main, I fed the program a file (redirected to stdin) that consisted 
> entirely of upper case characters, and the program responded by 
> crashing, without producing any output.

Did you feed it more than 79 upper case characters?  Because I get the
feeling the "crashes due to gets being stupid" are intended to be overlooked.
(If it's something else, it's too subtle for me to get before breakfast.)

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 3:23:52 PM

On 2010-04-06, Walter Banks <walter@bytecraft.com> wrote:
> spinoza1111 wrote:
>> , you'd know that the author is
>> not in charge of the cover material.

> The text content of the cover is part of the galleys sent
> to the author for fact checking and approval.

And indeed, we even get some influence.  Not as much as we might like;
"Beginning Portable Shell Scripting" was named "Beginning" despite my
objections.  I wrote a book in the process of which I, and my tech reviewer
(an autoconf maintainer!) learned a great deal about shell programming and
shell portability, but because the series roadmap called for a "beginning"
book, it got tagged as such.

I did get them to not call it a "Linux" book, though -- I felt that calling
it "Linux" would rather undermine the point of writing a book about portable
code.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 3:25:44 PM

On 2010-04-06, Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:
> On 6 Apr, 08:26, Seebs <usenet-nos...@seebs.net> wrote:
>> And also a bit of concern about why he would jump in and make silly
>> claims ("it's a tutorial, not a reference" -- HUH?!).

> I haven't actually read the book. However that's the impression I
> gain.

Your impression is completely wrong.

It is primarily a reference, it is sold as such, and it is structured
as such.

> I think that "the book tries to be both a tutorial and a
> reference" might be a valid criticism. But you don't actually make
> that criticism.

It wouldn't be a good criticism, though.  The book is well-structured
in that regard; it begins with tutorial material and then provides a
large and fairly complete reference section.

> Whilst there are some things we cannot tell, for instance if you
> happened to misquote Schildt there would be no way of knowing about it
> without going to the original, you can tell whether a commentary is
> trying to be balanced or not, or whether some of the points it makes
> are fair, without actually seeing the original. Which is what I've
> done.

The main problem with the existing page is that it barely scratches
the surface of the insanity; see the other examples we've been posting
recently.

Seriously.  Open it to a random page, get nonsense, more often than not.

>> I think there's certainly a meaningful sense in which it's not a
>> "proper critique"; if I went to someone for a professional-quality
>> book review, and got back C:TCN, I'd be upset.

> You said it.

Yes.  Because it was not offered as a "professional-quality book review".
It was a quick patch to stem the bleeding of the endless flood of newbies
coming to clc and not having any idea why none of their code worked and many
of the examples in their book wouldn't even compile.

> It's very unprofessional to make bug reports in a
> sneering tone, so "C: the complete nonsense" is no good as an errata
> page. However it's not a review. Slamming reviews are acceptable, but
> they can't consist entirely or mainly of nitpicks, especially when the
> book is over 700 pages long. When half of the nitpicks aren't even
> right, the credibiility of the critique goes down even further.

Except that you have yet to show that even ONE of the nitpicks is actually
wrong -- some of them may be overly picky, or not the most persuasive or
best examples, but that doesn't make them "not even right".

>       However "C: the complete nonsense is a bad webpage" isn't the
> same as "C: the complete reference is a good book". It is possible to
> make a bad criticism of a bad book.

Yes.  Or a mediocre criticism.

I think, though, that your complaints about the tone of C:TCN are misplaced.
This is a spectacularly bad book.  Have you noticed the "random quote from
C:TCR" game has yet to produce a randomly selected code sample which did NOT
have at least one or two bugs?

The chief flaw in C:TCN is that in doesn't give enough of the examples -- but
not that it overclaims.  It underclaims, and fairly seriously so.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 3:30:51 PM

Richard Heathfield <rjh@see.sig.invalid> writes:
[...]
> Random quote from CTCR2e. This one's from pages 510-511.
>
> Example
>
> This program uses the system time to randomly initialize the rand()
> function by using srand():
>
> #include "stdio.h"
> #include "stdlib.h"
> #include "time.h"
>
> /* Seed rand with the system time
>    and display the first 10 numbers.
> */
> void main(void)
> {
>   int i, stime;
>   long ltime;
>
>   /* get the current calendar time */
>   ltime = time(NULL);
>   stime = (unsigned) ltime/2;

Why the division by 2?

Hmm, I think I see some possible logic here.  (unsigned)ltime could
exceed INT_MAX.  Dividing by 2 avoids overflow.  And yes, the cast is
necessary to achieve this (unless you use another temporary variable).
Does the text explain this?

(My first thought was that the system clock might be updated only once
every 2 seconds, and the division allows it to cover all values in the
range -- not that that would be particularly helpful anyway.)

The spacing implies that the cast applies to "ltime/2"; in fact, it
applies to "ltime", and the result of the cast is then divided by 2.
It's like writing "x * y+z".

>   srand(stime);
>   for(i=0; i<10; i++) printf("%d ", rand());
> }
>
> Here are the problems I can see at a quick glance:
>
> 1) incorrect claim about behaviour of program;

Yes, the word "randomly" is incorrect.

> 2) unwise use of quotes rather than angle-brackets for standard headers;
> 3) using the wrong return type for main;
> 4) using a long int instead of a time_t to accept the return value
> from time();

Poor style, but not an error, since the result will be implicitly
converted.  There's some risk of overflow if time_t is unsigned and at
least as wide as long, but if you assume a particular representation
(say, seconds since 1970), that's not an issue until some particular
time in the future (say, 2038).

> 5) assigning an unsigned int value to an int object;
> 6) passing an int value to srand(), which expects an unsigned int;

For both 5 and 6, the values will be implicitly converted.  But yes,
declaring the objects to be of the expected type in the first place
would have been much better style.

> 7) failing to terminate a text stream;
> 8) failing to return a value from main.
>
> When I tried to compile this code, Borland C rejected it (and refused
> to produce an object file or an executable image) on the grounds that
> the return type of main was wrong. When I told it not to be quite so
> fussy, I got the following results on three successive runs of the
> program:
>
> Run 1: 13044 19141 284 32137 28152 23678 16250 10654 12234 27596
>
> Run 2: 13044 19141 284 32137 28152 23678 16250 10654 12234 27596
>
> Run 3: 13044 19141 284 32137 28152 23678 16250 10654 12234 27596
>
> It doesn't take a genius to work out why.

You ran it three times within a second.  That's not a fatal flaw
in a small demonstration program.  There's no good *portable* way
to choose an argument for srand(); using time(NULL) is reasonable.
(If you really care about randomness, of course, you'll need to
use something system-specific.)

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 3:31:33 PM

Richard Heathfield <rjh@see.sig.invalid> writes:
[...]
> Oh yes, it's time to play the random game again.
>
> CTCR2e, Herbert Schildt, p152:
>
> For example, consider the function print_upper(), which prints its
> string argument in uppercase:
>
> #include "stdio.h"
> #include "ctype.h"
>
> void print_upper(char *string);
>
> void main(void)
> {
>   char s[80];
>
>   gets(s);
>   print_upper(s);
> }
>
> /* Print a string in uppercase. */
> void print_upper(char *string)
> {
>   register int t;
>
>   for(t=0; string[t]; ++t) {
>     string[t] = toupper(string[t]);
>     putchar(string[t]);
>   }
> }
>
> After my usual plea with the compiler not to be too fussy about void
> main, I fed the program a file (redirected to stdin) that consisted
> entirely of upper case characters, and the program responded by
> crashing, without producing any output.

*How many* upper case characters?

You didn't mention that passing a char value to toupper() is
dangerous; if plain char is signed, and the value is negative (and
not equal to EOF), the behavior is undefined.  One might argue that
toupper() is poorly designed, and I'd agree, but if you're teaching
a flawed language there's no excuse for ignoring the flaws.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 3:39:47 PM

James Harris <james.harris.1@googlemail.com> writes:
[...]
> If the points are wrong then say so, and say why. To waffle on about
> who people knew or what their background is is irrelevant when the
> issues are plain, unambiguous and open to discussion which is the case
> here.

People have been encouraging Nilges to behave reasonably for many
years.  It never works.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 3:41:51 PM

Richard Heathfield <rjh@see.sig.invalid> writes:
[...]
> Let's play the random game again.
>
> Schildt's CTCR2e, p138. Note that the opening comment is Schildt's,
> not mine!
[snip]

I'm just curious, what are the rules of the random game?  Do you
choose a random page and find an error on that page?  What do you do
if you can't find an error on the page, and how often does that
happen?

Try page (generating a random number) 464.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 3:46:26 PM

On Apr 5, 4:58=A0pm, jacob navia <ja...@jacob.remcomp.fr> wrote:
> Keith Thompson a =E9crit :
>
>
>
> > No, we were trying to help you improve it. =A0And my last name is
> > spelled with a capital 'T'; please treat it with the same respect
> > with which I treat yours.
>
> So, let's make this clear:
>
> (1) You have the right of treating me of "jerk" several times in public.
> =A0 =A0 =A0In this same group.
>
> (2) I mustn't forget to capitalize the t of your name because if I do,
> =A0 =A0 =A0you feel upset.
>
> I think that bothering to press the shift key is too much effort for
> people like you. Either you accept the lower case or...
>
> you learn how to use a killfile, that you brand here so often as a
> "weapon".
>
> I fear that you lack the mental abilities to do that though.
>
> Good luck!

This is not the kind of attitude that will lead people to want to use
your container library.
0
Reply ImpalerCore 4/6/2010 3:54:46 PM

On 6 Apr, 16:30, Seebs <usenet-nos...@seebs.net> wrote:
>
> Except that you have yet to show that even ONE of the nitpicks is actually
> wrong -- some of them may be overly picky, or not the most persuasive or
> best examples, but that doesn't make them "not even right".
>
Take the very first. The term "In general" means, "there are a few
specific cases where this does not apply, but these aren't
sufficiently important to concern us here". That's the case with non-
twos complement negative numbers. Nitpick one is pretty indisputably
wrong.
Of course you can sensibly argue that one's complement and sign-
magnitude should be covered. There are often choices which have to be
made, and you have to balance coverage of all the material with
brevity. But it's not an error in the sense that you mean it.



0
Reply Malcolm 4/6/2010 4:06:12 PM

"bartc" <bartc@freeuk.com> writes:

> "Ben Pfaff" <blp@cs.stanford.edu> wrote in message
> news:87aath35ug.fsf@blp.benpfaff.org...
>> Whether it is a postfix operator is irrelevant, since that is an
>> orthogonal classification.  I can imagine postfix, infix, and
>> prefix binary operators: e.g. 1 2 + versus 1 + 2 versus + 1 2.
>> (I'm not claiming that C has a binary operator with each kind of
>> syntax.)
>
> Wouldn't "a . b" be written "a b ." if "." was a postfix op with two
> operands?

Yes.

As I said, whether it is a postfix operator is irrelevant.  It
looks like an infix operator to me.  In my opinion, it just fits
conveniently in the grammar with the postfix operators.
-- 
char a[]="\n .CJacehknorstu";int putchar(int);int main(void){unsigned long b[]
={0x67dffdff,0x9aa9aa6a,0xa77ffda9,0x7da6aa6a,0xa67f6aaa,0xaa9aa9f6,0x11f6},*p
=b,i=24;for(;p+=!*p;*p/=4)switch(0[p]&3)case 0:{return 0;for(p--;i--;i--)case+
2:{i++;if(i)break;else default:continue;if(0)case 1:putchar(a[i&15]);break;}}}
0
Reply Ben 4/6/2010 4:24:51 PM

On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
> I'm just curious, what are the rules of the random game?  Do you
> choose a random page and find an error on that page?  What do you do
> if you can't find an error on the page, and how often does that
> happen?

I've not yet had it happen.

> Try page (generating a random number) 464.

In the 3rd edition, this covers "short __far _lineto(short x, short y);",
about which I can't tell you much, except that it ends with:

	_lineto(600, 400);
	getche();
	_setvideomode(_DEFAULTMODE);

(we'll give him a pass on the "void main" since this is obviously
system-specific code.)

However, I think this may be a bug.  According to his documentation
of getche(), it takes a character from input immediately (without
waiting for a return), and echoes the character you enter to the screen.
I do not know what would happen if you called this while in a video
mode drawing stuff directly, but I wouldn't expect it to be pleasant;
my guess is this should have been getch().  (Anyone got an old DOS
system with <conio.h> and <graph.h> on which to test it?)

In the 4th edition, this is the page covering strtol and strtod.
We have:

	This function reads base 10 numbers from standard input and
	returns their long equivalent:

	long int read_long(void)
	{
	  char start[80], *end;
	  printf("Enter a number: ");
	  gets(start);
	  return strtol(start, &end, 10);
	}

Just the usual:
* printf with no newline and no flush.
* gets into a finite-length buffer.
* no error checking at all.

Note that the "printf with no newline and no flush" thing isn't just
us being randomly picky.  On many implementations, NOTHING HAPPENS until
you either flush or write a newline.  Meaning that all of these
prompts printed without a flush don't show up to the user, so if you
run this code on many systems, you get no visible prompt -- and the next
time output is printed that includes a newline, or when the stream is
next flushed, it gets the prompt attached to whatever's happening then.

The big flaw, of course, is that this example is TOTALLY USELESS, because
it doesn't show you how to *use* strtol.  A good example would do
things like:
	* show you how to use 'end' to detect parsing errors (for
	  instance, if end == start, there was no number at all)
	* possibly some kind of illustration of how to check errno,
	  including setting it to 0 before making the call.

Also, it wouldn't hurt if the description of strtol were correct; while
this is, strictly speaking, on page 463, it's a great quote:

	Finally, end is set to point to the remainder, if
	any, of the original string.  This means that if strtol()
	is called with " 100 Pliers", the value 100L will be returned,
	and end will point to the space that precedes "Pliers".

Very good, only it's not true.  What's set to point to the remainder
of the original string is *the pointer pointed to by end, if end is
non-NULL*.  That's a pretty significant mistake to make.  The
example for strtod actually sort of shows how to use the "end" value, but
the description of it is still wrong.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 4:38:31 PM

Malcolm McLean <malcolm.mclean5@btinternet.com> writes:
> On 6 Apr, 16:30, Seebs <usenet-nos...@seebs.net> wrote:
>> Except that you have yet to show that even ONE of the nitpicks is actually
>> wrong -- some of them may be overly picky, or not the most persuasive or
>> best examples, but that doesn't make them "not even right".
>>
> Take the very first. The term "In general" means, "there are a few
> specific cases where this does not apply, but these aren't
> sufficiently important to concern us here". That's the case with non-
> twos complement negative numbers. Nitpick one is pretty indisputably
> wrong.

Nope.

That's one interpretation of the phrase "in general".  Another
perfectly reasonable interpretation is that "in general" means
"always".

dictionary.com's first two definitions of "general" are:

    1. of or pertaining to all persons or things belonging to a group
       or category: a general meeting of the employees.

    2. of, pertaining to, or true of such persons or things in the
       main, with possible exceptions; common to most; prevalent;
       usual: the general mood of the people.

Schildt may well have meant "usually" rather than "always", but a
significant number of people have misunderstood him because of his
use of the word "general".  I suggest that, as a professional writer,
it is Schildt's responsibility to avoid such misunderstandings.
I might grant that this particular criticism is overly picky,
but not that it's wrong, and certainly not that it's "pretty
indisputably wrong".

Are any of the other criticisms demonstrably wrong?

[...]

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 4:44:50 PM

On 2010-04-06, Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:
> On 6 Apr, 16:30, Seebs <usenet-nos...@seebs.net> wrote:
>> Except that you have yet to show that even ONE of the nitpicks is actually
>> wrong -- some of them may be overly picky, or not the most persuasive or
>> best examples, but that doesn't make them "not even right".

> Take the very first. The term "In general" means, "there are a few
> specific cases where this does not apply, but these aren't
> sufficiently important to concern us here".

No, it means either that or "always".  Both usages exist in English, and
the phrase is ambiguous.

> That's the case with non-
> twos complement negative numbers.

I'm not sure of this.

> Nitpick one is pretty indisputably wrong.

No, it's ambiguous; I interpreted an ambiguous phrase in a different way.

But yes, I could nitpick that one much better now.  I could point out that
there are very, very, few circumstances under which you should need to know
this, even if it were consistently true, and that it's a red herring.  It's
an interesting trivia point, maybe, but it frankly doesn't matter, and
encouraging readers to rely on it is foolhardy.

> Of course you can sensibly argue that one's complement and sign-
> magnitude should be covered. There are often choices which have to be
> made, and you have to balance coverage of all the material with
> brevity.

It would have been only marginally less terse to write:

	On most common desktop systems, ...

and I wouldn't have complained about that.

> But it's not an error in the sense that you mean it.

It is an example of a thing in a book purporting to be not only "a reference"
but "the *COMPLETE* reference", which is at best misleading or useless.
It's a good example of the book not being a good choice for learning C.

Anyway, if your argument is that I should write a much more detailed analysis
of the flaws of the book, I guess I can see the argument, but frankly, is
it really worth the effort?  There's plenty of material out there to establish
that Schildt produces very bad books about C.

We now have Nilges stating, on the record, that the only reason he's pursuing
this page is that he mistakenly believes that if my page were taken down, he
would be able to get away with vandalizing Wikipedia's entry to remove the
*completely factual and undisputed by anyone but him* statements that
Schildt's books are the subject of "controversy".

Wikipedia isn't claiming that Schildt's books are unambiguously bad, only that
there are many qualified and competent experts who claim that they are very
bad.  That claim is undisputed.  Nilges has been trying to vandalize the
entry for ages, and has gotten repeatedly banned.

I don't really get your motivation here.  You're adding fuel to an already
massively harmful fire which has been disrupting productive and interesting
discussions of real topics for *years*.  You're allying yourself with someone
whose favored tactics include threatening legal action against people,
escalating apparently-untrue complaints to try to get people fired, and
otherwise making a nuisance of himself... *even though he is completely
wrong*.

The book is crap.  Here, let's play Random Page!

Page 288... Whaddya know"  In the 4th edition, if there's an error, it's
too subtle for me.  On the other hand, it's purely an enumeration of the
C99 _Pragma() feature and the __VA_ARGS__ macro expansion feature.  So
let's look in the 3rd edition.

	The header file associated with the I/O functions defined by
	ANSI is called STDIO.H.

Okay, that's wrong.

	The UNIX-like I/O system is not defined by the ANSI C standard and
	is expected to decline in popularity.

Well, the first part is true, but there was a standard at the time covering
that system, and it does not seem to have declined in popularity.

	For many C compilers, the header file related to the UNIX-like file
	system is called IO.H.

Never heard of such a header, even allowing for the bogus caps.  Anyone
know whether it's a DOSism?

See?  Flip to a random page, get an error.  Or rather, to follow up on
a previous line of thought:

	In general, every page of Schildt's books contains at least one
	error.

:)

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 4:50:06 PM

ImpalerCore a �crit :
> On Apr 5, 4:58 pm, jacob navia <ja...@jacob.remcomp.fr> wrote:
>> Keith Thompson a �crit :
>>
>>
>>
>>> No, we were trying to help you improve it.  And my last name is
>>> spelled with a capital 'T'; please treat it with the same respect
>>> with which I treat yours.
>> So, let's make this clear:
>>
>> (1) You have the right of treating me of "jerk" several times in public.
>>      In this same group.
>>
>> (2) I mustn't forget to capitalize the t of your name because if I do,
>>      you feel upset.
>>
>> I think that bothering to press the shift key is too much effort for
>> people like you. Either you accept the lower case or...
>>
>> you learn how to use a killfile, that you brand here so often as a
>> "weapon".
>>
>> I fear that you lack the mental abilities to do that though.
>>
>> Good luck!
> 
> This is not the kind of attitude that will lead people to want to use
> your container library.

Yes, I should stop that container library.

I should stop giving my work for free, contribute to this group and
do my job where I get money for what I do.

You agree that calling me a jerk is good manners, but writing thomson
with lower case is an insult.

Nice for you, I did not expect anything else, from you or heathfield
and all the others.
0
Reply jacob 4/6/2010 4:55:54 PM

On 2010-04-06, jacob navia <jacob@nospam.org> wrote:
> ImpalerCore a �crit :
>> This is not the kind of attitude that will lead people to want to use
>> your container library.

> Yes, I should stop that container library.

He didn't say that.

> I should stop giving my work for free, contribute to this group and
> do my job where I get money for what I do.

He didn't say that either.

> You agree that calling me a jerk is good manners, but writing thomson
> with lower case is an insult.

He didn't say that either.

> Nice for you, I did not expect anything else, from you or heathfield
> and all the others.

The problem here is not that you're bitter about the treatment you're
experiencing.  The problem is that most of the treatment you're experiencing
does not exist in the world external to you.  You are experiencing your
own bitterness, not the things people actually say to you.

You make a ton of claims, such as that no one contributes or makes suggestions
about your projects, but people often do, and not all of them are "don't do
that".  I've given you several responses where I suggested improvements, or
agreed with one of your design criteria; in those cases, I've been arguing,
not that you shouldn't do a container library, but ways in which I think your
container library can be better.  I write those suggestions because it's
quite clear that you are passionate about this, and I am a big fan of trying
to help people do things that they think are important.

But it's pretty frustrating, because even though I've put a fair bit of time
into kibitzing, suggesting things, and trying to articulate things that I
think might be barriers to acceptance that you might need to overcome to get
widespread adoption... All you seem to hear is that I "don't like" it, so
you talk about people attacking you, trying to destroy you, and so on.

Serious question:  Do you know whether you might have some kind of serious
depression going on?  I have a few friends who are prone to depression, and
the kind of black fog of "everybody's hostile and just wants to destroy me"
stuff you say sounds a whole lot like what depressed people say.  If you
haven't looked into that before, I would suggest that you talk to a doctor
about it -- depression is dangerous, potentially lethal, and eminently
treatable.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 5:05:57 PM

On Apr 6, 12:55=A0pm, jacob navia <ja...@nospam.org> wrote:
> ImpalerCore a crit :
>
>
>
> > On Apr 5, 4:58 pm, jacob navia <ja...@jacob.remcomp.fr> wrote:
> >> Keith Thompson a crit :
>
> >>> No, we were trying to help you improve it. =A0And my last name is
> >>> spelled with a capital 'T'; please treat it with the same respect
> >>> with which I treat yours.
> >> So, let's make this clear:
>
> >> (1) You have the right of treating me of "jerk" several times in publi=
c.
> >> =A0 =A0 =A0In this same group.
>
> >> (2) I mustn't forget to capitalize the t of your name because if I do,
> >> =A0 =A0 =A0you feel upset.
>
> >> I think that bothering to press the shift key is too much effort for
> >> people like you. Either you accept the lower case or...
>
> >> you learn how to use a killfile, that you brand here so often as a
> >> "weapon".
>
> >> I fear that you lack the mental abilities to do that though.
>
> >> Good luck!
>
> > This is not the kind of attitude that will lead people to want to use
> > your container library.
>
> Yes, I should stop that container library.
>
> I should stop giving my work for free, contribute to this group and
> do my job where I get money for what I do.
>
> You agree that calling me a jerk is good manners, but writing thomson
> with lower case is an insult.
>
> Nice for you, I did not expect anything else, from you or heathfield
> and all the others.

Sheesh, some people around here have such thin skin that any little
pin prick gives 'em a hematoma.  I personally don't care about
capitalization, some people do.  I suppose I should have just quoted
the "killfile" comment, as that is what I directed the comment for.
If you're going to be releasing a container library, and you intend to
respond to user feedback (maybe you won't), you don't show much grace
for people who disagree with you.

I personally don't find anything wrong with the stuff that you
contribute, and anyone who contributes anything is worth more than the
criticism judging it so, whether good or bad.  I normally wouldn't
have responded, but I suppose that the "killfile" comment just irked
me enough to foolishly make a response.
0
Reply ImpalerCore 4/6/2010 5:27:11 PM

On Apr 6, 10:50=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Richard Heathfield <r...@see.sig.invalid> wrote:
>
> > [Seebs - please read this, as I have a question for you at the end.]
>
> *bamf*
>
> > "I had been given the mission of creating a complete reference guide to
> > the C programming language. Not just /any/ book, but the /complete/ boo=
k."
>
> *snerk*
>
> > Okay, this is from page 420 of the second edition of CTCR, not a page I
> > recall seeing before.
>
> Well! =A0This is fortuitous.
>
> The 2nd and 3rd edition are extremely similar in page numbering, and whil=
e
> paging to it, I found my receipt.
>
> I bought the 3rd edition on 1/22/96, specifically to write about it, so I
> can now state that the page in question is just over 14 years old. =A015 =
was
> an estimate based on the book's copyright date.
>
> It's now page 407, by the way.
>
> > This fragment reads up to 128 characters from the file described by fd:
>
> > unsigned count
> > char *buf[128];
>
> > if(_dos_read(fd, buf, 128, &count))
> > =A0 =A0printf("error reading file");
> > Seebs: was this corrected in CTCR3?
>
> No. =A0But!
>
> The error message was changed to "Error reading file."
>
> So not only are the three obvious errors still there, but they are still
> there despite the fact that, demonstrably, someone looked at the example.
>
> I can't find any <dos.h> stuff in the 4th edition; it looks like it was
> removed entirely. =A0So, to add insult to injury, not only is it an extre=
mely
> buggy example with no explanation offered, but it was NEVER fixed -- at
> least some of the errors were "fixed" by making a new edition in which
> they are corrected.
>
> Flipped around a bit, found a new example. =A04th edition, page 264:
>
> =A0 =A0 =A0 =A0 #define MAX_SIZE 100
> =A0 =A0 =A0 =A0 /* ... */
> =A0 =A0 =A0 =A0 float balance[MAX_SIZE];
> =A0 =A0 =A0 =A0 /* ... */
> =A0 =A0 =A0 =A0 for(i=3D0; i<MAX_SIZE; i++) printf("%f", balance[i]);
> =A0 =A0 =A0 =A0 /* ... */
> =A0 =A0 =A0 =A0 for(i=3D0; i<MAX_SIZE; i++) x =3D+ balance[i];
>
> The reader is encouraged to try to spot errors. =A0I only found two; can
> you do better?

(1) You added some special invisible non graphic characters to make
the example not compile with several errors, or those characters were
added by the browser in a way that I have not seen occur before.

(2) It's obvious that i and x need to be defined and that the storage
is assumed to be initialized outside of the example.

(3) As Malcolm has pointed out, code snippets are not standalone and
not meant for incompetent or evil (see below) programmers to type in
uncritically. They are a somewhat harder form of text. They are
exemplary, and "no warranty, etc." You are demanding of Schildt a
level of diligence you did not show in CTCN and you have never shown
here in code examples.

(4) It is in fact common practice to eliminate housekeeping and to
make assumptions when one's a teacher, but neither you nor Richard are
teachers. You are instead evil and incompetent people.

>
> (Note that the last line of the above example wasn't present in the 3rd
> edition, where the example appears on page 262, but the other problem
> existed then too.)
>
> ... And dammit, looking it up, I found another one:
>
> =A0 =A0 =A0 =A0 #include <stdio.h>
> =A0 =A0 =A0 =A0 #define ABS(a) =A0(a)<0 ? -(a) : (a)
> =A0 =A0 =A0 =A0 void main(void)
> =A0 =A0 =A0 =A0 {
> =A0 =A0 =A0 =A0 =A0 printf("abs of -1 and 1: %d %d", ABS(-1), ABS(1));
> =A0 =A0 =A0 =A0 }
>
> =A0 =A0 =A0 =A0 When this program is compiled, a in the macro definition =
will be
> =A0 =A0 =A0 =A0 substituted with the values -1 and 1. =A0The parentheses =
that enclose
> =A0 =A0 =A0 =A0 a ensure proper substitution in all cases.
>
> Never mind the misdeclared main and the missing newline.

Fuck you, asshole.

> =A0Who here can
> come up with a case where ABS(x) doesn't produce the expected result?

(Sigh) without looking at your garbage below, we know that Herb, while
he correctly parenthesizes the formal parameters in the macro, failed
to take into consideration what will happen when the macro is used in
a larger expression with an operator of lower precedence than ?:.

Many beginners fail to parenthesize formal parameters and are
surprised when shit happens as a result. They then are admonished to
use parentheses.

Very few C programmers in practice take the next step, although I did
and I taught it at Princeton and Trans-Union. This is to classify all
macros as blocks or expressions, and to always put block macros in
curly brackets and expression macros in round parentheses.

Given your low standard of care in using a switch statement with
fallthrough, I rather doubt in fact that you know or follow either
standard consistently, and given, Peter, your habit of excusing your
own slop with pleas that "it's fast and dirty and I have attention
disorder", I conclude that you are deliberately fucking with Schildt
here out of malice, envy and incompetence.


>
> ... Nevermind, it's like shooting fish in a barrel.
>
> =A0 =A0 =A0 =A0 printf("abs(3) - 1: %d\n", ABS(3) - 1);
>
> The forth edition points out that the () around a are needed, and illustr=
ates
> that, without them, ABS(10-20) wouldn't produce the right results -- mean=
ing
> he reviewed this example again and still didn't spot the OBVIOUS BUG.

In terms of actual practice, as opposed to the higher standard I
taught at Princeton and Trans-Union, this is not a bug. This is
because macro code is usually accessible to its user who almost always
is the programmer who wrote the macro, and is designed under time
pressure with a finite and checkable number of uses. Any tool, of
which a macro is an example, has failure points: you don't use a
toothbrush to paint a wall.

In fact, if you happen to inherit some clown's macro library, and it's
in an #included .h file, and you don't have access to the file, and
you want to use what is claimed to be a macro that expands to an
expression, you yourself add the parentheses to make your use of the
tool safe. Likewise if you understand that the macro expands to one or
more C expressions.

If I were a practicing C programmer, I would be loth indeed to use a
macro library from you, but I would use due diligence. I would enclose
what seemed to be expressions in parentheses and what seemed to be
series of C statements in curly braces while holding my nose.

My students at TransUnion were part of Schildt's intended audience.
They were overwhelmed as assembler programmers for IBM mainframes with
the complexity and novelty of C, and did not fully comprehend the need
for so religiously bracketing "expression macros" and "block macros".
This is probably why Herb, as what you in such a self-contradictory
way call a clear writer, does describe the more common practice of
parenthesizing formal parameters and omits, at least here, the more
advanced lesson.

You simply don't exercise enough diligence in your own code, Peter,
for me to think that you do not in fact follow the Nilges rule. You
follow the Peter rule, which is to crank out slop and expect everyone
to applaud. We might, except for your evil and vicious conduct towards
others.
>
> Seriously, guys, this book is MUCH WORSE than I claimed. =A0I thank Mr. N=
ilges
> for making me aware of just how badly I understated the degree to which t=
his
> book is utterly unsuitable for teaching C, and if I'd had to review a boo=
k
> like this, I woulda been quite tempted to argue that it was simply unsuit=
able
> for publication without MASSIVE revisions and corrections.

What a complete, total, and utter fool you are. A combination of
buffoon and evil man which it would take a Shakespeare to fathom.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/6/2010 5:31:27 PM

On 6 Apr, 17:50, Seebs <usenet-nos...@seebs.net> wrote:
>
> See? =A0Flip to a random page, get an error. =A0Or rather, to follow up o=
n
> a previous line of thought:
>
> =A0 =A0 =A0 =A0 In general, every page of Schildt's books contains at lea=
st one
> =A0 =A0 =A0 =A0 error.
>
That's not a correct use of "In general".

"In general, there's at least one error on each page of Schildt's
books."

That means that normally we would expect one or two errors per page.
However if some smart alec says "Ha ha, the copyright page. That's a
page and it doesn't contain an error. Libel fees please." then we can
point to the "in general". Also if he happens to find a page without
any errors in it.
0
Reply Malcolm 4/6/2010 5:37:39 PM

On Apr 6, 6:59=A0pm, Richard Harnden <rh.nos...@tiscali-co-uk.invalid>
wrote:
> On 06/04/2010 11:43,spinoza1111wrote:
>
> > [...] =A0The fact is, as he [Seebs] has himself confirmed, he
> > paid his way onto the ISO committee [...]
>
> So did Schildt. =A0So what?

He has said that he did so to learn C, which wasn't appropriate but
was overlooked because by 1999, ANSI had become privatised, corrupt
and in the service of vendors who wanted to bless a range of
incompatible implementations of C.

Furthermore, his resume online is padded. He represents himself as an
employee of, and venture capitalist for, Apple computer when in
actuality he's bought Apples and some stock.

Therefore, and because of Peter Seebach's lack of ANY academic
preparation in computer science, I conclude that Seebach joined ANSI
in order to pad his resume. That's not so bad, we all have done things
like this, but what is truly evil is that he appears to have also done
this in order to make his trivial errata stick to Herb like glue.
0
Reply spinoza1111 4/6/2010 5:38:45 PM

ImpalerCore a �crit :
> 
> Sheesh, some people around here have such thin skin that any little
> pin prick gives 'em a hematoma.  I personally don't care about
> capitalization, some people do.  I suppose I should have just quoted
> the "killfile" comment, as that is what I directed the comment for.
> If you're going to be releasing a container library, and you intend to
> respond to user feedback (maybe you won't), you don't show much grace
> for people who disagree with you.
> 
> I personally don't find anything wrong with the stuff that you
> contribute, and anyone who contributes anything is worth more than the
> criticism judging it so, whether good or bad.  I normally wouldn't
> have responded, but I suppose that the "killfile" comment just irked
> me enough to foolishly make a response.

Look, I am just fedup with this guy that first insults me in this forum and then


.... feels irked because I do not capitalize His Name...

WTF?

He doesn't like 'thomson' in lower case?

He can use a killfile. That is all. I did not treat him of
anything!

And let's stop this ok?
0
Reply jacob 4/6/2010 5:43:06 PM

On 2010-04-06, Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:
> On 6 Apr, 17:50, Seebs <usenet-nos...@seebs.net> wrote:
>> See? �Flip to a random page, get an error. �Or rather, to follow up on
>> a previous line of thought:

>> � � � � In general, every page of Schildt's books contains at least one
>> � � � � error.

> That's not a correct use of "In general".

Well, that's the problem.  It's certainly an idiomatic English usage,
and one of the many ways in which it gets used.

> That means that normally we would expect one or two errors per page.
> However if some smart alec says "Ha ha, the copyright page. That's a
> page and it doesn't contain an error. Libel fees please." then we can
> point to the "in general". Also if he happens to find a page without
> any errors in it.

Yes, but that's assuming one of two different meanings that "in general"
has in English.

I agree that it tends to favor the "qualified" interpretation, but it's not
the only one the phrase has.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 5:49:49 PM

jacob navia <jacob@nospam.org> writes:
[...]
> Look, I am just fedup with this guy that first insults me in this forum and then
>
>
> ... feels irked because I do not capitalize His Name...
>
> WTF?
>
> He doesn't like 'thomson' in lower case?
>
> He can use a killfile. That is all. I did not treat him of
> anything!
>
> And let's stop this ok?

jacob, I sent you a response to your previous article by e-mail.
Do you intend to reply?

You can stop this any time you like.  I insulted you exactly once,
nearly seven months ago, in direct response you what I considered
to be an unwarranted insult from you.  Why are you so obsessed with
that one minor incident?

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 6:18:19 PM

On 6 Apr, 18:49, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Malcolm McLean <malcolm.mcle...@btinternet.com> wrote:
>
> > On 6 Apr, 17:50, Seebs <usenet-nos...@seebs.net> wrote:
> >> See? =A0Flip to a random page, get an error. =A0Or rather, to follow u=
p on
> >> a previous line of thought:
> >> =A0 =A0 =A0 =A0 In general, every page of Schildt's books contains at =
least one
> >> =A0 =A0 =A0 =A0 error.
> > That's not a correct use of "In general".
>
> Well, that's the problem. =A0It's certainly an idiomatic English usage,
> and one of the many ways in which it gets used.
>
> > That means that normally we would expect one or two errors per page.
> > However if some smart alec says "Ha ha, the copyright page. That's a
> > page and it doesn't contain an error. Libel fees please." then we can
> > point to the "in general". Also if he happens to find a page without
> > any errors in it.
>
> Yes, but that's assuming one of two different meanings that "in general"
> has in English.
>
> I agree that it tends to favor the "qualified" interpretation, but it's n=
ot
> the only one the phrase has.
>
The phrase can be used "he is interested in snakes in general", that
is, he is interested in all snakes and in the things which they have
in common, as opposed to being interested in adders, for example.

However it can't be used to mean "always, without exception". "In
general, compiled languages are faster than interpreted ones" does not
mean "always, without exception, a compiled language is faster than an
interpreted one"; it means the opposite of that.
0
Reply Malcolm 4/6/2010 6:18:51 PM

On 2010-04-06, Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:
> However it can't be used to mean "always, without exception". "In
> general, compiled languages are faster than interpreted ones" does not
> mean "always, without exception, a compiled language is faster than an
> interpreted one"; it means the opposite of that.

Actually, it doesn't, because the opposite of that would be "always,
without exception, an interpreted language is faster than a compiled one."

Nonetheless, whether it's the most common connotation or not:

1.  "In general" sometimes means "always".
2.  Even if it doesn't, the statement is still not something which belongs
in the book regardless of whether it's a tutorial or a reference.
3.  You have still offered no possible justification for arguing that the
book is not intended as a reference, given that it is sold as one, marketed
as one, described as one, and structured as one, and the bulk of the material
is in a typical reference format.

The only objection to calling it a "reference" is that the code and
descriptions are both stunningly error-prone.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 6:36:33 PM

Ben Pfaff <blp@cs.stanford.edu> wrote:
> "bartc" <bartc@freeuk.com> writes:
> >
> > Wouldn't "a . b" be written "a b ." if "." was a postfix op with two
> > operands?
> 
> Yes.
> 
> As I said, whether it is a postfix operator is irrelevant.  It
> looks like an infix operator to me.

If a and b were both expressions, then it would be an infix operator. 
But they're not; so it's not, either.  Strictly speaking, "b" is not
really an operand as it is not in any way evaluated; it's really just
part of the operator.
-- 
Larry Jones

ANY idiot can be famous.  I figure I'm more the LEGENDARY type! -- Calvin
0
Reply lawrence 4/6/2010 6:41:00 PM

On 6 Apr, 19:36, Seebs <usenet-nos...@seebs.net> wrote:
>
> 3. =A0You have still offered no possible justification for arguing that t=
he
> book is not intended as a reference, given that it is sold as one, market=
ed
> as one, described as one, and structured as one, and the bulk of the mate=
rial
> is in a typical reference format.
>

Here's the very first review on Amazon:

"A tutorial, NOT a reference"

Having come across Schild's book when starting out as a programmer I
believed it to be one of the best I've read. In this respect it is
very good for a beginner, but searching now for a reference manual
(I've misplaced the misnomer: "C, A Complete Reference") as a
more experienced programmer I realise this is really a
tutorial.

I'm not the only person to say that.
0
Reply Malcolm 4/6/2010 6:48:42 PM

On 2010-04-06, Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:
> On 6 Apr, 19:36, Seebs <usenet-nos...@seebs.net> wrote:
>>
>> 3. �You have still offered no possible justification for arguing that the
>> book is not intended as a reference, given that it is sold as one, marketed
>> as one, described as one, and structured as one, and the bulk of the material
>> is in a typical reference format.

> Here's the very first review on Amazon:

> "A tutorial, NOT a reference"

> Having come across Schild's book when starting out as a programmer I
> believed it to be one of the best I've read. In this respect it is
> very good for a beginner, but searching now for a reference manual
> (I've misplaced the misnomer: "C, A Complete Reference") as a
> more experienced programmer I realise this is really a
> tutorial.

> I'm not the only person to say that.

Okay, so, you're saying that the book is marketed and sold fraudulently,
and that all the material in the preface, and the huge bulk of material
which consists of lists of functions and descriptions of what they do,
with no explanation of why or how one would use them, is just an extremely
bad tutorial?

Hint:  Amazon reviews are not authoritative.  The book itself is clearly
structured as, organized as, sold as, and labeled as a reference.  It claims
to be "a comprehensive desktop reference".  Many other reviewers claim that
it's the thing you keep on your desk to look things up -- and all of them
are comparative novice programmers who are unlikely to know that the poor
choice of a reference is directly tied to the security bugs and crashes
they keep getting.

But frankly, as a tutorial, it's *worse*, because it consistently teaches
bad habits, explains things in ways that are often more complicated than
correct alternatives, and leaves the reader completely confused about how
C environments work.  So I'm not sold on that interpretation at all, but
even if I were, it wouldn't make the book in any way up to minimal acceptable
standards.

Okay, more random examples:

	This statement displays the length of the multibyte character
	pointed to by mb:

	printf("%d", mblen(mb, 2));

Does it?  Because the description above says:

	The mblen() function returns the length (in bytes) of a multibyte
	character pointed to by /str/.  Only the first /size/ number of
	characters are examined.  It returns -1 on error.

("str" and "size" are italicized.)

Okay, so.  First off, "/size/ number of characters" is just plain incoherent;
it should just be "/size/ characters".  (Imagine that size is 2; would you
say that it returns the length of "the first 2 number of characters"?  No.)
But wait, that's still wrong.  It doesn't examine at most two *characters*;
it examines at most two *bytes*.  What this means is that mblen(mb, 2) cannot
correctly tell you the length of a multibyte character that is over two
*bytes* wrong.

So.

The description of the function is ungrammatical, and wrong, and the example
is incorrect as well.

Typical.  The whole book is like this.

I suppose at this point, the obvious thing would be for me to try to take
a day off from my regular work and write a more detailed summary of the
kinds of things that are wrong in this book.  It seems like a huge waste
of time, but at least I'll finally be free of people complaining that
something I wrote nearly 15 years ago before I had any real experience
writing isn't written well enough, even though the substantive claim of
the page ("this book is full of nonsense") stands.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 7:00:13 PM

On 6 Apr, 20:00, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Malcolm McLean <malcolm.mcle...@btinternet.com> wrote:
>
> > On 6 Apr, 19:36, Seebs <usenet-nos...@seebs.net> wrote:
>
> >> 3. =A0You have still offered no possible justification for arguing tha=
t the
> >> book is not intended as a reference, given that it is sold as one, mar=
keted
> >> as one, described as one, and structured as one, and the bulk of the m=
aterial
> >> is in a typical reference format.
> > Here's the very first review on Amazon:
> > "A tutorial, NOT a reference"
> > Having come across Schild's book when starting out as a programmer I
> > believed it to be one of the best I've read. In this respect it is
> > very good for a beginner, but searching now for a reference manual
> > (I've misplaced the misnomer: "C, A Complete Reference") as a
> > more experienced programmer I realise this is really a
> > tutorial.
> > I'm not the only person to say that.
>
> Hint: =A0Amazon reviews are not authoritative.
>
No, but the fact that two people independently described the book as
"more of a tutorial than a reference", myself and the Amazon reviewer,
is very significant. One person might say something with no real basis
in fact, but the odds on two people making exactly the same mistake
are very low, unless the book does indeed have features which would
cause a reasonable person to regard it as more tutorial in nature.
0
Reply Malcolm 4/6/2010 7:13:48 PM

Malcolm McLean wrote:
) No, but the fact that two people independently described the book as
) "more of a tutorial than a reference", myself and the Amazon reviewer,
) is very significant. One person might say something with no real basis
) in fact, but the odds on two people making exactly the same mistake
) are very low, unless the book does indeed have features which would
) cause a reasonable person to regard it as more tutorial in nature.

Or unless there aren't that many choices of book type, and a lot of
reviews.  Which there aren't, and are.  Sheesh.


SaSW, Willem
-- 
Disclaimer: I am in no way responsible for any of the statements
            made in the above text. For all I know I might be
            drugged or something..
            No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
0
Reply Willem 4/6/2010 7:26:23 PM

On 2010-04-06, Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:
> No, but the fact that two people independently described the book as
> "more of a tutorial than a reference", myself and the Amazon reviewer,
> is very significant.

It would be if you had ever seen the book.  As is, didn't you give his
review as your *REASON* for holding your position?

> One person might say something with no real basis
> in fact, but the odds on two people making exactly the same mistake
> are very low, unless the book does indeed have features which would
> cause a reasonable person to regard it as more tutorial in nature.

A reasonable person *who has not actually read the whole book*, yes.

The book starts out with some tutorial material, *then continues on
into a very comprehensive reference*.  That's the big selling point.
That's why people say you should have a copy on your desk.  If only
the reference were *accurate*, it'd be great.

But the fact is, while the book certainly does start with a tutorial,
the bulk of it is reference material and examples, not a tutorial, and
it is marketed as a reference because it is one.

Sadly, it's a very bad reference.  But that's okay, it's a worse tutorial.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 7:37:44 PM

Malcolm McLean <malcolm.mclean5@btinternet.com> writes:
> On 6 Apr, 20:00, Seebs <usenet-nos...@seebs.net> wrote:
>> On 2010-04-06, Malcolm McLean <malcolm.mcle...@btinternet.com> wrote:
>>
>> > On 6 Apr, 19:36, Seebs <usenet-nos...@seebs.net> wrote:
>>
>> >> 3.  You have still offered no possible justification for arguing
>> >> that the book is not intended as a reference, given that it is
>> >> sold as one, marketed as one, described as one, and structured
>> >> as one, and the bulk of the material is in a typical reference
>> >> format.
>> > Here's the very first review on Amazon:
>> > "A tutorial, NOT a reference"
>> > Having come across Schild's book when starting out as a programmer I
>> > believed it to be one of the best I've read. In this respect it is
>> > very good for a beginner, but searching now for a reference manual
>> > (I've misplaced the misnomer: "C, A Complete Reference") as a
>> > more experienced programmer I realise this is really a
>> > tutorial.
>> > I'm not the only person to say that.
>>
>> Hint:  Amazon reviews are not authoritative.
>>
> No, but the fact that two people independently described the book as
> "more of a tutorial than a reference", myself and the Amazon reviewer,
> is very significant. One person might say something with no real basis
> in fact, but the odds on two people making exactly the same mistake
> are very low, unless the book does indeed have features which would
> cause a reasonable person to regard it as more tutorial in nature.

Ok, so what's *your* basis for saying it's "more of a tutorial than a
reference"?  Quoting what you wrote upthread:
| I think the title of Schildt's book invites misplaced criticism.
| Whilst the book is entitled a "reference" it is in fact a tutorial.

and later:
| I haven't actually read the book. However that's the impression I
| gain.

So we have two sources for the claim, one from someone who hasn't read
the book, and another from someone who wrote a review on Amazon.  I
don't find either of them persuasive.

Surely Schildt knew the title of the book he was writing, and Shildt
himself has been quoted here saying that it's a reference.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 7:44:10 PM

On 6 Apr, 20:37, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Malcolm McLean <malcolm.mcle...@btinternet.com> wrote:
>
> > No, but the fact that two people independently described the book as
> > "more of a tutorial than a reference", myself and the Amazon reviewer,
> > is very significant.
>
> It would be if you had ever seen the book. =A0As is, didn't you give his
> review as your *REASON* for holding your position?
>
I did, but what happened was I thought I'd better actually look at the
book, so I typed the title in Google. The first hit was Amazon, and
the first revew said "A tutorial, NOT a reference". This was a such a
coincidence that obviously the first thing I did was cut and paste and
post it.

A reference isn't designed to be read. It's intended to be consulted
to check facts, for instance if you forget whether the number of
elements is the second or the thrid parameter to qsort(), or to check
if the standard says anything about calling sin() with an argument
outside the range -2PI to 2PI radians. It's pretty obvious from the
snippets that the book isn't written like that sort of work.
0
Reply Malcolm 4/6/2010 8:00:50 PM

On 2010-04-06, Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:
> A reference isn't designed to be read. It's intended to be consulted
> to check facts, for instance if you forget whether the number of
> elements is the second or the thrid parameter to qsort(), or to check
> if the standard says anything about calling sin() with an argument
> outside the range -2PI to 2PI radians. It's pretty obvious from the
> snippets that the book isn't written like that sort of work.

Again, just plain wrong.  The snippets of text are from explanatory
material, but the code fragments are usually from sample code attached
to *referenge* material -- much like many man pages have a section
labeled "EXAMPLES".

The bulk of the interesting material consists of something pretty much
in the same category as a UNIX man page.  A typical example:

(the first two lines are bold, large print, outdented, to serve as a
heading)
	#include <stdio.h>
	int fscanf(FILE *stream, const char *format, ...);

		The fscanf() function works exactly like the scanf()
		function, but it reads the information from the stream
		specified by /stream/ instead of stdin.  See the scanf()
		function for details.

		The fscanf() function returns the number of arguments
		actually assigned values.  This number does not include
		skipped fields.  A return value of EOF means that a failure
		occurred before the first assignment was made.

		Example

		This code fragment reads a string and a float from the
		stream fp.

			char str[80];
			float f;

			fscanf(fp, "%s%f", str, &f);

		Related Functions
		scanf(), fprintf()

That's a reference, not a tutorial.  Sure, the book contains tutorial
material, but the above is not any kind of a tutorial; it's one entry
among many, all of which are sorted alphabetically by name, in chapters
organized roughly by functionality.

Schildt says it's a reference.  The contents of the book make it clear
that it is intended to serve as a reference, not just as a book to be
read and then you're done with it.  Many reviewers, and the book itself,
make much of the fact that even once you've read the tutorial material,
you can continue to use the book as a reference because it has all
this reference material in it.

It's not particularly a GOOD reference, but a reference it is.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 8:14:12 PM

On 2010-04-06, lawrence.jones@siemens.com <lawrence.jones@siemens.com> wrote:
> If a and b were both expressions, then it would be an infix operator. 
> But they're not; so it's not, either.  Strictly speaking, "b" is not
> really an operand as it is not in any way evaluated; it's really just
> part of the operator.

In this case, I think you should have harsh words with whoever edited
C99*, because the standard clearly refers to b as "an operand".

.... That said, what you say here aligns with my expectations; I view
".b" as a postfix operator rather than a binary operator in the normal sense
of things, but I'm obliged to grant that the standard itself appears
to refer to "." as being an operator with two operands.

-s
[*] It's funny because it was mostly edited by Larry Jones.  Who, despite
the nitpicking, did an excellent job.
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 8:16:56 PM

lawrence.jones@siemens.com writes:
> Ben Pfaff <blp@cs.stanford.edu> wrote:
>> "bartc" <bartc@freeuk.com> writes:
>> >
>> > Wouldn't "a . b" be written "a b ." if "." was a postfix op with two
>> > operands?
>> 
>> Yes.
>> 
>> As I said, whether it is a postfix operator is irrelevant.  It
>> looks like an infix operator to me.
>
> If a and b were both expressions, then it would be an infix operator. 
> But they're not; so it's not, either.  Strictly speaking, "b" is not
> really an operand as it is not in any way evaluated; it's really just
> part of the operator.

Strictly speaking, it's an operand because it satisfies the
standard's definition of the word "operand" (C99 6.4.6p2).

I prefer your way of expressing it, but we're stuck with the
Standard's definition.

Given that "." has two operands, and that it appears between them,
it does seem odd to call it a postfix operator rather than an
infix operator.  I suspect it's classified as postfix because it
makes the grammar simpler, in much the same way that "typedef"
is classified as a storage-class specifier.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 8:21:47 PM

lawrence.jones@siemens.com writes:
> Ben Pfaff <blp@cs.stanford.edu> wrote:
>> "bartc" <bartc@freeuk.com> writes:
>> >
>> > Wouldn't "a . b" be written "a b ." if "." was a postfix op with two
>> > operands?
>> 
>> Yes.
>> 
>> As I said, whether it is a postfix operator is irrelevant.  It
>> looks like an infix operator to me.
>
> If a and b were both expressions, then it would be an infix operator. 
> But they're not; so it's not, either.  Strictly speaking, "b" is not
> really an operand as it is not in any way evaluated; it's really just
> part of the operator.

Currying envy...

Phil
-- 
I find the easiest thing to do is to k/f myself and just troll away
-- David Melville on r.a.s.f1
0
Reply Phil 4/6/2010 9:35:39 PM

Seebs <usenet-nospam@seebs.net> writes:
> On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
>> I'm just curious, what are the rules of the random game?  Do you
>> choose a random page and find an error on that page?  What do you do
>> if you can't find an error on the page, and how often does that
>> happen?
>
> I've not yet had it happen.
>
>> Try page (generating a random number) 464.
>
> In the 3rd edition, this covers "short __far _lineto(short x, short y);",
> about which I can't tell you much, except that it ends with:
>
> 	_lineto(600, 400);
> 	getche();
> 	_setvideomode(_DEFAULTMODE);
>
> (we'll give him a pass on the "void main" since this is obviously
> system-specific code.)

I'd have worded that "completely off topic for a C reference work, along 
with the lines containing __far, _lineto, getche, and _setvideomode".

....
> In the 4th edition, this is the page covering strtol and strtod.
> We have:
>
> 	This function reads base 10 numbers from standard input and
> 	returns their long equivalent:
>
> 	long int read_long(void)
> 	{
> 	  char start[80], *end;
> 	  printf("Enter a number: ");
> 	  gets(start);
> 	  return strtol(start, &end, 10);
> 	}
....
> Also, it wouldn't hurt if the description of strtol were correct; while
> this is, strictly speaking, on page 463, it's a great quote:
>
> 	Finally, end is set to point to the remainder, if
> 	any, of the original string.  This means that if strtol()
> 	is called with " 100 Pliers", the value 100L will be returned,
> 	and end will point to the space that precedes "Pliers".
>
> Very good, only it's not true.  What's set to point to the remainder
> of the original string is *the pointer pointed to by end, if end is
> non-NULL*.

Given the context you've posted there, end is the pointer to char,
not to the pointer to pointer. But in that case, it's used in a 
context where its address is taken, and therefore that address cannot
be NULL. 

So it's certainly pretty garbled, and wrong one way or other.

Phil
-- 
I find the easiest thing to do is to k/f myself and just troll away
-- David Melville on r.a.s.f1
0
Reply Phil 4/6/2010 10:02:53 PM

Phil Carmody <thefatphil_demunged@yahoo.co.uk> writes:
> Seebs <usenet-nospam@seebs.net> writes:
[...]
>> In the 4th edition, this is the page covering strtol and strtod.
>> We have:
>>
>> 	This function reads base 10 numbers from standard input and
>> 	returns their long equivalent:
>>
>> 	long int read_long(void)
>> 	{
>> 	  char start[80], *end;
>> 	  printf("Enter a number: ");
>> 	  gets(start);
>> 	  return strtol(start, &end, 10);
>> 	}
> ...
>> Also, it wouldn't hurt if the description of strtol were correct; while
>> this is, strictly speaking, on page 463, it's a great quote:
>>
>> 	Finally, end is set to point to the remainder, if
>> 	any, of the original string.  This means that if strtol()
>> 	is called with " 100 Pliers", the value 100L will be returned,
>> 	and end will point to the space that precedes "Pliers".
>>
>> Very good, only it's not true.  What's set to point to the remainder
>> of the original string is *the pointer pointed to by end, if end is
>> non-NULL*.
>
> Given the context you've posted there, end is the pointer to char,
> not to the pointer to pointer. But in that case, it's used in a 
> context where its address is taken, and therefore that address cannot
> be NULL. 
>
> So it's certainly pretty garbled, and wrong one way or other.

Right.  The second parameter to strtol(), as documented in the
standard, is called "endptr", not "end":

    long int strtol(
        const char * restrict nptr,
        char ** restrict endptr,
        int base);

endptr is a char**; end is a char*.

You can't blame Schildt for the phrase "if end is non-NULL" being
garbled; Seebs said that.

Schildt's description appears to be correct.  I'm even somewhat
impressed that he says that 100L, rather than 100, is returned.
But it's a description of *this call* to strol(), not of strtol()
in general.  As commentary on the example, it's not bad, but
any description of strtol() should mention what happens when
endptr==NULL, and generally cover error handling; apparently Schild't
doesn't bother with any of that.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 10:21:20 PM

On 04/ 7/10 02:41 AM, spinoza1111 wrote:
> On Apr 6, 7:27 pm, Richard Heathfield<r...@see.sig.invalid>  wrote:
>>
>> Example
>>
>> This function converts the number entered at the keyboard into its
>> absolute value:
>>
>> #include "stdlib.h"
>>
>> long int get_labs()
>> {
>>     char num[80];
>>
>>     gets(num)
>>
>>     return labs(atol(num));
>>
>> }
>>
>> Actually, of course, it does no such thing, because it won't compile.
>
> Of course it won't. There is a missing semicolon at the end of gets. A
> professional programmer sees this and fixes it without making absurd
> generalizations about the computer author. Whereas incompetents like
> to play the back-stabbing game.

A professional programmer compiles and tests his code before submitting 
it for review.

-- 
Ian Collins
0
Reply Ian 4/6/2010 10:22:34 PM

On 2010-04-06, Phil Carmody <thefatphil_demunged@yahoo.co.uk> wrote:
> Seebs <usenet-nospam@seebs.net> writes:
>> In the 4th edition, this is the page covering strtol and strtod.
>> We have:
>>
>> 	This function reads base 10 numbers from standard input and
>> 	returns their long equivalent:
>>
>> 	long int read_long(void)
>> 	{
>> 	  char start[80], *end;
>> 	  printf("Enter a number: ");
>> 	  gets(start);
>> 	  return strtol(start, &end, 10);
>> 	}
> ...
>> Also, it wouldn't hurt if the description of strtol were correct; while
>> this is, strictly speaking, on page 463, it's a great quote:
>>
>> 	Finally, end is set to point to the remainder, if
>> 	any, of the original string.  This means that if strtol()
>> 	is called with " 100 Pliers", the value 100L will be returned,
>> 	and end will point to the space that precedes "Pliers".
>>
>> Very good, only it's not true.  What's set to point to the remainder
>> of the original string is *the pointer pointed to by end, if end is
>> non-NULL*.

> Given the context you've posted there, end is the pointer to char,
> not to the pointer to pointer. But in that case, it's used in a 
> context where its address is taken, and therefore that address cannot
> be NULL. 

> So it's certainly pretty garbled, and wrong one way or other.

Oh, geeze, I didn't even catch that.

Schildt writes, on page 463:

	#include <stdlib.h>
	long int strtol(const char *start, char **end, int radix);

So what I said was right -- he should have said "the pointer pointed to
by end, if end is not NULL", but he also should have named it "endptr"
rather than "end", and/or used a different name in the example.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 10:41:16 PM

On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
> Schildt's description appears to be correct.

It's not, though, because the description is BEFORE the example,
and is referring to his (garbled) declaration.

The example code comes after the description, and reuses the name
"end" for a char *.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 10:42:27 PM

Seebs <usenet-nospam@seebs.net> writes:
> On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
>> Schildt's description appears to be correct.
>
> It's not, though, because the description is BEFORE the example,
> and is referring to his (garbled) declaration.
>
> The example code comes after the description, and reuses the name
> "end" for a char *.

I'm a bit confused.  Does Schildt actually refer to the second
parameter to strtol() as "end" rather than as "endptr" (which is what
the standard calls it)?

Can you post some more context?

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 10:57:17 PM

On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
> Seebs <usenet-nospam@seebs.net> writes:
>> On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
>>> Schildt's description appears to be correct.
>>
>> It's not, though, because the description is BEFORE the example,
>> and is referring to his (garbled) declaration.
>>
>> The example code comes after the description, and reuses the name
>> "end" for a char *.

> I'm a bit confused.  Does Schildt actually refer to the second
> parameter to strtol() as "end" rather than as "endptr" (which is what
> the standard calls it)?

Yes.

> Can you post some more context?

	strtol

	#include <stdlib.h>
	long int strtol(const char *start, char **end, int radix);

	The strtol function converts... [brief description]

	The strtol function works as follows.  First, any white
	space in the string pointed to by start is stripped[1].
	Next, each character that makes up the number is read.
	Any character that cannot be part of a long integer number
	will cause this process to stop.  This includes white space,
	punctuation, and characters[2].  Finally, end is set to
	point to the remainder, if any, of the original string.
	This means that if strtol() is called with " 100 Pliers",
	the value 100L will be returned, and end will point to the
	space that precedes "Pliers".

[1]  Yes, he says "stripped", not "skipped".
[2]  I am pretty sure he meant "alphabetic characters which are not allowable
in the given radix", not just "characters".  Also, obviously, "+" and "-" are
punctuation, but do not necessarily cause the process to end.

So, to answer the implicit questions:

1.  Yes, he points out the "restrict" added by C99 in the material I didn't
reproduce.
2.  Yes, he calls the parameter "end" rather than "endptr".
3.  Yes, he is completely missing the distinction between "end" and
"the pointer pointed to by end".
4.  Yes, I think that's because of his choice to rename the parameter.
5.  The following example does indeed use a local variable "char *end"
and then pass &end to strtol.
6.  So yes, the example "works" (nevermind the gets, etc., problems)...
7.  But it's extremely confusing, and hopeless for a newbie trying to
follow along and wondering what "end" is and what it points to.
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/6/2010 11:30:45 PM

Seebs <usenet-nospam@seebs.net> writes:
> On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
>> Seebs <usenet-nospam@seebs.net> writes:
>>> On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
>>>> Schildt's description appears to be correct.
>>>
>>> It's not, though, because the description is BEFORE the example,
>>> and is referring to his (garbled) declaration.
>>>
>>> The example code comes after the description, and reuses the name
>>> "end" for a char *.
>
>> I'm a bit confused.  Does Schildt actually refer to the second
>> parameter to strtol() as "end" rather than as "endptr" (which is what
>> the standard calls it)?
>
> Yes.
>
>> Can you post some more context?
>
> 	strtol
>
> 	#include <stdlib.h>
> 	long int strtol(const char *start, char **end, int radix);
[snip]

He didn't just rename endptr; he renamed *all* the parameters.

Their names in the standard are nptr, endptr, and base, respectively.

I suppose I can undererstand that "start" is clearer than "nptr", and
"radix" might be less ambiguous than "base". 

But renaming "endptr" to "end" (and then passing "&end" as an
argument, so the caller's "end" is a char* and the callee's "end" is a
char**)?  The only explanation I can think of is that he simplified it
to the point of incorrectness, without even realizing the distinction
between char* and char**.

In any case, especially in a reference, why not use the same parameter
names used by the standard?

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/6/2010 11:53:14 PM

On 2010-04-06, Keith Thompson <kst-u@mib.org> wrote:
> He didn't just rename endptr; he renamed *all* the parameters.

Yup.

> But renaming "endptr" to "end" (and then passing "&end" as an
> argument, so the caller's "end" is a char* and the callee's "end" is a
> char**)?  The only explanation I can think of is that he simplified it
> to the point of incorrectness, without even realizing the distinction
> between char* and char**.
>
> In any case, especially in a reference, why not use the same parameter
> names used by the standard?

No clue.  Stranger yet, he DOES use it correctly -- it's just the
description that's totally wrong.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 12:19:17 AM

On Apr 6, 11:14=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Richard Heathfield <r...@see.sig.invalid> wrote:
>
> >spinoza1111wrote:
> ><snip>
> >> If you would just blank the site, I can then go into wikipedia as an
> >> anonymous ip address and quite properly remove the section of the
> >> article on Schildt that continues to damage his reputation.
> > That's the big problem with Wikipedia - any bozo can edit it, and many
> > bozos do. Fortunately, Seebs isn't about to "blank the site" any time s=
oon.
>
> It's nice for Nilges to come out and say that his fundamental reason for
> objecting to my page is that he wants to be able to commit a felony-level
> unauthorized access to someone else's computers. =A0(Hint: =A0Once you're=
 banned,
> trying to sneak around the ban is, in fact, usually a felony, albeit not
> one the cops are likely to pursue.)

This is simply not true. Wikipedia in fact has no legal claim that
"unauthorized" changes even exist since it is well known how to stop
them, but it wants them because that's how it steals intellectual
production. If I "hacked" into a closed site, that would be a felony.

But I would delighted to have you make the change to the Herb Schildt
article once you've seen the light.

Two of my "felonies" are now permanent content which have benefited
wikipedia. These were getting the entries on Herb and Kathy Sierra to
conform to wikipedia's own standard on Biographies of Living Persons
thereby protecting wikipedia against libel lawsuits.

Peter, if you weren't so evil, you'd be funny.

"Calling all cars...calling all cars. Felony in progress at Starbuck's
on Hysan and Perceval Road in Causeway Bay. Nilges is modifying
wikipedia."

Is Jimmy Wales making ignorant remarks on my blog a felony? Now
there's a guy I'd love to nail. He's probably committing tax fraud by
using wikipedia for his for-profit ventures. He's also a pompous,
ignorant shopclerk.
>
> However, he's wrong; there are other pages that support the same point ju=
st
> as well.

They are based on yours.
>
> > It doesn't take a genius to work out why.
>
> But it might take someone to figure out WHY the "/2" is there.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply spinoza1111 4/7/2010 12:30:02 AM

On Apr 6, 11:17=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Richard Harnden <rh.nos...@tiscali-co-uk.invalid> wrote:
>
> > On 06/04/2010 11:43,spinoza1111wrote:
> >> [...] =A0The fact is, as he [Seebs] has himself confirmed, he
> >> paid his way onto the ISO committee [...]
> > So did Schildt. =A0So what?
>
> In fact, so did everyone I know of. =A0In fact, I'm the only person I kno=
w
> to have been given a waiver of the fees (I was flat broke at the time) to
> allow me to continue attending meetings and voting based on my contributi=
ons,
> rather than based on sending in money. =A0(Only one year, but hey, it's a
> data point.)
>
> The difference is that Schildt paid the money for membership, then never
> attended meetings or participated in any way that anyone I ever talked to=
 is
> aware of.

The issue isn't Schildt, it's you. He'd already published and finished
an advanced degree. Whereas I don't know what a person with no
academic preparation was doing at the C99 standard.
 =A0
> He paid money for the recognition and status. =A0Me, I went to

Maybe he heard you were there?

The issue is your behavior as regards CTCN, not Schildt.

> meetings and put in time and effort trying to find ways to improve the
> language, working on defects, suggesting resolutions to wording problems,=
 and
> otherwise actually DOING STUFF.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/7/2010 12:43:31 AM

On Apr 7, 1:05=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, jacob navia <ja...@nospam.org> wrote:
>
> > ImpalerCore a =E9crit :
> >> This is not the kind of attitude that will lead people to want to use
> >> your container library.
> > Yes, I should stop that container library.
>
> He didn't say that.
>
> > I should stop giving my work for free, contribute to this group and
> > do my job where I get money for what I do.
>
> He didn't say that either.
>
> > You agree that calling me a jerk is good manners, but writing thomson
> > with lower case is an insult.
>
> He didn't say that either.
>
> > Nice for you, I did not expect anything else, from you or heathfield
> > and all the others.
>
> The problem here is not that you're bitter about the treatment you're
> experiencing. =A0The problem is that most of the treatment you're experie=
ncing
> does not exist in the world external to you. =A0You are experiencing your
> own bitterness, not the things people actually say to you.

On the contrary, there is objective evil in this newsgroup. You are
incapable of the simplest code, and you are using this ng in order to
pretend that you are qualified. Whereas Navia comes in here with lots
of working code and you enable attacks on him.
>
> You make a ton of claims, such as that no one contributes or makes sugges=
tions
> about your projects, but people often do, and not all of them are "don't =
do
> that". =A0I've given you several responses where I suggested improvements=
, or
> agreed with one of your design criteria; in those cases, I've been arguin=
g,
> not that you shouldn't do a container library, but ways in which I think =
your
> container library can be better. =A0I write those suggestions because it'=
s
> quite clear that you are passionate about this, and I am a big fan of try=
ing
> to help people do things that they think are important.

Since it's obvious that you could not write an equivalent piece of
software from queue.c, he probably has ignored your suggestions.
>
> But it's pretty frustrating, because even though I've put a fair bit of t=
ime
> into kibitzing, suggesting things, and trying to articulate things that I
> think might be barriers to acceptance that you might need to overcome to =
get
> widespread adoption... All you seem to hear is that I "don't like" it, so
> you talk about people attacking you, trying to destroy you, and so on.

Which is what you're trying to do.

>
> Serious question: =A0Do you know whether you might have some kind of seri=
ous
> depression going on? =A0I have a few friends who are prone to depression,=
 and
> the kind of black fog of "everybody's hostile and just wants to destroy m=
e"
> stuff you say sounds a whole lot like what depressed people say. =A0If yo=
u
> haven't looked into that before, I would suggest that you talk to a docto=
r
> about it -- depression is dangerous, potentially lethal, and eminently
> treatable.

I think the only depression he has is a strong desire to rearrange
your face.

>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/7/2010 2:46:40 AM

On Apr 7, 12:55=A0am, jacob navia <ja...@nospam.org> wrote:
> ImpalerCore a crit :
>
>
>
>
>
> > On Apr 5, 4:58 pm, jacob navia <ja...@jacob.remcomp.fr> wrote:
> >> Keith Thompson a crit :
>
> >>> No, we were trying to help you improve it. =A0And my last name is
> >>> spelled with a capital 'T'; please treat it with the same respect
> >>> with which I treat yours.
> >> So, let's make this clear:
>
> >> (1) You have the right of treating me of "jerk" several times in publi=
c.
> >> =A0 =A0 =A0In this same group.
>
> >> (2) I mustn't forget to capitalize the t of your name because if I do,
> >> =A0 =A0 =A0you feel upset.
>
> >> I think that bothering to press the shift key is too much effort for
> >> people like you. Either you accept the lower case or...
>
> >> you learn how to use a killfile, that you brand here so often as a
> >> "weapon".
>
> >> I fear that you lack the mental abilities to do that though.
>
> >> Good luck!
>
> > This is not the kind of attitude that will lead people to want to use
> > your container library.
>
> Yes, I should stop that container library.
>
> I should stop giving my work for free, contribute to this group and
> do my job where I get money for what I do.
>
> You agree that calling me a jerk is good manners, but writing thomson
> with lower case is an insult.
>
> Nice for you, I did not expect anything else, from you or heathfield
> and all the others.

Jacob, I suggest that you need to realize who your friends are here.
Stop defending yourself alone, like Bonaparte versus the English, the
Dutch and the Prussians at Waterloo. Take a look at how others are
being treated here by people who cannot get a one line strlen right.

I don't think Schildt's books are great. I do think that people have a
right to publish and be then free of criticism by their educational
and programming inferiors, criticism amplified by the hive mind of the
Internet. What's at stake here are the reputations of people who
actually do things, like you.
0
Reply spinoza1111 4/7/2010 2:50:29 AM

On Apr 7, 7:30=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-06, Keith Thompson <ks...@mib.org> wrote:
>
> > Seebs <usenet-nos...@seebs.net> writes:
> >> On 2010-04-06, Keith Thompson <ks...@mib.org> wrote:
> >>> Schildt's description appears to be correct.
>
> >> It's not, though, because the description is BEFORE the example,
> >> and is referring to his (garbled) declaration.
>
> >> The example code comes after the description, and reuses the name
> >> "end" for a char *.
> > I'm a bit confused. =A0Does Schildt actually refer to the second
> > parameter to strtol() as "end" rather than as "endptr" (which is what
> > the standard calls it)?
>
> Yes.
>
> > Can you post some more context?
>
> =A0 =A0 =A0 =A0 strtol
>
> =A0 =A0 =A0 =A0 #include <stdlib.h>
> =A0 =A0 =A0 =A0 long int strtol(const char *start, char **end, int radix)=
;
>
> =A0 =A0 =A0 =A0 The strtol function converts... [brief description]
>
> =A0 =A0 =A0 =A0 The strtol function works as follows. =A0First, any white
> =A0 =A0 =A0 =A0 space in the string pointed to by start is stripped[1].
> =A0 =A0 =A0 =A0 Next, each character that makes up the number is read.
> =A0 =A0 =A0 =A0 Any character that cannot be part of a long integer numbe=
r
> =A0 =A0 =A0 =A0 will cause this process to stop. =A0This includes white s=
pace,
> =A0 =A0 =A0 =A0 punctuation, and characters[2]. =A0Finally, end is set to
> =A0 =A0 =A0 =A0 point to the remainder, if any, of the original string.
> =A0 =A0 =A0 =A0 This means that if strtol() is called with " 100 Pliers",
> =A0 =A0 =A0 =A0 the value 100L will be returned, and end will point to th=
e
> =A0 =A0 =A0 =A0 space that precedes "Pliers".
>
> [1] =A0Yes, he says "stripped", not "skipped".

Stripped is sexier.

> [2] =A0I am pretty sure he meant "alphabetic characters which are not all=
owable
> in the given radix", not just "characters". =A0Also, obviously, "+" and "=
-" are
> punctuation, but do not necessarily cause the process to end.

No, signs are not "punctuation".

>
> So, to answer the implicit questions:
>
> 1. =A0Yes, he points out the "restrict" added by C99 in the material I di=
dn't
> reproduce.
> 2. =A0Yes, he calls the parameter "end" rather than "endptr".
> 3. =A0Yes, he is completely missing the distinction between "end" and
> "the pointer pointed to by end".

It is common to collapse this distinction temporarily in teaching.

> 4. =A0Yes, I think that's because of his choice to rename the parameter.

You don't know what he knows.

> 5. =A0The following example does indeed use a local variable "char *end"
> and then pass &end to strtol.

Translation: it is correct.

> 6. =A0So yes, the example "works" (nevermind the gets, etc., problems)...
> 7. =A0But it's extremely confusing, and hopeless for a newbie trying to
> follow along and wondering what "end" is and what it points to.

Don't speak for the newbie. You're not a newbie. How would you know
what the knewbie kneeds to know?

But strangely, knor are you an experienced as opposed to corrupted
programmer. These sorts of corrupted and incompetent programmers love
to speak for the newbie.

English cannot be used as a formal metalanguage for C, therefore
anything that is said in English about C (such as what's set when end
is set) can be interpreted as wrong by hostile dweebs.

We now kneed you to blank or remove C: the Complete Nonsense. You
could do this silly set of silly operations on the example code of any
computer book, and we have learned that you produce code that is far
less competent. We're tired of you wasting bandwidth and patience.

> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/7/2010 5:54:37 AM

On 6 Apr, 23:22, Ian Collins <ian-n...@hotmail.com> wrote:
> On 04/ 7/10 02:41 AM, spinoza1111 wrote:
> > On Apr 6, 7:27 pm, Richard Heathfield<r...@see.sig.invalid> =A0wrote:


> >> Example

I'd like to play too! Is shildt's book online somewhere?

> >> This function converts the number entered at the keyboard into its
> >> absolute value:
>
> >> #include "stdlib.h"

#include <stdlib>


> >> long int get_labs()
> >> {
> >> =A0 =A0 char num[80];
>
> >> =A0 =A0 gets(num)

isn't using gets() a bug all on its own?


>
> >> =A0 =A0 return labs(atol(num));
>
> >> }
>
> >> Actually, of course, it does no such thing, because it won't compile.
>
> > Of course it won't. There is a missing semicolon at the end of gets. A
> > professional programmer sees this and fixes it without making absurd
> > generalizations about the computer author. Whereas incompetents like
> > to play the back-stabbing game.

it's supposed to be a book for beginners. An error rate of one per
page is way too high. The schildt was proposed as a error rate
measure- though milli-schildt would be better for professional
programmers.

The space shuttle software is expected to achive nano-shildt levels of
relibility.

> A professional programmer compiles and tests his code before submitting
> it for review.

I understand the publishing process can introduce bugs. Didn't
Unleashed have some bugs entered between submission by the authors and
actually being marks on dead trees?


0
Reply Nick 4/7/2010 8:55:55 AM

On 6 Apr, 18:31, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 6, 10:50=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> > On 2010-04-06, Richard Heathfield <r...@see.sig.invalid> wrote:

<snip>

> (3) As Malcolm has pointed out, code snippets are not standalone and
> not meant for [...] programmers to type in
> uncritically. [...]

a fair point (once edited), I suppose


> (4) It is in fact common practice to eliminate housekeeping and to
> make assumptions when one's a teacher, but neither you nor Richard are
> teachers. [...]

nor is schildt
you simply have to have a better grasp of your subject than schildt
has to qualify as a teacher

<snip>

> > =A0Who here can
> > come up with a case where ABS(x) doesn't produce the expected result?
>
> (Sigh) without looking at your garbage below, we know that Herb, while
> he correctly parenthesizes the formal parameters in the macro, failed
> to take into consideration what will happen when the macro is used in
> a larger expression with an operator of lower precedence than ?:.

this is prettyy basic stuff. If he's writing a book about C he should
know this.

> Many beginners fail to parenthesize formal parameters and are
> surprised when shit happens as a result. They then are admonished to
> use parentheses.

but schildt isn't a beginner, he's a teacher of beginners


> Given your low standard of care in using a switch statement with
> fallthrough,

was it wrong? I use the feature when its useful, though I usually
comment it heavily. Where multiple labels have the same action its
quite common

    switch (event)
    {
        case EV_DATA:
             process_data();
             break;

        case EV_ACK:
        case EV_CONT:
             special_processing();
             break;

        case EV_BREAK:
             break_link();
             break:

         default:
             bad_event();
    }


> I rather doubt in fact that you know or follow either
> standard consistently, and given, Peter, your [sloppiness in usenet post]
[...]

shildt is supposed to be writing a book not a usenet post

<snip>
0
Reply Nick 4/7/2010 9:12:46 AM

On 6 Apr, 10:33, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 6, 3:49=A0pm, Phil Carmody <thefatphil_demun...@yahoo.co.uk>
> wrote:
> > Keith Thompson <ks...@mib.org> writes:
> > > Malcolm McLean <malcolm.mcle...@btinternet.com> writes:

> > > As long as I'm posting I'll mention that
> > > =A0 =A0 The "heap" is a DOS term...
>
> > > is a perfectly correct statement. =A0It doesn't necessarily imply
> > > that it's *only* a DOS term. =A0It also happens to be a Unix term,
> > > and a Windows term, and a Symbian term, and so forth (and yes,
> > > an updated version of the web page should probably clarify that).
> > > The point is that it isn't a C term.
[...]
> > something so similar my memory cannot distinguish it. Given that
> > the 'heap' isn't structurally or algorithmically a 'heap', I always
> > wondered why a less baggage-laden term wasn't more popular.
>
> Actually, the primitive structure Herb was talking about is indeed a
> "heap" in an abstract sense

yes. Though computer science seems to have a least two common usages
for the term "heap". Sedgewick calls a tree satisfying something
called the "heap condition" (the tree is sorted in aparticular
fashion) a "heap data structure". Knuth mentions the term "heap" in
your sense (in the sense of dynamic storage allocation) but only as a
terminological aside.

I prefer not to use the term heap as it carries unnecessary
implications about implementation.

> and in contrast to the stack. The stack
> contains small and fixed length values. When a value (a struct or
> array) doesn't fit, we use an address in a free store. OO practice was
> based on this.

no not really

> I first saw the usage of "heap" in Saul Rosen's 1968 collection of
> papers on early software. A computer scientist who actually programs
> narrates what she's doing in ways that may seem to uneducated mere
> programmers as incorrect, but I prefer her definitions.
>
> Scientists know what a word means. Little technicians rely on
> "terminology".

<snip>


--
"When my companion said he wanted a beer he wasn't just thinking of
the particular beverage but of the experience it represents. The
beer,
the seedy bar, grizzelled space traders haggling over dubious goods,
greasy tables, loud music, women of easy virtue. Beer as a symbol."
0
Reply Nick 4/7/2010 9:27:40 AM

In article 
<3f506489-689e-4283-8902-2e9e29ff4e05@n34g2000yqb.googlegroups.com>,
 spinoza1111 <spinoza1111@yahoo.com> wrote:

> I don't think Schildt's books are great. I do think that people have a
> right to publish and be then free of criticism by their educational
> and programming inferiors, ...

Stuff and nonsense Spinny (as usual), and in any case those making the 
criticisms don't fall into that category (you snob).

-- 
Tim

"That excessive bail ought not to be required, nor excessive fines imposed,
nor cruel and unusual punishments inflicted"  --  Bill of Rights 1689
0
Reply Tim 4/7/2010 9:56:26 AM

On 6 Apr, 08:25, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 6, 6:33=A0am, Ben Pfaff <b...@cs.stanford.edu> wrote:
> > Keith Thompson <ks...@mib.org> writes:
> > > Ben Pfaff <b...@cs.stanford.edu> writes:
> > >> REH <spamj...@stny.rr.com> writes:
> > >>> On Apr 5, 2:55=A0pm, Malcolm McLean <malcolm.mcle...@btinternet.com=
>
> > >>> wrote:

> > >> The structure member operator has two operands. =A0That makes it a
> > >> binary operator.
>
> > > It's listed in C99 6.5.2 "Postfix operators".
>
> > That's convenient, because it fits in the grammar at the same
> > level of precedence as the postfix operators.
>
> > > The suffix of a "." operator isn't what I'd call an "operand".
> > > The prefix is an expression. =A0The suffix is not, and cannot be,
> > > an expression.

it's noticable that C++ doesn't allow operator-dot to be overloaded,
but it does allow operator-> to be overloaded

> > One form of "sizeof" does not take an expression as its operand.
> > Do you consider that form of "sizeof" a nullary operator? =A0I have
> > not heard it described that way before.
>
> > > The overriding consideration, IMHO, is that the C standard calls
> > > it a postfix operator.
>
> > The C standard lists the "<" operator in a section titled
> > "Relational operators". =A0Do you consider "<" to be a binary
> > operator?

[...]

> "Binary operator" does not have, any more than many English
> expressions, a fixed meaning.

I thought it did. I thought it meant "taking two operands"

> In the context, Herb meant "binary
> arithmetic operator" since K & R thought it would be cool to combine
> simple and common arithmetic operators with assignment, but not so
> cool to do this for logic operators.

?

aren't &=3D |=3D ^=3D logical assignment operators?



0
Reply Nick 4/7/2010 10:18:31 AM

On 7 Apr, 10:56, Tim Streater <timstrea...@waitrose.com> wrote:
> In article
> <3f506489-689e-4283-8902-2e9e29ff4...@n34g2000yqb.googlegroups.com>,
>
> =A0spinoza1111 <spinoza1...@yahoo.com> wrote:
> > I don't think Schildt's books are great. I do think that people have a
> > right to publish and be then free of criticism by their educational
> > and programming inferiors, ...
>
> Stuff and nonsense Spinny (as usual), and in any case those making the
> criticisms don't fall into that category (you snob).
>
The idea that you have to have a higher or equivalent academic
qualification to the author in order to be allowed to make a comment
on a book is not, I think, a flyer.

On the other hand if some of your criticisms are wrong, are pretty
clearly shown to be wrong, and you persist in insisting that they are
right, then you lack credibility as a critic.
0
Reply Malcolm 4/7/2010 10:22:15 AM

Nick Keighley wrote:
> [...]
> aren't &= |= ^= logical assignment operators?

The standard calls
  & the "bitwise AND operator"
  | the "bitwise inclusive OR operator"
  ^ the "bitwise exclusive OR operator"

There are also logical operators, but they are different.
  && is the "logical AND operator"
  || is the "logical OR operator"

So, no, there are no "logical assignment operators" in C.
(The standard speaks of "compound assignment".)

-- 
0
Reply Alexander 4/7/2010 10:38:18 AM

In article 
<12e51406-1694-4542-8828-da6b9a6885b5@8g2000yqz.googlegroups.com>,
 Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:

> On 7 Apr, 10:56, Tim Streater <timstrea...@waitrose.com> wrote:
> > In article
> > <3f506489-689e-4283-8902-2e9e29ff4...@n34g2000yqb.googlegroups.com>,
> >
> > �spinoza1111 <spinoza1...@yahoo.com> wrote:
> > > I don't think Schildt's books are great. I do think that people have a
> > > right to publish and be then free of criticism by their educational
> > > and programming inferiors, ...
> >
> > Stuff and nonsense Spinny (as usual), and in any case those making the
> > criticisms don't fall into that category (you snob).
> >
> The idea that you have to have a higher or equivalent academic
> qualification to the author in order to be allowed to make a comment
> on a book is not, I think, a flyer.
> 
> On the other hand if some of your criticisms are wrong, are pretty
> clearly shown to be wrong, and you persist in insisting that they are
> right, then you lack credibility as a critic.

Yes, I agree. But I don't think that has been happening in this instance.

-- 
Tim

"That excessive bail ought not to be required, nor excessive fines imposed,
nor cruel and unusual punishments inflicted"  --  Bill of Rights 1689
0
Reply Tim 4/7/2010 10:38:44 AM

On 6 Apr, 09:43, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 6, 3:26=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> > On 2010-04-06, Richard Heathfield <r...@see.sig.invalid> wrote:
> > > spinoza1111 wrote:

<snip>

> > >> Peter, the issue here isn't Schildt's book. It is "C: the Complete
> > >> Nonsense", not "C: the Complete Reference".
[...]
> > > If on specific errata he is right, it adds up to a proper critique,
> > > unless there are a significant number of specific errata that he got
> > > wrong. This you have failed to demonstrate.
>
> > I think there's certainly a meaningful sense in which it's not a
> > "proper critique"; if I went to someone for a professional-quality
> > book review, and got back C:TCN, I'd be upset.
>
> Very good. We're making progress. OK, you have write access to the
> post. I will drop the matter if you replace it by a blank post, or
> something saying "withdrawn".

don't do it!

<snip optimism>

> > But as things posted on the internet for free roughly 15 years ago go,
> > it's not bad.
>
> I do not accept arguments of this form. "My classmates are stupid
> therefore I am smart" is not a valid inference.

I don't see them as being of the same form

<snip>

> > >> I will take responsibility for repairing wikipedia
>
> > > No wonder it has such a bad reputation, if people like you are
> > > "repairing" it. But I thought you'd been banned from "repairing" Wiki=
pedia?
>
> > Well, yes. =A0The purpose of this whole thing seems to be that the Wiki=
pedia
> > admins chose to accept the C:TCN page as sufficient evidence that the
> > "controversy" section deserved to be there. =A0Thus, if Nilges can get =
enough
> > people to argue that C:TCN isn't a very good critique... =A0nothing hap=
pens.
>
> It is now a Reception section, but overgeneralizes the canard to apply
> to all of Schildt's output, not just CTCR.

does wikipedia do this? I think Seebs critique is squarely aimed at a
particular document. Though if you want to start discussing the errors
in "Annotated ANSI C Standard" I'd be happy to open the batting...
Apparently he even quotes the standard incorrectly at one point.

<snip>

> > If people really care, hey, I can always do a proper critique. =A0I've =
got
> > another ~15 years of writing and programming experience to draw on sinc=
e
> > the days when I wrote C:TCN. =A0That said...
>
> > If I were to write such a page today, based on the 4th edition, it woul=
d have
> > fewer nitpicking errors, but I could do a much better job of explaining=
 in
> > detail, and presenting effectively, the case that the remaining errors =
both
> > conceptual and technical are serious enough to utterly dispel any notio=
n
> > that the book ought to be used to learn from. =A0I know a lot more abou=
t
> > writing, and about how to teach people about computers, and about C, th=
an I
> > did back in ~1995 or so. =A0My impressions of Schildt's work have not c=
hanged
> > for the better.
>
> You can do that, of course. However, to do an acceptable job, you need
> to provide all of what you think are errors,

no. Once the error level is sufficiently high the reader can see it is
a bad book. Does it matter if a boat has 15 holes or 17?


> and you have to be
> prepared to have to defend your document. It appears to me that you do
> not have enough academic experience in this type of interchange to
> know how time-consuming this would be for you. I think it would be
> better for you to return to school and learn the trade you profess.
>
> Just blank the page, Peter, and this matter will disappear and be
> forgotten.

I assure you it won't.

I don't think your sort of harrassment should be allowed to succeed.

0
Reply Nick 4/7/2010 10:59:24 AM

On 7 Apr, 00:53, Keith Thompson <ks...@mib.org> wrote:
> Seebs <usenet-nos...@seebs.net> writes:
> > On 2010-04-06, Keith Thompson <ks...@mib.org> wrote:



> >>> It's not, though, because the description is BEFORE the example,
> >>> and is referring to his (garbled) declaration.
>
> >>> The example code comes after the description, and reuses the name
> >>> "end" for a char *.
>
> >> I'm a bit confused. =A0Does Schildt actually refer to the second
> >> parameter to strtol() as "end" rather than as "endptr" (which is what
> >> the standard calls it)?
>
> > Yes.
>
> >> Can you post some more context?
>
> > =A0 =A0strtol
>
> > =A0 =A0#include <stdlib.h>
> > =A0 =A0long int strtol(const char *start, char **end, int radix);
>
> He didn't just rename endptr; he renamed *all* the parameters.

heavens to betsy.


> Their names in the standard are nptr, endptr, and base, respectively.
>
> I suppose I can undererstand that "start" is clearer than "nptr", and
> "radix" might be less ambiguous than "base".

yes


> But renaming "endptr" to "end" (and then passing "&end" as an
> argument, so the caller's "end" is a char* and the callee's "end" is a
> char**)?

that sounds a bit bad. I don't mind a char** being called end but I do
object to multiple variables called end having different types in
different parts of the program. Seems to be asking for trouble.

>=A0The only explanation I can think of is that he simplified it
> to the point of incorrectness, without even realizing the distinction
> between char* and char**.

I think that involves a bit of mind reading. If not mind writing.


> In any case, especially in a reference, why not use the same parameter
> names used by the standard?

I'm not convinced he's wrong here. Beginners aren't usually happy with
standards (I like them, but I'm strange!) so paraphrasing standardese
is *exactly* what he's supposed to be doing. Provided he makes it
clearer... The difficulty is explaining clearly and simply what the
example program does and describign exactly what strtol() does in all
cases. I think I'd tackle them separately. First explain the noddy
program then trot out the a paraphrase (or a straight quote) from the
standrad.


--
"in flippin pig mode again"
Text found in macintosh resource fork

0
Reply Nick 4/7/2010 12:00:14 PM

On 7 Apr, 06:54, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 7, 7:30=A0am, Seebs <usenet-nos...@seebs.net> wrote:

<snip>

> > 2. =A0Yes, he calls the parameter "end" rather than "endptr".
> > 3. =A0Yes, he is completely missing the distinction between "end" and
> > "the pointer pointed to by end".
>
> It is common to collapse this distinction temporarily in teaching.

and when does he undo this particular example of lying to children?
The trouble with giving wrong examples is they later have to be
unlearned

> > 4. =A0Yes, I think that's because of his choice to rename the parameter=
..
>
> You don't know what he knows.

yes


> > 5. =A0The following example does indeed use a local variable "char *end=
"
> > and then pass &end to strtol.
>
> Translation: it is correct.
>
> > 6. =A0So yes, the example "works" (nevermind the gets, etc., problems).=
...
> > 7. =A0But it's extremely confusing, and hopeless for a newbie trying to
> > follow along and wondering what "end" is and what it points to.
>
> Don't speak for the newbie. You're not a newbie. How would you know
> what the knewbie kneeds to know?

some of us have memories. I remember being a child and I remember
being a newbie.


> But strangely, knor

why have you started putting ks on the front of words? Is this 15th
century spelling or something?

> are you an experienced as opposed to corrupted
> programmer. These sorts of corrupted and incompetent programmers love
> to speak for the newbie.

yeah? cite?

> English cannot be used as a formal metalanguage for C,

slightly formalised english can though.
The alternatives are rather dense.

> therefore
> anything that is said in English about C (such as what's set when end
> is set) can be interpreted as wrong by hostile dweebs.

I don't think this is happening though


> We now kneed you to blank or remove C: the Complete Nonsense. You
> could do this silly set of silly operations on the example code of any
> computer book,

no, not really.


> and we have learned that you produce code that is far
> less competent. We're tired of you wasting bandwidth and patience.

"we are a grandmother!"
Margaret Hilda Thatcher


--
Matthew 23:24
KJV:
[23] Woe unto you, scribes and Pharisees, hypocrites! for ye pay
tithe
of mint and anise and cummin, and have omitted the weightier matters
of the law, judgment, mercy, and faith: these ought ye to have done,
and not to leave the other undone.
[24] Ye blind guides, which strain at a gnat, and swallow a camel.



0
Reply Nick 4/7/2010 12:10:50 PM

On Tue, 6 Apr 2010 13:00:50 -0700 (PDT), Malcolm McLean
<malcolm.mclean5@btinternet.com> wrote:

>On 6 Apr, 20:37, Seebs <usenet-nos...@seebs.net> wrote:
>> On 2010-04-06, Malcolm McLean <malcolm.mcle...@btinternet.com> wrote:
>>
>> > No, but the fact that two people independently described the book as
>> > "more of a tutorial than a reference", myself and the Amazon reviewer,
>> > is very significant.
>>
>> It would be if you had ever seen the book. =A0As is, didn't you give his
>> review as your *REASON* for holding your position?
>>
>I did, but what happened was I thought I'd better actually look at the
>book, so I typed the title in Google. The first hit was Amazon, and
>the first revew said "A tutorial, NOT a reference". This was a such a
>coincidence that obviously the first thing I did was cut and paste and
>post it.
>
>A reference isn't designed to be read. It's intended to be consulted
>to check facts, for instance if you forget whether the number of
>elements is the second or the thrid parameter to qsort(), or to check
>if the standard says anything about calling sin() with an argument
>outside the range -2PI to 2PI radians. It's pretty obvious from the
>snippets that the book isn't written like that sort of work.

Well, now, that simply isn't true.  Some references, e.g., the
CRC standard math tables, aren't designed to be read (as you are
using the word).  Specialized language reference manuals, e.g.,
the MAN pages, are also not designed to be "read".  However it is
quite common for computer language reference manuals to contain
large amounts of expository text.  For example, Harbison &
Steele's book is entitled "C A Reference Manual".

 

Richard Harter, cri@tiac.net
http://home.tiac.net/~cri, http://www.varinoma.com
It's not much to ask of the universe that it be fair;
it's not much to ask but it just doesn't happen.
0
Reply cri 4/7/2010 12:15:11 PM

In article <5dfc5b10-a5b8-4dc0-8dce-4da54abe1459@i25g2000yqm.googlegroups.com>,
spinoza1111  <spinoza1111@yahoo.com> wrote:
> On Apr 6, 10:50 pm, Seebs <usenet-nos...@seebs.net> wrote:
> > On 2010-04-06, Richard Heathfield <r...@see.sig.invalid> wrote:

[ snip ]

> > Flipped around a bit, found a new example.  4th edition, page 264:
> >
> >         #define MAX_SIZE 100
> >         /* ... */
> >         float balance[MAX_SIZE];
> >         /* ... */
> >         for(i=0; i<MAX_SIZE; i++) printf("%f", balance[i]);
> >         /* ... */
> >         for(i=0; i<MAX_SIZE; i++) x =+ balance[i];
> >
> > The reader is encouraged to try to spot errors.  I only found two; can
> > you do better?
> 
> (1) You added some special invisible non graphic characters to make
> the example not compile with several errors, or those characters were
> added by the browser in a way that I have not seen occur before.

Strange.  The copy of Seeb's post delivered to me by the news server
I use contained no such characters, and when I saved the code in a
file and added appropriate declarations, etc. (without changing the
above lines), it compiled fine.  Could Google's interface be adding
those invisible(?) characters?  I've noticed that posts made from
Google's posting interface seem to be sent out in quoted-printable
encoding, and that *does* include some not-7-bit-ASCII characters [*].
Maybe they're doing something similar with displayed posts?

[*] Quite annoying to those of using antique newsreaders that don't
cope well with anything but 7-bit ASCII, but I cope, and of course
it's my choice to keep using trn.

[ snip ]

-- 
B. L. Massingill
ObDisclaimer:  I don't speak for my employers; they return the favor.
0
Reply blmblm 4/7/2010 12:24:56 PM

On 6 Apr, 16:30, Seebs <usenet-nos...@seebs.net> wrote:

> The chief flaw in C:TCN is that in doesn't give enough of the examples --=
 but
> not that it overclaims. =A0It underclaims, and fairly seriously so.

that is more and more looking like its major flaw. If CTCN was updated
it would be *more* devastating.

To avoid too much repitition there needs to be a "generic" errors
section.

   Pretty much all the examples commit the following basic errors
       - incorrect bracketing of standard headers
       - incorrect return value from main()
       - non-portable value passed to exit()

I nearly said "insufficient error checking" but I think that needs to
be tackled on a case by case basis
0
Reply Nick 4/7/2010 12:40:14 PM

On Apr 7, 8:40=A0pm, Nick Keighley <nick_keighley_nos...@hotmail.com>
wrote:
> On 6 Apr, 16:30, Seebs <usenet-nos...@seebs.net> wrote:
>
> > The chief flaw in C:TCN is that in doesn't give enough of the examples =
-- but
> > not that it overclaims. =A0It underclaims, and fairly seriously so.
>
> that is more and more looking like its major flaw. If CTCN was updated
> it would be *more* devastating.
>
> To avoid too much repitition there needs to be a "generic" errors
> section.
>
> =A0 =A0Pretty much all the examples commit the following basic errors
> =A0 =A0 =A0 =A0- incorrect bracketing of standard headers
> =A0 =A0 =A0 =A0- incorrect return value from main()
> =A0 =A0 =A0 =A0- non-portable value passed to exit()
>
> I nearly said "insufficient error checking" but I think that needs to
> be tackled on a case by case basis

Nobody here is qualified to do this, I'm afraid, for two reasons:

1.  The most rabid critics have shown here in their own code that they
don't have enough programming competence. Seebach as far as I can tell
repeatedly posts buggy code. Heathfield is more competent, but limited
by a similar lack of education; for example, his "linked list"
consists of data rather than pointers in C Unleashed.

2.  The goal is to "get" Schildt still, which means that in most
cases, the most uncharitable interpretations of his code and text will
be selected. We've seen that to a great extent in text, there are n>1
interpretations, as in the two interpretations possible today of "long
integer" (32 bit in C: 64 bit practically everywhere else). But this
also occurs in code, where Seebach and Heathfield continue to make
snarky remarks of the form "find the many bugs in this code", and the
bugs are merely contextual. It's still Open Season and Open Source on
Schildt, because the effort to "get" him includes requests that others
participate.
0
Reply spinoza1111 4/7/2010 2:28:17 PM

On 7 Apr, 13:24, blm...@myrealbox.com <blm...@myrealbox.com> wrote:
> In article <5dfc5b10-a5b8-4dc0-8dce-4da54abe1...@i25g2000yqm.googlegroups=
..com>,
>
> spinoza1111 =A0<spinoza1...@yahoo.com> wrote:
> > On Apr 6, 10:50 pm, Seebs <usenet-nos...@seebs.net> wrote:
> > > On 2010-04-06, Richard Heathfield <r...@see.sig.invalid> wrote:
>
> [ snip ]
>
>
>
> > > Flipped around a bit, found a new example. =A04th edition, page 264:
>
> > > =A0 =A0 =A0 =A0 #define MAX_SIZE 100
> > > =A0 =A0 =A0 =A0 /* ... */
> > > =A0 =A0 =A0 =A0 float balance[MAX_SIZE];
> > > =A0 =A0 =A0 =A0 /* ... */
> > > =A0 =A0 =A0 =A0 for(i=3D0; i<MAX_SIZE; i++) printf("%f", balance[i]);
> > > =A0 =A0 =A0 =A0 /* ... */
> > > =A0 =A0 =A0 =A0 for(i=3D0; i<MAX_SIZE; i++) x =3D+ balance[i];
>
> > > The reader is encouraged to try to spot errors. =A0I only found two; =
can
> > > you do better?
>
> > (1) You added some special invisible non graphic characters to make
> > the example not compile with several errors, or those characters were
> > added by the browser in a way that I have not seen occur before.
>
> Strange. =A0The copy of Seeb's post delivered to me by the news server
> I use contained no such characters,

Given that the example was apparently as shown in a book I doubt there
were nonprintable characters. My guess is that Edward Nilges was
making a joke or that he was guessing.

Errors?

1. Neither \n nor other whitespace printed between each balance.
2. MAX_SIZE balances processed even if there are fewer.
3. The =3D+ should probably be +=3D.

James
0
Reply James 4/7/2010 3:42:27 PM

On 7 Apr, 13:40, Nick Keighley <nick_keighley_nos...@hotmail.com>
wrote:
> On 6 Apr, 16:30, Seebs <usenet-nos...@seebs.net> wrote:
>
> > The chief flaw in C:TCN is that in doesn't give enough of the examples =
-- but
> > not that it overclaims. =A0It underclaims, and fairly seriously so.
>
> that is more and more looking like its major flaw. If CTCN was updated
> it would be *more* devastating.

Judging by the faults Richard is finding and, most importantly, Edward
is neither challenging nor refuting, it's beginning to look like an
updated CTCN would be as long as the book it is criticising!

James
0
Reply James 4/7/2010 3:45:13 PM

Seebs <usenet-nospam@seebs.net> writes:
[...]
> Flipped around a bit, found a new example.  4th edition, page 264:
>
> 	#define MAX_SIZE 100
> 	/* ... */
> 	float balance[MAX_SIZE];
> 	/* ... */
> 	for(i=0; i<MAX_SIZE; i++) printf("%f", balance[i]);
> 	/* ... */
> 	for(i=0; i<MAX_SIZE; i++) x =+ balance[i];
>
> The reader is encouraged to try to spot errors.  I only found two; can
> you do better?
>
> (Note that the last line of the above example wasn't present in the 3rd
> edition, where the example appears on page 262, but the other problem
> existed then too.)
[...]

The use of "=+" is interesting.

Very early versions of C (pre-K&R1) used "=+" as a compound assignment
operator, and likewise for the the others ("=-", "=*", etc.).  These
were switched to their modern forms ("+=", "-=", "*=") because of
things like
    i=-1;
which, under the old rules, would decrement i rather than assigning
the value -1 to i.

The statement
    x =+ balance[i];
is syntactically correct; it means
    x = +balance[i];

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/7/2010 4:11:33 PM

On 2010-04-07, Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:
> On the other hand if some of your criticisms are wrong, are pretty
> clearly shown to be wrong, and you persist in insisting that they are
> right, then you lack credibility as a critic.

Oh, totally agreed.  However, you simply haven't shown that they were
wrong.  You've shown that one of them relies on a questionable interpretation
of English, which I grant.

But the bulk of the complaints are not wrong, and are not things that can
be explained away as simple typos.

Furthermore, as demonstrated by the 4th edition:

SCHILDT GRANTS THAT THE CRITICISMS ARE CORRECT.

Look specifically at my criticism of getchar() (page 314 in the 3rd edition).

In the 3rd edition, the described sentence was present in both getchar()
and getc().  (I do not consider the duplication of text between functions to
be a bug; this is a reference, and each entry should be reasonably
self-contained.) 

In the 4th edition, the one I complained about was removed, but the identical
sentence in the description of getc() was not.

So we have it from the horse's mouth:  The criticisms were, by and large,
valid, and most of them have been "corrected" by Schildt.  Sadly, he didn't
understand them -- the example code for getchar() is still useless, in the
same way it used to be.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 4:41:46 PM

On 2010-04-07, Nick Keighley <nick_keighley_nospam@hotmail.com> wrote:
>[spinny]
>> Just blank the page, Peter, and this matter will disappear and be
>> forgotten.

> I assure you it won't.

> I don't think your sort of harrassment should be allowed to succeed.

Oh, it's succeeded.

I have, at last count, 7,869 words of much more carefully researched material
on the current edition of Schildt's books, showing that not only does he still
not understand basic C features and functionality, but that he himself
accepted my criticisms of the previous book -- but didn't understand them
well enough to apply their logical conclusions.  :)

I'm having some folks review it for a bit before I post it.

But I assure you, once I have a much better-written, much more comprehensive,
article explaining just how much Schildt's books suck, I will happily alter
the old one to indicate that it is incomplete and based on an older edition.

I wouldn't want Nilges to think that his pleadings have gone unheard.  He
has, in fact, motivated me to action -- it's taken several hours to produce
the new document.  :)

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 4:44:30 PM

On 2010-04-07, Nick Keighley <nick_keighley_nospam@hotmail.com> wrote:
> On 7 Apr, 06:54, spinoza1111 <spinoza1...@yahoo.com> wrote:
>> > 2. �Yes, he calls the parameter "end" rather than "endptr".
>> > 3. �Yes, he is completely missing the distinction between "end" and
>> > "the pointer pointed to by end".

>> It is common to collapse this distinction temporarily in teaching.

I cannot tell whether this is better termed "Nilgewater" or "Bullschildt".

But it clearly ought to be one or the other.

> and when does he undo this particular example of lying to children?

He doesn't.

> The trouble with giving wrong examples is they later have to be
> unlearned

To be fair, the *example* is correct (if useless).  However, the
*description* is incorrect.

And worse, the example appears to illustrate the incorrect description.
You have to realize that he has, without warning, repurposed the name
"end", to understand that the example shows that the description is wrong.

>> > 5. �The following example does indeed use a local variable "char *end"
>> > and then pass &end to strtol.

>> Translation: it is correct.

The example, yes, is correct.

>> > 6. �So yes, the example "works" (nevermind the gets, etc., problems)...
>> > 7. �But it's extremely confusing, and hopeless for a newbie trying to
>> > follow along and wondering what "end" is and what it points to.

>> Don't speak for the newbie. You're not a newbie. How would you know
>> what the knewbie kneeds to know?

> some of us have memories. I remember being a child and I remember
> being a newbie.

I also remember what it was like to be a newbie, and spend a lot of time
working with newbies to help them understand things.

>> and we have learned that you produce code that is far
>> less competent. We're tired of you wasting bandwidth and patience.

> "we are a grandmother!"
> Margaret Hilda Thatcher

Heh.

More importantly, the best he's come up with for showing that my code is
"far less competent" is that he didn't know how switch() works in C and
couldn't comprehend standard idioms.  Oh, poor wounded me.  My reputation
is in tatters.

I'll take "over a year in production with exactly one failure which was
caused by a user error" over approval by Nilges any day.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 4:48:18 PM

On 2010-04-07, blmblm  myrealbox.com <blmblm@myrealbox.com> wrote:
> Strange.  The copy of Seeb's post delivered to me by the news server
> I use contained no such characters, and when I saved the code in a
> file and added appropriate declarations, etc. (without changing the
> above lines), it compiled fine.  Could Google's interface be adding
> those invisible(?) characters?

So far as I know, yes.  It has to use special "non-breaking spaces"
to handle indentation in some cases, because plain spaces don't
indent as expected.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 4:49:15 PM

On 2010-04-07, Nick Keighley <nick_keighley_nospam@hotmail.com> wrote:
> On 6 Apr, 16:30, Seebs <usenet-nos...@seebs.net> wrote:
>> The chief flaw in C:TCN is that in doesn't give enough of the examples -- but
>> not that it overclaims. �It underclaims, and fairly seriously so.

> that is more and more looking like its major flaw. If CTCN was updated
> it would be *more* devastating.

It is.  I'm gonna try very hard not to expand past 10,000 words, though!

>    Pretty much all the examples commit the following basic errors
>        - incorrect bracketing of standard headers
>        - incorrect return value from main()
>        - non-portable value passed to exit()

> I nearly said "insufficient error checking" but I think that needs to
> be tackled on a case by case basis

He's better about those in the current version.  I haven't found a "stdio.h"
anywhere, only <stdio.h>.  I'm unsure about the value of pursuing the
"exit(1)" idiom; it's technically wrong, but at this point I'm inclined to
just admit that this is clearly a Windows programming book.  He removed both
the DOS and UNIX interfaces in the 4th edition, so far as I can see.  (I
like that in the 3rd edition, he said the Unix-like interface was "expected
to decline in popularity".  Whoops, Linux!)

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 4:51:34 PM

On 2010-04-07, James Harris <james.harris.1@googlemail.com> wrote:
> Judging by the faults Richard is finding and, most importantly, Edward
> is neither challenging nor refuting, it's beginning to look like an
> updated CTCN would be as long as the book it is criticising!

I would guess longer.  The error density, when things go wrong, is AMAZING.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 4:52:34 PM

Seebs wrote:
) On 2010-04-07, blmblm  myrealbox.com <blmblm@myrealbox.com> wrote:
)> Strange.  The copy of Seeb's post delivered to me by the news server
)> I use contained no such characters, and when I saved the code in a
)> file and added appropriate declarations, etc. (without changing the
)> above lines), it compiled fine.  Could Google's interface be adding
)> those invisible(?) characters?
)
) So far as I know, yes.  It has to use special "non-breaking spaces"
) to handle indentation in some cases, because plain spaces don't
) indent as expected.

What's wrong with <pre> tags ?


SaSW, Willem
-- 
Disclaimer: I am in no way responsible for any of the statements
            made in the above text. For all I know I might be
            drugged or something..
            No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
0
Reply Willem 4/7/2010 4:57:20 PM

On 2010-04-07, Willem <willem@turtle.stack.nl> wrote:
> Seebs wrote:
> ) On 2010-04-07, blmblm  myrealbox.com <blmblm@myrealbox.com> wrote:
> )> Strange.  The copy of Seeb's post delivered to me by the news server
> )> I use contained no such characters, and when I saved the code in a
> )> file and added appropriate declarations, etc. (without changing the
> )> above lines), it compiled fine.  Could Google's interface be adding
> )> those invisible(?) characters?

> ) So far as I know, yes.  It has to use special "non-breaking spaces"
> ) to handle indentation in some cases, because plain spaces don't
> ) indent as expected.

> What's wrong with <pre> tags ?

Who knows?  But I don't think they use them.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 5:38:28 PM

On Apr 8, 12:41=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-07, Malcolm McLean <malcolm.mcle...@btinternet.com> wrote:
>
> > On the other hand if some of your criticisms are wrong, are pretty
> > clearly shown to be wrong, and you persist in insisting that they are
> > right, then you lack credibility as a critic.
>
> Oh, totally agreed. =A0However, you simply haven't shown that they were
> wrong. =A0You've shown that one of them relies on a questionable interpre=
tation
> of English, which I grant.

There are usually n>1 interpretations of any English text. None of
them necessarily "questionable".

Furthermore, we have show that only six of your errata out of 20 are
correct. We have also shown your claim that "the 'heap' is a DOS term"
to be wrong.

Time for you to call it a day. Blank the page or put wording at the
top saying that your information is controversial and applies to an
old edition. Then remove the Reception section in Wikipedia. Then
send me email certifying you have done so. Wouldn't mind if that email
contained an apology to me, but that is optional. Then it will all be
over and you can return to finding, or missing, compiler bugs as the
case may be.

>
> But the bulk of the complaints are not wrong, and are not things that can
> be explained away as simple typos.

No, only 6 were genuine errata.
>
> Furthermore, as demonstrated by the 4th edition:
>
> SCHILDT GRANTS THAT THE CRITICISMS ARE CORRECT.

Extra! Extra! Read all about it!

Give me a break. The 6 out of 20 errata could have been found by any
competent programmer as well as by you, with your sharp (but not
nearly as sharp as Ben's) eye for the failings of the Other (as
opposed to your lack of awareness of your own failings). They probably
were known issues before you wrote your vanity slam.

>
> Look specifically at my criticism of getchar() (page 314 in the 3rd editi=
on).
>
> In the 3rd edition, the described sentence was present in both getchar()
> and getc(). =A0(I do not consider the duplication of text between functio=
ns to
> be a bug; this is a reference, and each entry should be reasonably
> self-contained.)
>
> In the 4th edition, the one I complained about was removed, but the ident=
ical
> sentence in the description of getc() was not.
>
> So we have it from the horse's mouth: =A0The criticisms were, by and larg=
e,
> valid, and most of them have been "corrected" by Schildt. =A0Sadly, he di=
dn't
> understand them -- the example code for getchar() is still useless, in th=
e
> same way it used to be.

No, only 6 out of 20 were.

Get over it.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/7/2010 7:06:40 PM

On Apr 8, 12:52=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-07, James Harris <james.harri...@googlemail.com> wrote:
>
> > Judging by the faults Richard is finding and, most importantly, Edward
> > is neither challenging nor refuting, it's beginning to look like an
> > updated CTCN would be as long as the book it is criticising!
>
> I would guess longer. =A0The error density, when things go wrong, is AMAZ=
ING.

Richard and Seebach are in desparation mode. Omission of obviously
needed variables in a code example is NOT AN ERROR. As Malcolm has
pointed out, they are examples. You need a few brains to make them
work, and no normal, non-psychotic person makes this big a deal.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/7/2010 7:08:26 PM

Willem <willem@turtle.stack.nl> wrote:

> Seebs wrote:
> ) On 2010-04-07, blmblm  myrealbox.com <blmblm@myrealbox.com> wrote:
> )> Strange.  The copy of Seeb's post delivered to me by the news server
> )> I use contained no such characters, and when I saved the code in a
> )> file and added appropriate declarations, etc. (without changing the
> )> above lines), it compiled fine.  Could Google's interface be adding
> )> those invisible(?) characters?
> )
> ) So far as I know, yes.  It has to use special "non-breaking spaces"
> ) to handle indentation in some cases, because plain spaces don't
> ) indent as expected.
> 
> What's wrong with <pre> tags ?

They don't work on Usenet.

But then, neither does Google.

Richard
0
Reply raltbos 4/7/2010 7:12:41 PM

On Apr 8, 12:51=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-07, Nick Keighley <nick_keighley_nos...@hotmail.com> wrote:
>
> > On 6 Apr, 16:30, Seebs <usenet-nos...@seebs.net> wrote:
> >> The chief flaw in C:TCN is that in doesn't give enough of the examples=
 -- but
> >> not that it overclaims. =A0It underclaims, and fairly seriously so.
> > that is more and more looking like its major flaw. If CTCN was updated
> > it would be *more* devastating.
>
> It is. =A0I'm gonna try very hard not to expand past 10,000 words, though=
!
>
> > =A0 =A0Pretty much all the examples commit the following basic errors
> > =A0 =A0 =A0 =A0- incorrect bracketing of standard headers
> > =A0 =A0 =A0 =A0- incorrect return value from main()
> > =A0 =A0 =A0 =A0- non-portable value passed to exit()
> > I nearly said "insufficient error checking" but I think that needs to
> > be tackled on a case by case basis
>
> He's better about those in the current version. =A0I haven't found a "std=
io.h"
> anywhere, only <stdio.h>. =A0I'm unsure about the value of pursuing the
> "exit(1)" idiom; it's technically wrong, but at this point I'm inclined t=
o
> just admit that this is clearly a Windows programming book. =A0He removed=
 both
> the DOS and UNIX interfaces in the 4th edition, so far as I can see. =A0(=
I
> like that in the 3rd edition, he said the Unix-like interface was "expect=
ed
> to decline in popularity". =A0Whoops, Linux!)

This is the basic problem. You define what it is you want to work with
and you don't play well with others. In fact, my research has
confirmed that you have a problem working with others in general. I
won't go into any detail on this in order to respect your privacy in a
way mine has not been respected by you; suffice it to say I have
examined material in the public view only.

You believe that using Linux makes you special. This is in fact a form
of white racism which has infected computing because the dirty little
secret is that by staying away from Windows you stay away from Windows
users, who are increasingly and in a global sense nonwhite, while
Linux's affiliation with universities codes this in your mind as a
"white" system.

You also demand a "white" privilege of defining the rules of success.
If another person, especially someone affiliated with the "nonwhite"
aspect of Windows, makes a mistake, you infer that he doesn't know his
job by fitting your interpretation to the desired result. Whereas when
you make a silly mistake (unstructured and unnecessary fallthrough in
switch(), off by one in one line of code, not finding %s, etc.) your
theory of your specialness (which I'm afraid to say has a racial
component) means that this must be explained by a fashionable disease,
fashionable that is to say in wealthier and whiter *arondissements*
and school districts, while students with the equivalent attention
disorder in minority districts receive no such privileged diagnosis
and wind up at best in my old classes in Visual Basic at Devry (with
sixty students in the class) or in prison.

The zaniest consequence is that you want Herb to code in a way that
would be far more opaque than mine, which is unfamiliar to you simply
because it's superior to your crap. You want him to refer to what the
Windows C Sharp user, who's learning C in order to maintain some code,
knows as a "long integer" as a "long long integer", which is just
silly. You want him to return values that Windows will toss in the
garbage. You want him to pretend that Windows is Linux, which at best
is an insult to Linux, isn't it?

I suggest you take a deep breath and either blank CTCN or insert a
disclaimer at the top, remove the Reception section in his wikipedia
entry, send me email confirming that this has been done. I am fairly
confident that you are in no wise able to put together an acceptable
or complete new list of errata in any reasonable amount of time, but
if you attempt this, I shall resume my criticism of your dreck in the
fashion I criticised it this week, line by line, sparing you no
applicable humiliation. I suggest you find another hobby, such as
night school in computer science.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/7/2010 7:28:25 PM

On Apr 8, 12:48=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-07, Nick Keighley <nick_keighley_nos...@hotmail.com> wrote:
>
> > On 7 Apr, 06:54,spinoza1111<spinoza1...@yahoo.com> wrote:
> >> > 2. =A0Yes, he calls the parameter "end" rather than "endptr".
> >> > 3. =A0Yes, he is completely missing the distinction between "end" an=
d
> >> > "the pointer pointed to by end".
> >> It is common to collapse this distinction temporarily in teaching.
>
> I cannot tell whether this is better termed "Nilgewater" or "Bullschildt"=
..
>
> But it clearly ought to be one or the other.
>
> > and when does he undo this particular example of lying to children?
>
> He doesn't.
>
> > The trouble with giving wrong examples is they later have to be
> > unlearned
>
> To be fair, the *example* is correct (if useless). =A0However, the
> *description* is incorrect.
>
> And worse, the example appears to illustrate the incorrect description.
> You have to realize that he has, without warning, repurposed the name
> "end", to understand that the example shows that the description is wrong=
..
>
> >> > 5. =A0The following example does indeed use a local variable "char *=
end"
> >> > and then pass &end to strtol.
> >> Translation: it is correct.
>
> The example, yes, is correct.
>
> >> > 6. =A0So yes, the example "works" (nevermind the gets, etc., problem=
s)...
> >> > 7. =A0But it's extremely confusing, and hopeless for a newbie trying=
 to
> >> > follow along and wondering what "end" is and what it points to.
> >> Don't speak for the newbie. You're not a newbie. How would you know
> >> what the knewbie kneeds to know?
> > some of us have memories. I remember being a child and I remember
> > being a newbie.
>
> I also remember what it was like to be a newbie, and spend a lot of time
> working with newbies to help them understand things.
>
> >> and we have learned that you produce code that is far
> >> less competent. We're tired of you wasting bandwidth and patience.
> > "we are a grandmother!"
> > Margaret Hilda Thatcher
>
> Heh.
>
> More importantly, the best he's come up with for showing that my code is
> "far less competent" is that he didn't know how switch() works in C and
> couldn't comprehend standard idioms. =A0Oh, poor wounded me. =A0My reputa=
tion
> is in tatters.

You are lying. I know how case works since I've written compiler code
to parse and generate object code for case statements. Have you? I am
also aware that switch was incredibly poorly designed by the standards
even of 1969, since it failed, three years after Bohm and Jacoponi
proved that three control structures suffice and two years after
Dijkstra published "Go To Considered Harmful" in JACM for August 1968,
to be structured and allowed "fallthrough" although common logic is
better handled by function calls, inline, or preprocessor macros. This
poor design, and your incompetence, causes your queue.c code to
misleadingly seem to handle invalid ack and nak from or in clients,
leading the program reader (who knows like me how you need a break to
avoid fallthrough) to nonetheless waste his time in trying to find out
why you included ack and nak (after two months "work") in the first
place.

Yes, your reputation is in tatters with the people here who matter,
and who know their trade, as opposed to self-serving little corporate
dweebs who post nonsense about computer books, pay their way onto
standards boards, and backstab to get what they want.

It's only going to get worse, Peter. To the dispassionate observer, I
come across in code, in prose, and even in original poetry as the
person here who can write because he knows his trade. Word to the
wise: lawyers tend to like my style. Nuf ced?

I realize I might have what blm would probably consider a
"communications problem" with little creeps like you and in the
corporate playbook I'm supposed to dumb down. Well, I don't have to
and I won't. I'll end my days in a Bangkok whorehouse first.

> I'll take "over a year in production with exactly one failure which was
> caused by a user error" over approval by Nilges any day.

Hmm, a "failure" caused by a "user error". You know, Dweebach, the
most uncharitable but quite possibly true interpretation of this was
that the "failure" was not an error message on the server and a
graceful termination. No, based on your failure in queue.c to
initialize db_header followed by a nested if statement which assigned
it only if certain preconditions were true, my guess is that this
"failure" was quite spectacular. It is only a pity that it isn't the
old days when there would have been smoke and flames.

Flame and smoke, smoke and flame
Oh how nice, we have the user to blame

And I wouldn't break my arm patting myself on the back. FYI, in my
salad days, when I could abide working with lower middle class dweebs
because I liked programming just enough, I had to produce tens of such
programs including a compiler and microassembler, in one month, and it
didn't uh crash owing to unexpected input from the "user". Learn your
trade: a good program does not "fail" on user error. It does something
graceful to prevent further harm such as returning void, or zero, or
-1, to the OS. If you hadn't wasted half your life on shibboleth and
back-stabbing you'd know this by now.

Besides, if it didn't fail, did it produce the correct "answers"? Or
did it just cheerfully run, leaking memory and using (in something
like the uninitalized db_header in your famous queue.c) uninitialized
data which was Nul most of the time? Wir sagt?

Just blank CTCN, or insert a disclaimer at the top, remove the
Reception section in the wikipedia article and confirm you have done
so, and quit fucking around.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/7/2010 7:52:01 PM


spinoza1111 wrote:

>

snipped personal vendetta rant...

> I am fairly
> confident that you are in no wise able to put together an acceptable
> or complete new list of errata in any reasonable amount of time, but
> if you attempt this, I shall resume my criticism of your dreck in the
> fashion I criticised it this week, line by line, sparing you no
> applicable humiliation.

In search of truth I assume that you acknowledge the
Richard Heathfield's and other posters comments on
the Schildt's books are correct. If not why not.

Have you got the basic disapline to actually seek the
truth?

0
Reply Walter 4/7/2010 8:01:52 PM

On Apr 8, 12:44=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-07, Nick Keighley <nick_keighley_nos...@hotmail.com> wrote:
>
> >[spinny]
> >> Just blank the page, Peter, and this matter will disappear and be
> >> forgotten.
> > I assure you it won't.
> > I don't think your sort of harrassment should be allowed to succeed.
>
> Oh, it's succeeded.
>
> I have, at last count, 7,869 words of much more carefully researched mate=
rial
> on the current edition of Schildt's books, showing that not only does he =
still
> not understand basic C features and functionality, but that he himself
> accepted my criticisms of the previous book -- but didn't understand them
> well enough to apply their logical conclusions. =A0:)
>
> I'm having some folks review it for a bit before I post it.
>
> But I assure you, once I have a much better-written, much more comprehens=
ive,
> article explaining just how much Schildt's books suck, I will happily alt=
er
> the old one to indicate that it is incomplete and based on an older editi=
on.
>
> I wouldn't want Nilges to think that his pleadings have gone unheard. =A0=
He
> has, in fact, motivated me to action -- it's taken several hours to produ=
ce
> the new document. =A0:)

(Sigh) If you post a new document:

1.  Questions will still remain at wikipedia how you misled them with
the old document for fifteen years, violating their Biographies of
Living Persons policies with maliciously false information that
endangers them, because it appeared to be about the current edition,
which has been in print for a long time. I will be delighted as their
sacred monster to illumine them on the sordid details of your actual
competence and conduct. Since Jimmy Wales, apparently, has seen fit to
post at my wordpress blog, his administrative assistant will probably
forward my emails to him for action, but failing this, I can always go
in on an anonymous IP address and modify the wikipedia article with a
"source of reception" section that will, I assure you, contain just
enough information about your competence and conduct to not be in turn
libel in any way, but will discredit the Schildt canard once and for
all.

2.  I will also go through the new document line by line and once
again expose your lack of education in computer science and low
English skills.

Peter: you don't need this. Your employer doesn't need this. It's a
waste of your time and mine. Just blank CTCN or put a disclaimer at
the top, change the wikipedia article, STOP POSTING ABOUT SCHILDT, and
send me email confirming that you have and will do this.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/7/2010 8:03:56 PM

On 2010-04-07, Walter Banks <walter@bytecraft.com> wrote:
> Have you got the basic disapline to actually seek the
> truth?

I have no idea whether he does.  I do, and I have indeed got an early
draft, which I've forwarded to a few experts in the field for feedback
and analysis.

I really do owe credit to Malcom McLean, for making the very good point that
it is possible to have a bad criticism of a bad book.  C:TCN is not a
well-written or well-structured piece.  The quotes are too small to give
clear context, the explanations of what's wrong aren't long enough to give
a real understanding of the problems, and so on.  Sure, it's fine for an
expert reader, but the expert reader wouldn't need anything but the quotes
from C:TCR to see the problems.

So I'm doing a new one, based in no small part on the "random page game"
people have been playing here, as well as some more detailed analysis.  In
this case, I'm taking the time and effort to seriously clean things up,
give real explanations of what's wrong, and so on.  (Next thing I need to
do, apart from some more organizational work, is start adding the specific
citations to the standard to illustrate some of the issues, because a
number of them depend on knowledge of the language far beyond what Schildt
or his prospective readers have.)

But as I expected, what comes out in a more careful study is:

1.  The book is much worse than I thought it was.  I genuinely thought it
was merely careless and badly presented before.  I am now convinced, based
on study of not only the text itself, but the way Schildt changed it
between the 3rd and 4th editions, that Schildt genuinely *does not
understand* many of the things he's getting wrong.  This isn't just bad
phrasing; he clearly doesn't understand how EOF works in C, for instance.

2.  This book is not merely unaccaptable as a reference, it is also a
shoddy tutorial.  Time and time again, a single paragraph of decently-written
text would have done wonders for allowing a reader to understand and address
a prospective problem, but Schildt simply ignored the opportunity.  Probably,
based on what I've seen, because he did not understand the issue himself.

3.  I am obliged to, sort of, grant one point to Nilges.  Having studied
the book more, I think I am obliged to retract the claim that it is "clear".
The writing is fairly approachable, but is full of ambiguities, vagueness,
and handwaving.  Back in the day, I thought it much better, because I
didn't have the experience to distinguish between "this book clearly describes
X" and "after seeing this book's reference to X, I have a clear understanding
of X".  The latter indicates only prior knowledge, not the book's quality.

But I must congratulate Mr. Nilges.  After a mere 7 months of frothing,
raving, incoherence, he has managed to persuade me (with some help) that
the deficiencies in C:TCN justify taking the time to update and improve
it.  On the down side (for him, anyway), it turns out that the real problem
was that I had vastly understated the scope, depth, and severity of the
flaws in the text.  This will be corrected.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 8:16:39 PM

Seebs <usenet-nospam@seebs.net> writes:
[...]
> But I must congratulate Mr. Nilges.  After a mere 7 months of frothing,
> raving, incoherence, he has managed to persuade me (with some help) that
> the deficiencies in C:TCN justify taking the time to update and improve
> it.  On the down side (for him, anyway), it turns out that the real problem
> was that I had vastly understated the scope, depth, and severity of the
> flaws in the text.  This will be corrected.

I encourage you to retain the existing version of the web page,
either unchanged or with a small number of clearly marked
annotations.  I find it to be of historical interest.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/7/2010 8:53:15 PM

On 2010-04-07, Keith Thompson <kst-u@mib.org> wrote:
> Seebs <usenet-nospam@seebs.net> writes:
> [...]
>> But I must congratulate Mr. Nilges.  After a mere 7 months of frothing,
>> raving, incoherence, he has managed to persuade me (with some help) that
>> the deficiencies in C:TCN justify taking the time to update and improve
>> it.  On the down side (for him, anyway), it turns out that the real problem
>> was that I had vastly understated the scope, depth, and severity of the
>> flaws in the text.  This will be corrected.

> I encourage you to retain the existing version of the web page,
> either unchanged or with a small number of clearly marked
> annotations.  I find it to be of historical interest.

Oh, certainly.  I'll keep it with notes on the historical relevance.

Especially given that Schildt seems to have specifically addressed things
covered in that document, while not addressing identical errors on adjacent
pages in his book... That makes it more than just a little interesting.

I'm probably gonna need another day or two of free time to get this properly
written up.  People who'd like to review it are invited to contact me.  (And
no, Nilges, you don't count; I'm looking for people who are basically lucid
and capable of reading at least one of English or C with reasonable
comprehension.)

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 9:28:43 PM

On 7 Apr, 21:16, Seebs <usenet-nos...@seebs.net> wrote:
>
> 1. =A0The book is much worse than I thought it was. =A0I genuinely though=
t it
> was merely careless and badly presented before. =A0I am now convinced, ba=
sed
> on study of not only the text itself, but the way Schildt changed it
> between the 3rd and 4th editions, that Schildt genuinely *does not
> understand* many of the things he's getting wrong. =A0This isn't just bad
> phrasing; he clearly doesn't understand how EOF works in C, for instance.
>
If what you say is right then we've actually discovered something very
interesting. The books sell well, and are into edition 4. So either
there are a lot of deluded people out there, or technical accuracy
really isn't so important in a programming book. Either statement
seems hard to swallow, but one must be correct. I'd go for the second.
I think if the book really wasn't an effective tutorial/reference,
then no amount of slick marketing and readable prose would have made
it successful in the marketplace. So it must be that people find it
useful.

0
Reply Malcolm 4/7/2010 9:37:33 PM

On Apr 7, 3:37=A0pm, Malcolm McLean <malcolm.mcle...@btinternet.com>
wrote:
> On 7 Apr, 21:16, Seebs <usenet-nos...@seebs.net> wrote:
>
> > 1. =A0The book is much worse than I thought it was. =A0I genuinely thou=
ght it
> > was merely careless and badly presented before. =A0I am now convinced, =
based
> > on study of not only the text itself, but the way Schildt changed it
> > between the 3rd and 4th editions, that Schildt genuinely *does not
> > understand* many of the things he's getting wrong. =A0This isn't just b=
ad
> > phrasing; he clearly doesn't understand how EOF works in C, for instanc=
e.
>
> If what you say is right then we've actually discovered something very
> interesting. The books sell well, and are into edition 4. So either
> there are a lot of deluded people out there, or technical accuracy
> really isn't so important in a programming book. Either statement
> seems hard to swallow, but one must be correct. I'd go for the second.
> I think if the book really wasn't an effective tutorial/reference,
> then no amount of slick marketing and readable prose would have made
> it successful in the marketplace. So it must be that people find it
> useful.

One of the most popular books ever on personal finances is _Rich Dad,
Poor Dad_.  A bit of study shows it to be of extremely low quality,
but it remains popular.  I vote for option 1.
0
Reply BruceS 4/7/2010 9:40:57 PM

On 7 Apr, 11:38, Alexander Bartolich <alexander.bartol...@gmx.at>
wrote:
> Nick Keighley wrote:


> > aren't &=3D |=3D ^=3D logical assignment operators?
>
> The standard calls
> =A0 & the "bitwise AND operator"
> =A0 | the "bitwise inclusive OR operator"
> =A0 ^ the "bitwise exclusive OR operator"
>
> There are also logical operators, but they are different.
> =A0 && is the "logical AND operator"
> =A0 || is the "logical OR operator"
>
> So, no, there are no "logical assignment operators" in C.
> (The standard speaks of "compound assignment".)

I must be misunderstanding

    x &=3D 0xf;

is a valid C statement, yes? Are you just arguing terminology?



0
Reply Nick 4/7/2010 10:11:56 PM

On 2010-04-07, Malcolm McLean <malcolm.mclean5@btinternet.com> wrote:
> If what you say is right then we've actually discovered something very
> interesting. The books sell well, and are into edition 4. So either
> there are a lot of deluded people out there, or technical accuracy
> really isn't so important in a programming book. Either statement
> seems hard to swallow, but one must be correct. I'd go for the second.

It's not just technical accuracy; it's that the writing is also much worse
than I thought.

> I think if the book really wasn't an effective tutorial/reference,
> then no amount of slick marketing and readable prose would have made
> it successful in the marketplace. So it must be that people find it
> useful.

I don't agree.  Useless books can sell extremely well if they look like
they *will* be useful.  I have bought a great number of books which looked
good on an initial page-through in the store, but turned out to be completely
worthless for learning a topic.

Keep in mind, the positive reviews of this book nearly always come from people
who picked it to learn C and have a short amount of experience.  Now combine
that with the Dunning-Kruger effect and you see the problem; people who don't
understand C well enough to know whether or not they've learned it think this
book does a great job of teaching them C.

Once you actually know the language a bit better, the errors start popping
out at you, but by that time, you've long since forgotten that eight years
ago you posted a positive review on Amazon.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 10:20:11 PM

On 2010-04-07, Nick Keighley <nick_keighley_nospam@hotmail.com> wrote:
> On 7 Apr, 11:38, Alexander Bartolich <alexander.bartol...@gmx.at>
> wrote:
>> Nick Keighley wrote:
>> > aren't &= |= ^= logical assignment operators?

>> The standard calls
>> � & the "bitwise AND operator"
>> � | the "bitwise inclusive OR operator"
>> � ^ the "bitwise exclusive OR operator"

>> There are also logical operators, but they are different.
>> � && is the "logical AND operator"
>> � || is the "logical OR operator"

>> So, no, there are no "logical assignment operators" in C.
>> (The standard speaks of "compound assignment".)

> I must be misunderstanding

>     x &= 0xf;

> is a valid C statement, yes? Are you just arguing terminology?

I think so.  That's a bitwise compound assignment, but it's not a logical
compound assignment.

Since &&/|| are "logical operators", I would expect a "logical assignment
operator" to be "&&=".

In other words,

	x &= 0xf;	/* strip out bits other than 0xf from x */
	x &&= 0xf;	/* x = 1 if x is not 0 */

The latter would be a logical assignment operator, but doesn't exist.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 10:21:48 PM

On 7 Apr, 17:44, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-07, Nick Keighley <nick_keighley_nos...@hotmail.com> wrote:
>
> >[spinny]
> >> Just blank the page, Peter, and this matter will disappear and be
> >> forgotten.
>
> > I assure you it won't.
> > I don't think your sort of harrassment should be allowed to succeed.
>
> Oh, it's succeeded.
>
> I have, at last count, 7,869 words of much more carefully researched mate=
rial
> on the current edition of Schildt's books, showing that not only does he =
still
> not understand basic C features and functionality, but that he himself
> accepted my criticisms of the previous book -- but didn't understand them
> well enough to apply their logical conclusions. =A0:)
>
> I'm having some folks review it for a bit before I post it.
>
> But I assure you, once I have a much better-written, much more comprehens=
ive,
> article explaining just how much Schildt's books suck, I will happily alt=
er
> the old one to indicate that it is incomplete and based on an older editi=
on.
>
> I wouldn't want Nilges to think that his pleadings have gone unheard. =A0=
He
> has, in fact, motivated me to action -- it's taken several hours to produ=
ce
> the new document. =A0:)

ah good. I didn't think you'd crack but lord he is persistent

0
Reply Nick 4/7/2010 10:38:11 PM

On 2010-04-07, Nick Keighley <nick_keighley_nospam@hotmail.com> wrote:
> ah good. I didn't think you'd crack but lord he is persistent

His persistance is giggle-inducing.  The crazier he gets, the funnier I
think he is.  Keep in mind, I used to spend happy afternoons browsing
crank.net.  If I'm hanging around with friends and I have wifi, I'll
look up things like people who have found new and more accurate values
for pi and talk about them until other people are sick of it.  :)

If we had a forum to communicate in which was neither private (I do not
wish to exchange communications with Nilges in a forum he can easily lie
about without getting caught) nor a waste of everyone else's time, I'd
probably spend a fair bit of time asking him questions just to try to figure
out how he thinks.  I didn't end up working in psychology professionally, but
I am still enthralled by the ways in which humans go mad*.

-s
[*]  Note that nearly all humans are at least a bit irrational around the
edges, myself included.  I find it all interesting.  I am also fascinated,
for instance, by the blind confidence most people have in their reading of
facial expressions, even though you can prove that most people aren't all
that good at it.
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/7/2010 10:44:48 PM

On 7 Apr, 20:52, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 8, 12:48=A0am, Seebs <usenet-nos...@seebs.net> wrote:

....

> Yes, your reputation is in tatters with the people here who matter,
> and who know their trade, as opposed to self-serving little corporate
> dweebs who post nonsense about computer books, pay their way onto
> standards boards, and backstab to get what they want.

This is more fantasy, Ed. ISTM that such conclusions of your success
take place within the confines of your own mind.

James
0
Reply James 4/7/2010 11:20:28 PM

On 7 Apr, 21:53, Keith Thompson <ks...@mib.org> wrote:
> Seebs <usenet-nos...@seebs.net> writes:
>
> [...]
>
> > But I must congratulate Mr. Nilges. =A0After a mere 7 months of frothin=
g,
> > raving, incoherence, he has managed to persuade me (with some help) tha=
t
> > the deficiencies in C:TCN justify taking the time to update and improve
> > it. =A0On the down side (for him, anyway), it turns out that the real p=
roblem
> > was that I had vastly understated the scope, depth, and severity of the
> > flaws in the text. =A0This will be corrected.
>
> I encourage you to retain the existing version of the web page,
> either unchanged or with a small number of clearly marked
> annotations. =A0I find it to be of historical interest.

I second that. Apart from adding a note on which edition it relates to
and a forwarding link to the new page few other changes are needed.

James
0
Reply James 4/7/2010 11:24:14 PM

On 7 Apr, 22:37, Malcolm McLean <malcolm.mcle...@btinternet.com>
wrote:
> On 7 Apr, 21:16, Seebs <usenet-nos...@seebs.net> wrote:
>
> > 1. =A0The book is much worse than I thought it was. =A0I genuinely thou=
ght it
> > was merely careless and badly presented before. =A0I am now convinced, =
based
> > on study of not only the text itself, but the way Schildt changed it
> > between the 3rd and 4th editions, that Schildt genuinely *does not
> > understand* many of the things he's getting wrong. =A0This isn't just b=
ad
> > phrasing; he clearly doesn't understand how EOF works in C, for instanc=
e.
>
> If what you say is right then we've actually discovered something very
> interesting. The books sell well, and are into edition 4. So either
> there are a lot of deluded people out there, or technical accuracy
> really isn't so important in a programming book. Either statement
> seems hard to swallow, but one must be correct. I'd go for the second.
> I think if the book really wasn't an effective tutorial/reference,
> then no amount of slick marketing and readable prose would have made
> it successful in the marketplace. So it must be that people find it
> useful.

Good point. What does make a book sell well? Some possiblities

* the author's prior reputation
* being part of a set by an author
* being part of a series of the publisher
* a good write-up on Amazon and other such retailers
* good presentation - e.g.
  - looks easy to read
  - looks fun to read
  - has lots of short examples
* targets a recognised qualification
* readable prose (as you mention)
* absence of competition

Not sure if any of these apply to Schildt's book.

James
0
Reply James 4/7/2010 11:36:37 PM

On 04/ 8/10 09:37 AM, Malcolm McLean wrote:
> On 7 Apr, 21:16, Seebs<usenet-nos...@seebs.net>  wrote:
>>
>> 1.  The book is much worse than I thought it was.  I genuinely thought it
>> was merely careless and badly presented before.  I am now convinced, based
>> on study of not only the text itself, but the way Schildt changed it
>> between the 3rd and 4th editions, that Schildt genuinely *does not
>> understand* many of the things he's getting wrong.  This isn't just bad
>> phrasing; he clearly doesn't understand how EOF works in C, for instance.
>>
> If what you say is right then we've actually discovered something very
> interesting. The books sell well, and are into edition 4. So either
> there are a lot of deluded people out there, or technical accuracy
> really isn't so important in a programming book. Either statement
> seems hard to swallow, but one must be correct. I'd go for the second.
> I think if the book really wasn't an effective tutorial/reference,
> then no amount of slick marketing and readable prose would have made
> it successful in the marketplace. So it must be that people find it
> useful.

I've seen the book recommended as the cheapest way to get a printed copy 
of the standard.  These recommendation often come with a caveat about 
the tutorial.

-- 
Ian Collins
0
Reply Ian 4/7/2010 11:54:56 PM

On 2010-04-07, Ian Collins <ian-news@hotmail.com> wrote:
> I've seen the book recommended as the cheapest way to get a printed copy 
> of the standard.  These recommendation often come with a caveat about 
> the tutorial.

That applies to _The Annotated ANSI C Standard_.  At the time, an official
copy of the standard cost about $120, and _The Annotated ANSI C Standard_
cost about $40.  Consensus was that this was a fair price to pay for the
annotations.

http://www.lysator.liu.se/c/schildt.html

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/8/2010 12:07:11 AM

On 2010-04-08, Ian Collins <ian-news@hotmail.com> wrote:
> On 04/ 8/10 12:07 PM, Seebs wrote:
> > http://www.lysator.liu.se/c/schildt.html

> Another amusing review...

Yes.  After studying the errors in C:TCR more carefully, though, I am
pretty sure that the problem is not so much lack of space for good
annotations, as that Schildt simply doesn't understand some of the advanced
material well enough to comment on it.  For instance, in C:TCR 4e (published
in 2000), we find that he still doesn't appear to understand the distinctions
between byte, character, and char.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/8/2010 12:21:28 AM

On 04/ 8/10 12:07 PM, Seebs wrote:
> On 2010-04-07, Ian Collins<ian-news@hotmail.com>  wrote:
>> I've seen the book recommended as the cheapest way to get a printed copy
>> of the standard.  These recommendation often come with a caveat about
>> the tutorial.
>
> That applies to _The Annotated ANSI C Standard_.  At the time, an official
> copy of the standard cost about $120, and _The Annotated ANSI C Standard_
> cost about $40.  Consensus was that this was a fair price to pay for the
> annotations.

Ah, my bad.

 > http://www.lysator.liu.se/c/schildt.html

Another amusing review...

-- 
Ian Collins
0
Reply Ian 4/8/2010 12:23:36 AM

On Apr 8, 8:21=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-08, Ian Collins <ian-n...@hotmail.com> wrote:
>
> > On 04/ 8/10 12:07 PM, Seebs wrote:
> > >http://www.lysator.liu.se/c/schildt.html
> > Another amusing review...
>
> Yes. =A0After studying the errors in C:TCR more carefully, though, I am
> pretty sure that the problem is not so much lack of space for good
> annotations, as that Schildt simply doesn't understand some of the advanc=
ed
> material well enough to comment on it. =A0For instance, in C:TCR 4e (publ=
ished
> in 2000), we find that he still doesn't appear to understand the distinct=
ions
> between byte, character, and char.

You need to stop making these inferences, because a computer text
including exemplary code is not a computer program and as such can be
interpreted >1 way. If we are so freely to speculate on another
person's knowledge without working with that person (you refused to
work with Schildt) I'd say that as a programmer you have no clue about
necessary abstraction, like many low-level paraprogrammers.

You see, programmers of real software have to program in such a way
that their code often works independent of "the distinctions between
byte, character and char" imposed by a crude and out of date
programming language, and you seem to have been misled by Herb's
somewhat higher ability to abstract.

When are you going to blank or insert a disclaimer in CTCN and modify
the Reception section in the wikipedia article?
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/8/2010 2:52:48 AM

On Apr 8, 8:23=A0am, Ian Collins <ian-n...@hotmail.com> wrote:
> On 04/ 8/10 12:07 PM, Seebs wrote:
>
> > On 2010-04-07, Ian Collins<ian-n...@hotmail.com> =A0wrote:
> >> I've seen the book recommended as the cheapest way to get a printed co=
py
> >> of the standard. =A0These recommendation often come with a caveat abou=
t
> >> the tutorial.
>
> > That applies to _The Annotated ANSI C Standard_. =A0At the time, an off=
icial
> > copy of the standard cost about $120, and _The Annotated ANSI C Standar=
d_
> > cost about $40. =A0Consensus was that this was a fair price to pay for =
the
> > annotations.
>
> Ah, my bad.
>
> =A0>http://www.lysator.liu.se/c/schildt.html
>
> Another amusing review...

No, this is a copycat drive-by that was instigated by Seebach's
garbage and in the same superficial style. It is very familiar as
having its own errors and is grandstanding. These two half-literate
attacks constitute the sole source of the Schildt canard. NO computer
scientist or author of note has participated in the Schildt canard.
>
> --
> Ian Collins

0
Reply spinoza1111 4/8/2010 2:55:20 AM

On Apr 8, 7:24=A0am, James Harris <james.harri...@googlemail.com> wrote:
> On 7 Apr, 21:53, Keith Thompson <ks...@mib.org> wrote:
>
> > Seebs <usenet-nos...@seebs.net> writes:
>
> > [...]
>
> > > But I must congratulate Mr. Nilges. =A0After a mere 7 months of froth=
ing,
> > > raving, incoherence, he has managed to persuade me (with some help) t=
hat
> > > the deficiencies in C:TCN justify taking the time to update and impro=
ve
> > > it. =A0On the down side (for him, anyway), it turns out that the real=
 problem
> > > was that I had vastly understated the scope, depth, and severity of t=
he
> > > flaws in the text. =A0This will be corrected.
>
> > I encourage you to retain the existing version of the web page,
> > either unchanged or with a small number of clearly marked
> > annotations. =A0I find it to be of historical interest.
>
> I second that. Apart from adding a note on which edition it relates to
> and a forwarding link to the new page few other changes are needed.
>
> James

If Seebach wishes to immortalize his incompetence and malice, the
clearest way would be to create a wikipedia article on this affair,
describing how a small number of the more intelligent posters on clc
got him to retract. That should be interesting.
0
Reply spinoza1111 4/8/2010 3:00:07 AM

On Apr 8, 6:44=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-07, Nick Keighley <nick_keighley_nos...@hotmail.com> wrote:
>
> > ah good. I didn't think you'd crack but lord he is persistent
>
> His persistance is giggle-inducing. =A0The crazier he gets, the funnier I
> think he is. =A0Keep in mind, I used to spend happy afternoons browsing
> crank.net. =A0If I'm hanging around with friends and I have wifi, I'll
> look up things like people who have found new and more accurate values
> for pi and talk about them until other people are sick of it. =A0:)
>
> If we had a forum to communicate in which was neither private (I do not
> wish to exchange communications with Nilges in a forum he can easily lie
> about without getting caught) nor a waste of everyone else's time, I'd
> probably spend a fair bit of time asking him questions just to try to fig=
ure
> out how he thinks. =A0I didn't end up working in psychology professionall=
y, but
> I am still enthralled by the ways in which humans go mad*.
>
> -s
> [*] =A0Note that nearly all humans are at least a bit irrational around t=
he
> edges, myself included. =A0I find it all interesting. =A0I am also fascin=
ated,
> for instance, by the blind confidence most people have in their reading o=
f
> facial expressions, even though you can prove that most people aren't all
> that good at it.
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

Hmm, in this regard, I've gotten you to admit a very serious error,
amounting to a malicious lie as in libel, for since 2000 you have had
control over a Web page that, quite apart from its own errors ("the
'heap' is a DOS term") describes only 6 errata and wastes the reader's
time with your silly opinions in the remaining 14 reports.

Guess I'll stay a crank.
0
Reply spinoza1111 4/8/2010 3:03:28 AM

On Apr 8, 6:20=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-07, Malcolm McLean <malcolm.mcle...@btinternet.com> wrote:
>
> > If what you say is right then we've actually discovered something very
> > interesting. The books sell well, and are into edition 4. So either
> > there are a lot of deluded people out there, or technical accuracy
> > really isn't so important in a programming book. Either statement
> > seems hard to swallow, but one must be correct. I'd go for the second.
>
> It's not just technical accuracy; it's that the writing is also much wors=
e
> than I thought.
>
> > I think if the book really wasn't an effective tutorial/reference,
> > then no amount of slick marketing and readable prose would have made
> > it successful in the marketplace. So it must be that people find it
> > useful.
>
> I don't agree. =A0Useless books can sell extremely well if they look like
> they *will* be useful. =A0I have bought a great number of books which loo=
ked
> good on an initial page-through in the store, but turned out to be comple=
tely
> worthless for learning a topic.
>
> Keep in mind, the positive reviews of this book nearly always come from p=
eople
> who picked it to learn C and have a short amount of experience. =A0Now co=
mbine
> that with the Dunning-Kruger effect and you see the problem; people who d=
on't
> understand C well enough to know whether or not they've learned it think =
this
> book does a great job of teaching them C.

If they think so they are right in any human sense. That is what books
and freedom of thought are all about. You want technology to be the
sort of Fascist state that you're too cowardly to ask for in the real
world, where people can be shamed over shibboleths as blacks were
forced to use separate rest rooms because you believe being affiliated
at a low level with Linux makes you a better programmer.

It does not. When I told David Hansen at Princeton that I'd been a
Cobol programmer, he said that he felt that using louche platforms can
make one better since one must solve more problems. This logic doesn't
always work.

But you have given us evidence that you can't code.

>
> Once you actually know the language a bit better, the errors start poppin=
g
> out at you, but by that time, you've long since forgotten that eight year=
s
> ago you posted a positive review on Amazon.

"Above all, do no harm." It is much worse, and may amount to a civil
cause of action, that ten years ago, a fourth edition corrected the
errors you identify yet you did not erase the review. A glowing review
of some book by some idiot is just free speech under the law. CTCN is
maliciously false libel as is the Reception section of the wikipedia
article insofar as that section is based on CTCN.

And when are you going to change CTCN? And correct wikipedia? Or are
you just lying?
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/8/2010 3:11:56 AM

On 7 Apr, 20:28, spinoza1111 <spinoza1...@yahoo.com> wrote:

> This is the basic problem. You define what it is you want to work with
> and you don't play well with others. In fact, my research has
> confirmed that you have a problem working with others in general. I
> won't go into any detail on this in order to respect your privacy in a
> way mine has not been respected by you; suffice it to say I have
> examined material in the public view only.
>
> You believe that using Linux makes you special. This is in fact a form
> of white racism which has infected computing because the dirty little
> secret is that by staying away from Windows you stay away from Windows
> users, who are increasingly and in a global sense nonwhite, while
> Linux's affiliation with universities codes this in your mind as a
> "white" system.

isn't Linux widely used by non-white people? Isn't Linux's I18N on a
par with Windows'?


> You also demand a "white" privilege of defining the rules of success.

<snip>

aren't you white?
0
Reply Nick 4/8/2010 7:25:34 AM

On 2010-04-08, Nick Keighley <nick_keighley_nospam@hotmail.com> wrote:
> On 7 Apr, 20:28, spinoza1111 <spinoza1...@yahoo.com> wrote:
>> You believe that using Linux makes you special. This is in fact a form
>> of white racism which has infected computing because the dirty little
>> secret is that by staying away from Windows you stay away from Windows
>> users, who are increasingly and in a global sense nonwhite, while
>> Linux's affiliation with universities codes this in your mind as a
>> "white" system.

> isn't Linux widely used by non-white people? Isn't Linux's I18N on a
> par with Windows'?

No offense, but is there any point in responding to a rant that illucid
with factual points?  I have no idea where Nilges gets the idea that I
think using Linux makes me special.  I don't even particularly like Linux.

But the pure noise component really dominates any kind of argumentation here.
What does "in a global sense" mean?  It means that Nilges has access to a
keyboard, and not much else.

>> You also demand a "white" privilege of defining the rules of success.

><snip>

> aren't you white?

Well, to be fair, doesn't he consistently demand the privilege of defining
the rules of success?  So I guess that's at least consistent with his other
behavior.

Me, I have no interest in "defining the rules of success".  I am a
descriptive, not a prescriptive, student of programming.  If something really
does work, I don't care whether it matches any particular theory.  (Contrast
with Nilges, whose cover story for not knowing how switch() works is that it's
not properly "structured".)  When I criticize non-portability, it's not
because I have any particular preference for portability *in and of itself*;
it's because my experience has taught me that portability offers a very
substantial return on time and effort invested in it, and in particular,
that writing for portability from the beginning is much cheaper than trying
to bolt it on later.

The rules of success are that if what you're doing works and allows you to
be successful, apparently that's a way of succeeding.  No interest in defining
that; it strikes me as a ludicrous effort.  It's like demanding the privilege
of defining the laws of physics.  You don't get a vote; physics is out there,
and you can cope or not.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/8/2010 7:49:50 AM

On 04/ 8/10 07:25 PM, Nick Keighley wrote:
> On 7 Apr, 20:28, spinoza1111<spinoza1...@yahoo.com>  wrote:
>
>> This is the basic problem. You define what it is you want to work with
>> and you don't play well with others. In fact, my research has
>> confirmed that you have a problem working with others in general. I
>> won't go into any detail on this in order to respect your privacy in a
>> way mine has not been respected by you; suffice it to say I have
>> examined material in the public view only.
>>
>> You believe that using Linux makes you special. This is in fact a form
>> of white racism which has infected computing because the dirty little
>> secret is that by staying away from Windows you stay away from Windows
>> users, who are increasingly and in a global sense nonwhite, while
>> Linux's affiliation with universities codes this in your mind as a
>> "white" system.
>
> isn't Linux widely used by non-white people? Isn't Linux's I18N on a
> par with Windows'?

Thanks for exposing that one Nick, it's a classic of its kind.

I wonder if the plonker knows where the first government drive to 
replace Windows with Linux happened?

<BBC mode>
By the way, other opensource operating systems are available.
</BBC mode>

-- 
Ian Collins
0
Reply Ian 4/8/2010 7:56:21 AM

On 6 Apr, 16:54, ImpalerCore <jadil...@gmail.com> wrote:
> On Apr 5, 4:58=A0pm, jacob navia <ja...@jacob.remcomp.fr> wrote:

[naviaisms]

> This is not the kind of attitude that will lead people to want to use
> your container library.

it seems an odd way to judge software. Do you only buy software from
people you like. presumably the success of the open source movement is
down entirely to Stallman's wit and charm.

0
Reply Nick 4/8/2010 8:35:39 AM

In article <slrnhrr2ku.s73.usenet-nospam@guild.seebs.net>,
 Seebs <usenet-nospam@seebs.net> wrote:

> The rules of success are that if what you're doing works and allows you to
> be successful, apparently that's a way of succeeding.  No interest in defining
> that; it strikes me as a ludicrous effort.  It's like demanding the privilege
> of defining the laws of physics.  You don't get a vote; physics is out there,
> and you can cope or not.

In short: Spinny is unable to deal with reality.

-- 
Tim

"That excessive bail ought not to be required, nor excessive fines imposed,
nor cruel and unusual punishments inflicted"  --  Bill of Rights 1689
0
Reply Tim 4/8/2010 8:37:39 AM

On Apr 8, 3:56=A0pm, Ian Collins <ian-n...@hotmail.com> wrote:
> On 04/ 8/10 07:25 PM, Nick Keighley wrote:
>
>
>
>
>
> > On 7 Apr, 20:28,spinoza1111<spinoza1...@yahoo.com> =A0wrote:
>
> >> This is the basic problem. You define what it is you want to work with
> >> and you don't play well with others. In fact, my research has
> >> confirmed that you have a problem working with others in general. I
> >> won't go into any detail on this in order to respect your privacy in a
> >> way mine has not been respected by you; suffice it to say I have
> >> examined material in the public view only.
>
> >> You believe that using Linux makes you special. This is in fact a form
> >> of white racism which has infected computing because the dirty little
> >> secret is that by staying away from Windows you stay away from Windows
> >> users, who are increasingly and in a global sense nonwhite, while
> >> Linux's affiliation with universities codes this in your mind as a
> >> "white" system.
>
> > isn't Linux widely used by non-white people? Isn't Linux's I18N on a
> > par with Windows'?
>
> Thanks for exposing that one Nick, it's a classic of its kind.
>
> I wonder if the plonker knows where the first government drive to
> replace Windows with Linux happened?

Uh, when IBM realized that it could steal Linux from The Santa Cruz
Operation circa 1995, and use its lawyers to get away with the theft
of intellectual property and intellectual production?
>
> <BBC mode>
> By the way, other opensource operating systems are available.
> </BBC mode>
>
> --
> Ian Collins

0
Reply spinoza1111 4/8/2010 10:30:58 AM


spinoza1111 wrote:

> On Apr 8, 8:23 am, Ian Collins <ian-n...@hotmail.com> wrote:
> > On 04/ 8/10 12:07 PM, Seebs wrote:
> >
> > > On 2010-04-07, Ian Collins<ian-n...@hotmail.com>  wrote:
> > >> I've seen the book recommended as the cheapest way to get a printed copy
> > >> of the standard.  These recommendation often come with a caveat about
> > >> the tutorial.
> >
> > > That applies to _The Annotated ANSI C Standard_.  At the time, an official
> > > copy of the standard cost about $120, and _The Annotated ANSI C Standard_
> > > cost about $40.  Consensus was that this was a fair price to pay for the
> > > annotations.
> >
> > Ah, my bad.
> >
> >  >http://www.lysator.liu.se/c/schildt.html
> >
> > Another amusing review...
>
> No, this is a copycat drive-by that was instigated by Seebach's
> garbage and in the same superficial style. It is very familiar as
> having its own errors and is grandstanding. These two half-literate
> attacks constitute the sole source of the Schildt canard. NO computer
> scientist or author of note has participated in the Schildt canard.
>

The point that seems to be missed is Schildt for a decade or so
produced formula books, a harlequin romance novel version of
language reference manuals. Most as expected have little new or
novel technical content and when judged as a reference fail because
of inaccurate and misleading information mostly it appears due to
the authors limited in depth knowledge of his subject..

Out of the 25 or so titles more than half are not recommended
by ACCU that was focused on reviewing programming related
books.




0
Reply Walter 4/8/2010 11:48:46 AM

On 04/ 8/10 10:30 PM, spinoza1111 wrote:
> On Apr 8, 3:56 pm, Ian Collins<ian-n...@hotmail.com>  wrote:
>> On 04/ 8/10 07:25 PM, Nick Keighley wrote:
>>> On 7 Apr, 20:28,spinoza1111<spinoza1...@yahoo.com>    wrote:
>>
>>>> This is the basic problem. You define what it is you want to work with
>>>> and you don't play well with others. In fact, my research has
>>>> confirmed that you have a problem working with others in general. I
>>>> won't go into any detail on this in order to respect your privacy in a
>>>> way mine has not been respected by you; suffice it to say I have
>>>> examined material in the public view only.
>>
>>>> You believe that using Linux makes you special. This is in fact a form
>>>> of white racism which has infected computing because the dirty little
>>>> secret is that by staying away from Windows you stay away from Windows
>>>> users, who are increasingly and in a global sense nonwhite, while
>>>> Linux's affiliation with universities codes this in your mind as a
>>>> "white" system.
>>
>>> isn't Linux widely used by non-white people? Isn't Linux's I18N on a
>>> par with Windows'?
>>
>> Thanks for exposing that one Nick, it's a classic of its kind.
>>
>> I wonder if the plonker knows where the first government drive to
>> replace Windows with Linux happened?
>
> Uh, when IBM realized that it could steal Linux from The Santa Cruz
> Operation circa 1995, and use its lawyers to get away with the theft
> of intellectual property and intellectual production?

I see he doesn't, well that's no surprise for one who lacks the nouse to 
trim his farcical posts.

-- 
Ian Collins
0
Reply Ian 4/8/2010 12:03:11 PM

On Apr 8, 7:48=A0pm, Walter Banks <wal...@bytecraft.com> wrote:
> spinoza1111wrote:
> > On Apr 8, 8:23 am, Ian Collins <ian-n...@hotmail.com> wrote:
> > > On 04/ 8/10 12:07 PM, Seebs wrote:
>
> > > > On 2010-04-07, Ian Collins<ian-n...@hotmail.com> =A0wrote:
> > > >> I've seen the book recommended as the cheapest way to get a printe=
d copy
> > > >> of the standard. =A0These recommendation often come with a caveat =
about
> > > >> the tutorial.
>
> > > > That applies to _The Annotated ANSI C Standard_. =A0At the time, an=
 official
> > > > copy of the standard cost about $120, and _The Annotated ANSI C Sta=
ndard_
> > > > cost about $40. =A0Consensus was that this was a fair price to pay =
for the
> > > > annotations.
>
> > > Ah, my bad.
>
> > > =A0>http://www.lysator.liu.se/c/schildt.html
>
> > > Another amusing review...
>
> > No, this is a copycat drive-by that was instigated by Seebach's
> > garbage and in the same superficial style. It is very familiar as
> > having its own errors and is grandstanding. These two half-literate
> > attacks constitute the sole source of the Schildt canard. NO computer
> > scientist or author of note has participated in the Schildt canard.
>
> The point that seems to be missed is Schildt for a decade or so
> produced formula books, a harlequin romance novel version of
> language reference manuals. Most as expected have little new or
> novel technical content and when judged as a reference fail because
> of inaccurate and misleading information mostly it appears due to
> the authors limited in depth knowledge of his subject..

Yes, and Abe Lincoln had only McGuffey's and Blackstone, which wasn't
even about American law. The question isn't the book. It's what's done
with it, and also what the free market decides.
>
> Out of the 25 or so titles more than half are not recommended
> by ACCU that was focused on reviewing programming related
> books.

Even if this is true, the guy has two rights:

1.  Freedom of speech under the US Constitution, the constitutions of
most developed countries, and the UN declaration of human rights.

2.  The right of privacy under the Ninth Amendment of the US
Constitution which includes freedom from harassment by "undue"
exposure, where "undue" in the US legal system is defined by the
ordinary person's expectations.

In Schildt's case, a jury, save a jury composed of linux dweebs, would
agree that in proportion to his "errors" his treatment has been
"undue". Maliciously "cruel and unusual" behavior of Schildt's enemies
is idemnified and forgiven. Stupid errors such as "the heap is a DOS
term" by mob leaders are idemnified and forgiven. But in this mob
action, nothing Herb says is either idemnified, nor forgiven.

One meaning of the word "unusual" in the Eighth amendment was that if
judges were permitted the wide range of punishments they were
permitted in Britain during the 18th century, it was easy for the
punishment to be out of scale with respect to the crime (favored
defendants would get jail, less favored, transportation, and the
friendless, a hanging). It meant that a silent, vicious law of the
jungle would apply to real people and be called law.

Schildt needs to be spared the law of the jungle. If you don't like
his books, don't buy them, and rate them low on Amazon by all means.
But if you can't write and don't program well, you look like a
malignant fool and mob member when you start this shit. Your precious
"freedom of speech" is being marshaled by a Fascist desire to control
thought and the purchases of others who don't use Linux...perhaps
because they don't like using virtual slave labor and command line
stupidity.

It's obscene, this way in which "libertarians" turn out for mob action
so often, as if their own lack of superego development, which causes
them to be permissive, forgiving, and liberatarian with respect to
their own low achievement and immoral behavior (as in the unseemly way
in which Peter so swiftly forgave himself for being off by one in a
one line program) causes this rage to punish others and so magically
seek eradicate or alleviate their own weakness and evil. It's daemonic.
0
Reply spinoza1111 4/8/2010 12:24:35 PM

On 8 Apr, 13:24, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 8, 7:48=A0pm, Walter Banks <wal...@bytecraft.com> wrote:
> > spinoza1111wrote:
> > > On Apr 8, 8:23 am, Ian Collins <ian-n...@hotmail.com> wrote:
> > > > On 04/ 8/10 12:07 PM, Seebs wrote:
> > > > > On 2010-04-07, Ian Collins<ian-n...@hotmail.com> =A0wrote:

<snip>

> > > > =A0>http://www.lysator.liu.se/c/schildt.html
>
> > > > Another amusing review...
>
> > > No, this is a copycat drive-by that was instigated by Seebach's
> > > garbage and in the same superficial style. It is very familiar as
> > > having its own errors and is grandstanding. These two half-literate
> > > attacks constitute the sole source of the Schildt canard. NO computer
> > > scientist or author of note has participated in the Schildt canard.
>
> > The point that seems to be missed is Schildt for a decade or so
> > produced formula books, a harlequin romance novel version of
> > language reference manuals. Most as expected have little new or
> > novel technical content and when judged as a reference fail because
> > of inaccurate and misleading information mostly it appears due to
> > the authors limited in depth knowledge of his subject..
>
> Yes, and Abe Lincoln had only McGuffey's and Blackstone, which wasn't
> even about American law. The question isn't the book. It's what's done
> with it, and also what the free market decides.
>
> > Out of the 25 or so titles more than half are not recommended
> > by ACCU that was focused on reviewing programming related
> > books.
>
> Even if this is true, the guy has two rights:
>
> 1. =A0Freedom of speech under the US Constitution, the constitutions of
> most developed countries, and the UN declaration of human rights.

yes he has freedom of speech. So do the people who criticise his
book(s)

> 2. =A0The right of privacy under the Ninth Amendment of the US
> Constitution which includes freedom from harassment by "undue"
> exposure, where "undue" in the US legal system is defined by the
> ordinary person's expectations.

shug. He published a book. The book is publicly available and I dodn't
see how it breaches privacy to read it and criticise it. We aren't
going throgh his bins (trash) or pointing long lenses at his bedroom.

> In Schildt's case, a jury, save a jury composed of linux dweebs, would
> agree that in proportion to his "errors" his treatment has been
> "undue".

I suspect an average person would find both the book and the critique
incomprehensible.

> Maliciously "cruel and unusual" behavior of Schildt's enemies
> is idemnified and forgiven. Stupid errors such as "the heap is a DOS
> term" by mob leaders are idemnified and forgiven. But in this mob
> action, nothing Herb says is either idemnified, nor forgiven.

if he or his publishers had acceptted criticism early on and published
errata (maybe online even!) it would probably saved a lot of grief.

<snip>

> Schildt needs to be spared the law of the jungle. If you don't like
> his books, don't buy them, and rate them low on Amazon by all means.
> But if you can't write and don't program well, you look like a
> malignant fool and mob member when you start this shit.

hey. I buy technical books. They cost a lot of money. I want to buy
good ones. I'm greatful for any reasoned criticism. Hell, I've even
solicited opinion from you!

I still remember this book supposedly about programming that divided
everyone up into either greeks or romans. I forget the attributes of
greeks and romans. It was pure tosh. I'd of been geatful if someone
(anyone) could have saved me the money and the time. And the planet
the trees.

> Your precious
> "freedom of speech" is being marshaled by a Fascist desire to control
> thought and the purchases of others who don't use Linux...

note for tomorrow: download redhat, invade poland


<snip ranting>
0
Reply Nick 4/8/2010 1:37:56 PM

On 8 Apr, 11:30, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 8, 3:56=A0pm, Ian Collins <ian-n...@hotmail.com> wrote:

> > I wonder if the plonker knows where the first government drive to
> > replace Windows with Linux happened?
>
> Uh, when IBM realized that it could steal Linux from The Santa Cruz
> Operation circa 1995, and use its lawyers to get away with the theft
> of intellectual property and intellectual production?

http://en.wikipedia.org/wiki/Red_Flag_Linux

though:
http://blogs.techrepublic.com.com/hiner/?p=3D525

0
Reply Nick 4/8/2010 1:47:42 PM

On Apr 7, 4:21=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-07, Nick Keighley <nick_keighley_nos...@hotmail.com> wrote:
>
>
>
> > On 7 Apr, 11:38, Alexander Bartolich <alexander.bartol...@gmx.at>
> > wrote:
> >> Nick Keighley wrote:
> >> > aren't &=3D |=3D ^=3D logical assignment operators?
> >> The standard calls
> >> =A0 & the "bitwise AND operator"
> >> =A0 | the "bitwise inclusive OR operator"
> >> =A0 ^ the "bitwise exclusive OR operator"
> >> There are also logical operators, but they are different.
> >> =A0 && is the "logical AND operator"
> >> =A0 || is the "logical OR operator"
> >> So, no, there are no "logical assignment operators" in C.
> >> (The standard speaks of "compound assignment".)
> > I must be misunderstanding
> > =A0 =A0 x &=3D 0xf;
> > is a valid C statement, yes? Are you just arguing terminology?
>
> I think so. =A0That's a bitwise compound assignment, but it's not a logic=
al
> compound assignment.
>
> Since &&/|| are "logical operators", I would expect a "logical assignment
> operator" to be "&&=3D".
>
> In other words,
>
> =A0 =A0 =A0 =A0 x &=3D 0xf; =A0 /* strip out bits other than 0xf from x *=
/
> =A0 =A0 =A0 =A0 x &&=3D 0xf; =A0 =A0 =A0/* x =3D 1 if x is not 0 */
>
> The latter would be a logical assignment operator, but doesn't exist.

How about an example of how &=3D isn't a logical assignment operator?

x =3D 0x10;
y =3D 0x01;
x &=3D y;

Even though both x (before the &=3D) and y test true, the result of the
&=3D is false.  If it were a logical assignment operator, one would
expect the result to be true.
0
Reply BruceS 4/8/2010 3:00:45 PM

On Apr 7, 8:52=A0pm, spinoza1111 <spinoza1...@yahoo.com> wrote:
<snip>
> When are you going to blank or insert a disclaimer in CTCN and modify
> the Reception section in the wikipedia article?

I think you may have misread him.  He hasn't (that I've seen) promised
to either blank the page or put in a disclaimer, other than to note
that the old CTCN page refers to the 3rd edition.  The main thing he's
said he'll do soon is to create a new CTCN page covering some of the
errors in the 4th edition of CTCR.  Given your proven history of
making promises and quickly reneging on them, don't you think you
should give Seebs a few more days to publish this new CTCN page?  I
think he has greatly underestimated the magnitude of the task and will
only produce a fairly superficial errata page, but I'm at least giving
him a chance to prove me wrong.

HTH
0
Reply BruceS 4/8/2010 3:23:23 PM

On Apr 8, 9:37=A0pm, Nick Keighley <nick_keighley_nos...@hotmail.com>
wrote:
> On 8 Apr, 13:24,spinoza1111<spinoza1...@yahoo.com> wrote:
>
> > On Apr 8, 7:48=A0pm, Walter Banks <wal...@bytecraft.com> wrote:
> > > spinoza1111wrote:
> > > > On Apr 8, 8:23 am, Ian Collins <ian-n...@hotmail.com> wrote:
> > > > > On 04/ 8/10 12:07 PM, Seebs wrote:
> > > > > > On 2010-04-07, Ian Collins<ian-n...@hotmail.com> =A0wrote:
>
> <snip>
>
>
>
>
>
> > > > > =A0>http://www.lysator.liu.se/c/schildt.html
>
> > > > > Another amusing review...
>
> > > > No, this is a copycat drive-by that was instigated by Seebach's
> > > > garbage and in the same superficial style. It is very familiar as
> > > > having its own errors and is grandstanding. These two half-literate
> > > > attacks constitute the sole source of the Schildt canard. NO comput=
er
> > > > scientist or author of note has participated in the Schildt canard.
>
> > > The point that seems to be missed is Schildt for a decade or so
> > > produced formula books, a harlequin romance novel version of
> > > language reference manuals. Most as expected have little new or
> > > novel technical content and when judged as a reference fail because
> > > of inaccurate and misleading information mostly it appears due to
> > > the authors limited in depth knowledge of his subject..
>
> > Yes, and Abe Lincoln had only McGuffey's and Blackstone, which wasn't
> > even about American law. The question isn't the book. It's what's done
> > with it, and also what the free market decides.
>
> > > Out of the 25 or so titles more than half are not recommended
> > > by ACCU that was focused on reviewing programming related
> > > books.
>
> > Even if this is true, the guy has two rights:
>
> > 1. =A0Freedom of speech under the US Constitution, the constitutions of
> > most developed countries, and the UN declaration of human rights.
>
> yes he has freedom of speech. So do the people who criticise his
> book(s)

"The most stringent protection of free speech would not protect a man
in falsely shouting fire in a theatre and causing a panic. It does not
even protect a man from an injunction against uttering words that may
have all the effect of force. Gompers v. Buck's Stove & Range Co.,
221 U.S. 418, 439 , 31 S. Sup. Ct. 492, 55 L. ed. 797, 34 L. R. A. (N.
S.) 874. The question in every case is whether the words used are used
in such circumstances and are of such a nature as to create a clear
and present danger that they will bring about the substantive evils
that Congress has a right to prevent. It is a question of proximity
and degree."

- SCHENCK v. U.S. , 249 U.S. 47 (1919)

In this case, Oliver Wendell Holmes was deciding against men who'd
encouraged soldiers to desert. Quite independent of the merits of the
case, political correctness need not delay us from using the
reasoning, since it is based by analogy with municipal ordinances
which are not only harmless but also good. And, Justice Holmes reasons
that "it is a question of proximity and degree".

In re Schildt, his right to personal privacy and professional standing
was maliciously damaged with falsehoods, starting with Seebach's
(deliberate?) failure to indicate that after 2000 Seebach was talking
about a 3rd edition that was unavailable, and as a result of Seebach's
malicious conduct, people drew conclusions that Seebach was talking,
not only about CTCR eds. 1-3 but also ed. 4, and also about Schildt's
abilities in writing about any other computing topic.

The wikipedia page, furthermore, was created in 2006, after 2000 and
the publication of CTCR4, and based largely on CTCN as it existed then
and exists now. This makes the wikipedia article a serious violation
of wikipedia's own policy "Biographies of Living Persons".
>
> > 2. =A0The right of privacy under the Ninth Amendment of the US
> > Constitution which includes freedom from harassment by "undue"
> > exposure, where "undue" in the US legal system is defined by the
> > ordinary person's expectations.
>
> shug. He published a book. The book is publicly available and I dodn't
> see how it breaches privacy to read it and criticise it. We aren't
> going throgh his bins (trash) or pointing long lenses at his bedroom.
>
> > In Schildt's case, a jury, save a jury composed of linux dweebs, would
> > agree that in proportion to his "errors" his treatment has been
> > "undue".
>
> I suspect an average person would find both the book and the critique
> incomprehensible.

I wouldn't count on this. Lawyers in fact understand computer science
better than ordinary programmers...we have one half of the evidence
for that statement here.
>
> > Maliciously "cruel and unusual" behavior of Schildt's enemies
> > is idemnified and forgiven. Stupid errors such as "the heap is a DOS
> > term" by mob leaders are idemnified and forgiven. But in this mob
> > action, nothing Herb says is either idemnified, nor forgiven.
>
> if he or his publishers had acceptted criticism early on and published
> errata (maybe online even!) it would probably saved a lot of grief.

In fact, Peter was, by his own admission, offered a position as a tech
reviewer. He turned it down and published CTCN, including an
invitation to readers to contribute errors, in effect giving all the
appearances that Seebach, 15 years ago, maliciously and purposely
decided to hound Schildt.
>
> <snip>
>
> > Schildt needs to be spared the law of the jungle. If you don't like
> > his books, don't buy them, and rate them low on Amazon by all means.
> > But if you can't write and don't program well, you look like a
> > malignant fool and mob member when you start this shit.
>
> hey. I buy technical books. They cost a lot of money. I want to buy
> good ones. I'm greatful for any reasoned criticism. Hell, I've even
> solicited opinion from you!

As you should be grateful.

An intelligent Linux C programmer would simply put CTCR back on the
shelf, while an intelligent Windows C programmer would not, after
either programmer read about void main. Likewise, any computer
scientist will discard a "critique":

* Which uses "clear" incorrectly

* Claims that "the 'heap' is a DOS term"

* Contradicts itself by claiming dozens or hundreds of errors while
presenting 20 errata, 14 of which are matters of taste,
interpretation, shibboleth and prejudice, under the heading "currently
known"

How many intelligent people use the garbage in Amazon reviews to
seriously make a purchase? Almost none. Seebach's review is worse than
the crap on Amazon.
>
> I still remember this book supposedly about programming that divided
> everyone up into either greeks or romans. I forget the attributes of
> greeks and romans. It was pure tosh. I'd of been geatful if someone
> (anyone) could have saved me the money and the time. And the planet
> the trees.

Will you MORONS do me the courtesy of stopping this utterly invalid
form of argument, so characteristic of fat and stupid paraprogrammers
on break?

"I remember this guy useta work here, whatta loser, created a linked
list with pointers to data..."

"Duh, dat's nuttin, Vinnie. Remember Frankie Parcheezi? Changed my
switch statement da doity bastid, by inserting alotta unnecessary
macros. I let da air outa dat homo's tires, you shuddha seen him
screamin' blood moider..."

"Yeah, an' wotta about dat dumb bastid Nilges...remember him? We gave
da moron dat old Cobol program dat da boss done written which was real
fancy, had maybe one or two problems."

"Yeah, da customer couldn't get accurate billin' numbers for confrence
calls, some stupid unimportant shit..."

"So Nilges fuckin' rewrites da whole goddam thing by talkin' like was
spoz'd not to to da switch engineers and simulatin' the whole goddamn
switch to get a few measly numbahs right! Boy was Lemkin mad when he
found out Nilges had thrown away his code!"

"Fuckin' guy...piecea work...so whaddya wanna do tonite, Vinnie?"

"I don' know. Whaddya you wanna do?"

"Ya know, some fuckin' guys...it just goes ta show...don't make no
waves..."

"Don't back no losers...you got dat shit right."

Valid argument by analogy is comparing two situations whose most
important features coincide, and applying a common transformation or
drawing a parallel conclusion. For example, Oliver Wendell Holmes
makes an analogy between the arrest of a man shouting fire in a
crowded theater and the arrest of men counseling US soldiers in time
of war to desert. Holmes felt that this would endanger US citizens
because it was feared, at the time, that Germany had the willingness
and ability to invade North America.

This willingness and ability actually existed, because in 1905, the
German military and naval staffs had war-gamed, successfully, a trans-
atlantic invasion of the USA. Furthermore, as was revealed by the
"Zimmerman Telegram", Germany was plotting to get Japan to switch
sides (in WW1 Japan was on the Allied side) and simultaneously
encourage Mexico to retrieve the territories (California, Arizona,
Texas and New Mexico) it had lost 75 years or so prior in the Mexican
War.

Holmes and other sober men concluded that America was in as clear and
present danger of invasion as patrons of a theater would be of
trampling if some idiot shouted fire.

This was a valid reasoning from analogy because the important feature
(speech transformed into uncivil action) is present in both
encouraging men to desert and shouting fire.

Holmes' logic fails a second later because the NEXT analogy, between
the scale of the crimes, fails, because Holmes wanted to apply
misdemeanor punishment to conduct he thought felonious.

But changing the subject
To some loser you knew who's a bigger loser than you
Doesn't prove you're right after all,
Because it isn't even analogical.
In fact, pard, it's illogical.
Nor does it prove something else you'd like to establish
Which is that because you knew some dork or zany or moron,
And what's more, son, you knew THAT he was full of shit,
Is in no solemn tome nor manual of diagnostic psychiatry,
That you could find, dust off, open up, and like a dimwit
Try on me.
It only proves, and I think I've said this before, so I hope I'm not
boring you with my torrent not of bits but rather of rather elegant if
not, indeed, rather lapidary words,
That you, sonny boy, are one for the birds.
You see, silly, that you were forced to confederate with, jerk around
with, or work in some low estaminet of a data processing shop with
retardos,
Meant in all probability that you were thought a best fit
Given what appears to be a little and tiny wit,
With clowns, buffoons, and Bozos.
0
Reply spinoza1111 4/8/2010 4:14:56 PM

On Apr 8, 7:48=A0pm, Walter Banks <wal...@bytecraft.com> wrote:
> spinoza1111wrote:
> > On Apr 8, 8:23 am, Ian Collins <ian-n...@hotmail.com> wrote:
> > > On 04/ 8/10 12:07 PM, Seebs wrote:
>
> > > > On 2010-04-07, Ian Collins<ian-n...@hotmail.com> =A0wrote:
> > > >> I've seen the book recommended as the cheapest way to get a printe=
d copy
> > > >> of the standard. =A0These recommendation often come with a caveat =
about
> > > >> the tutorial.
>
> > > > That applies to _The Annotated ANSI C Standard_. =A0At the time, an=
 official
> > > > copy of the standard cost about $120, and _The Annotated ANSI C Sta=
ndard_
> > > > cost about $40. =A0Consensus was that this was a fair price to pay =
for the
> > > > annotations.
>
> > > Ah, my bad.
>
> > > =A0>http://www.lysator.liu.se/c/schildt.html
>
> > > Another amusing review...
>
> > No, this is a copycat drive-by that was instigated by Seebach's
> > garbage and in the same superficial style. It is very familiar as
> > having its own errors and is grandstanding. These two half-literate
> > attacks constitute the sole source of the Schildt canard. NO computer
> > scientist or author of note has participated in the Schildt canard.
>
> The point that seems to be missed is Schildt for a decade or so
> produced formula books, a harlequin romance novel version of
> language reference manuals. Most as expected have little new or

It may be unfortunate, but my experience when I was both working in
the rather more rarefied environment of Princeton in 1990, and
simultaneously in Chicago consulting and training, "ordinary"
programmers such as are hired at middling salaries by financial firms
prefer a dumbed-down Harlequin romance style in tech books, lacking
the educational preparation necessary to connect to more fey and more
liteate authors like Kernighan or Knuth.

Since these people are despite their lack of education (a consequence
in turn of what educational activist Jonathan Kozol calls the savage
inequality of American education) hard working and sensible
professionals quite able to add missing definitions of variables
omitted for brevity and understandability and to realize that a macro
need only be enclosed in parentheses in the definition or at the point
of call, they prefer Schildt to someone who thinks they're morons
because their company is using Windows and IBM.

Furthermore, their lack is easily fixed since they have a humility
missing in people who sought through using a checkbook and campaigns
of author destruction to be affiliated with the glamor of unix, but
can't actually code worth WTF.

0
Reply spinoza1111 4/8/2010 4:33:00 PM

On 2010-04-08, Nick Keighley <nick_keighley_nospam@hotmail.com> wrote:
> On 6 Apr, 16:54, ImpalerCore <jadil...@gmail.com> wrote:
>> On Apr 5, 4:58�pm, jacob navia <ja...@jacob.remcomp.fr> wrote:
> [naviaisms]

>> This is not the kind of attitude that will lead people to want to use
>> your container library.

> it seems an odd way to judge software. Do you only buy software from
> people you like. presumably the success of the open source movement is
> down entirely to Stallman's wit and charm.

No, but I'd guess that free software would have achieved broader adoption
sooner if Stallman had more charisma (and, dare I say it, social skills).

I have seen quite a few people argue, persuasively, that the key advantage
FreeBSD had over NetBSD in market penetration was that Jordan Hubbard was
a persuasive evangelist.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/8/2010 4:46:11 PM

On 2010-04-08, BruceS <bruces42@hotmail.com> wrote:
> I think you may have misread him.  He hasn't (that I've seen) promised
> to either blank the page or put in a disclaimer, other than to note
> that the old CTCN page refers to the 3rd edition.  The main thing he's
> said he'll do soon is to create a new CTCN page covering some of the
> errors in the 4th edition of CTCR.  Given your proven history of
> making promises and quickly reneging on them, don't you think you
> should give Seebs a few more days to publish this new CTCN page?

I would certainly hope so -- I did not, that I recall, promise to do it
SOON.  But at this point, I have something I wouldn't be entirely ashamed
of, I just want to get a bit more technical review in on it.

> I think he has greatly underestimated the magnitude of the task and will
> only produce a fairly superficial errata page, but I'm at least giving
> him a chance to prove me wrong.

Well, I'm sure as hell not going to try to cover all of them.

Currently, I have a selection of the various errors we found flipping the
book to random pages, a brief discussion of some of the high-level conceptual
problems Schildt demonstrates (such as clearly not understanding EOF), and
an analysis of the differences between the 3rd and 4th edition, specifically
as they pertain to criticisms from C:TCN.

But!  You, Random Internet Guy, can help.  Pick a number, any number, in
the range 1..700, inclusive.  I'll add a detailed review of the ten pages
starting at that page.  Including nitpicks and everything, just trying to
catch all the errors.  I have no confidence that I'll catch EVERYTHING, but
I figure I can at least try.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/8/2010 4:59:17 PM

On Apr 8, 10:59=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-08, BruceS <bruce...@hotmail.com> wrote:
>
> > I think you may have misread him. =A0He hasn't (that I've seen) promise=
d
> > to either blank the page or put in a disclaimer, other than to note
> > that the old CTCN page refers to the 3rd edition. =A0The main thing he'=
s
> > said he'll do soon is to create a new CTCN page covering some of the
> > errors in the 4th edition of CTCR. =A0Given your proven history of
> > making promises and quickly reneging on them, don't you think you
> > should give Seebs a few more days to publish this new CTCN page?
>
> I would certainly hope so -- I did not, that I recall, promise to do it
> SOON. =A0But at this point, I have something I wouldn't be entirely asham=
ed
> of, I just want to get a bit more technical review in on it.

ISTR an implication that it would be fairly soon, though I didn't see
any specific date.  I'll do you the favor of setting a specific
deadline.  April 20.  There, now *I* have given a date by which you'll
have the new CTCN.  I feel like a cat-herder.

> > I think he has greatly underestimated the magnitude of the task and wil=
l
> > only produce a fairly superficial errata page, but I'm at least giving
> > him a chance to prove me wrong.
>
> Well, I'm sure as hell not going to try to cover all of them.

I'll be impressed if you can cover 20%.  Unfortunately, measuring this
would require getting the whole job done, then measuring your results
against the total.

> Currently, I have a selection of the various errors we found flipping the
> book to random pages, a brief discussion of some of the high-level concep=
tual
> problems Schildt demonstrates (such as clearly not understanding EOF), an=
d
> an analysis of the differences between the 3rd and 4th edition, specifica=
lly
> as they pertain to criticisms from C:TCN.
>
> But! =A0You, Random Internet Guy, can help. =A0Pick a number, any number,=
 in
> the range 1..700, inclusive. =A0I'll add a detailed review of the ten pag=
es
> starting at that page. =A0Including nitpicks and everything, just trying =
to
> catch all the errors. =A0I have no confidence that I'll catch EVERYTHING,=
 but
> I figure I can at least try.

OK.  Let's see...try the sum of the 12th and 32nd primes.  If I'm
doing the math right, that's 168.  If that has already been covered,
try the difference of the 200th and the 123rd...I get 546.  I'll throw
in four gross plus a baker's dozen (589) while I'm at it.
If anyone argues that I'm Pascal-biased and therefore OT here, I'll
argue for the historic primality of 1.
0
Reply BruceS 4/8/2010 5:46:25 PM

On 2010-04-08, BruceS <bruces42@hotmail.com> wrote:
> ISTR an implication that it would be fairly soon, though I didn't see
> any specific date.  I'll do you the favor of setting a specific
> deadline.  April 20.  There, now *I* have given a date by which you'll
> have the new CTCN.  I feel like a cat-herder.

Hee.

Actually, modulos any new material and additional review passes, I was
thinking this afternoon sometime.

> I'll be impressed if you can cover 20%.  Unfortunately, measuring this
> would require getting the whole job done, then measuring your results
> against the total.

I am not expecting to beat 5%.  I'm aiming, not for completeness, but for
a representative sample.

> OK.  Let's see...try the sum of the 12th and 32nd primes.  If I'm
> doing the math right, that's 168.

Good luck!  I'd hit 164, but nothing else before the 200s.

I'll add a discussion of Page 168-177 in some detail.  Gonna need to
take this one out to lunch, though.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/8/2010 5:50:37 PM


Nick Keighley wrote:

> On 8 Apr, 13:24, spinoza1111 <spinoza1...@yahoo.com> wrote:
>
> > Maliciously "cruel and unusual" behavior of Schildt's enemies
> > is idemnified and forgiven. Stupid errors such as "the heap is a DOS
> > term" by mob leaders are idemnified and forgiven. But in this mob
> > action, nothing Herb says is either idemnified, nor forgiven.
>
> if he or his publishers had acceptted criticism early on and published
> errata (maybe online even!) it would probably saved a lot of grief.

Most technical books have errata and publish errata on line.  This
material is usually accumulated by the author and available from
the author's personal website or the publishers website. It
re-enforces the commitment the author has with the readers of
their works.

Seeb's and Clive's reviews have been posted for a long time
on the internet and essentially forgotten until Nilges brought
the comments back to life a year or two ago here. The bulk of
the criticism now aimed at Schildt is that he knew about errata
and failed to use the information with understanding in newer
editions of the publication and that he failed to inform his readers
of inaccurate information in a published work.. The reviews we
not a comprehensive editing pass but a short overview of the
types of errors that were found.

Nilges rants about twenty errors and then chided a reviewer
for not demonstrating a claim that there were hundreds of errors
has prompted the kind of detailed error posting that both confirm
the presence of hundreds of errors and may result in a very
hard look at Schildt's publications.

Nilges has forcefully questioned the accuracy of the reviews on
Schildt's book. His questions are being tested by looking at the
review issues in detail and individual book pages are being
selected at random and scanned for errors. Nigles is free to
challenge the tests point by point in an academic search for the
truth. He will need to demonstrate intellectual honesty to be
credible.

w..








0
Reply Walter 4/8/2010 6:53:24 PM

On 04/ 9/10 01:47 AM, Nick Keighley wrote:
> On 8 Apr, 11:30, spinoza1111<spinoza1...@yahoo.com>  wrote:
>> On Apr 8, 3:56 pm, Ian Collins<ian-n...@hotmail.com>  wrote:
>
>>> I wonder if the plonker knows where the first government drive to
>>> replace Windows with Linux happened?
>>
>> Uh, when IBM realized that it could steal Linux from The Santa Cruz
>> Operation circa 1995, and use its lawyers to get away with the theft
>> of intellectual property and intellectual production?
>
> http://en.wikipedia.org/wiki/Red_Flag_Linux
>
> though:
> http://blogs.techrepublic.com.com/hiner/?p=525

I was thinking of Brazil.

-- 
Ian Collins
0
Reply Ian 4/8/2010 9:07:02 PM

On 04/ 9/10 06:53 AM, Walter Banks wrote:
>
> Nilges has forcefully questioned the accuracy of the reviews on
> Schildt's book. His questions are being tested by looking at the
> review issues in detail and individual book pages are being
> selected at random and scanned for errors. Nigles is free to
> challenge the tests point by point in an academic search for the
> truth. He will need to demonstrate intellectual honesty to be
> credible.

In other words, it won't happen.

-- 
Ian Collins
0
Reply Ian 4/8/2010 9:17:31 PM

On Apr 9, 2:53=A0am, Walter Banks <wal...@bytecraft.com> wrote:
> Nick Keighley wrote:
> > On 8 Apr, 13:24,spinoza1111<spinoza1...@yahoo.com> wrote:
>
> > > Maliciously "cruel and unusual" behavior of Schildt's enemies
> > > is idemnified and forgiven. Stupid errors such as "the heap is a DOS
> > > term" by mob leaders are idemnified and forgiven. But in this mob
> > > action, nothing Herb says is either idemnified, nor forgiven.
>
> > if he or his publishers had acceptted criticism early on and published
> > errata (maybe online even!) it would probably saved a lot of grief.
>
> Most technical books have errata and publish errata on line. =A0This
> material is usually accumulated by the author and available from
> the author's personal website or the publishers website. It
> re-enforces the commitment the author has with the readers of
> their works.
>
> Seeb's and Clive's reviews have been posted for a long time
> on the internet and essentially forgotten until Nilges brought

This is not correct. They were referenced in making the Schildt
"biography" on wikipedia in 2006 and over these years, there has
always been a high frequency of references. Furthermore, newbies have
always been directed to the C FAQ which makes a libel a fact.

> the comments back to life a year or two ago here. The bulk of
> the criticism now aimed at Schildt is that he knew about errata

It is clear that he did not since Peter has admitted that the CTCN
errata have been fixed. In a stunt of astonishing vulgarity, Seebach
has taken credit for this...and in response, is renewing his "open
source" call to find more errors. Again, he does not offer to work
with Schildt. He has learned nothing.

Inadvertent errors that are matters of interpretation. Seebach, in
these errata, makes unambiguous errors such as "the heap is a DOS
term". He does not have the ability to construct an errata.


> and failed to use the information with understanding in newer
> editions of the publication and that he failed to inform his readers
> of inaccurate information in a published work.. The reviews we
> not a comprehensive editing pass but a short overview of the
> types of errors that were found.
>
> Nilges rants about twenty errors and then chided a reviewer
> for not demonstrating a claim that there were hundreds of errors
> has prompted the kind of detailed error posting that both confirm
> the presence of hundreds of errors and may result in a very
> hard look at Schildt's publications.
>
> Nilges has forcefully questioned the accuracy of the reviews on
> Schildt's book. His questions are being tested by looking at the
> review issues in detail and individual book pages are being
> selected at random and scanned for errors. Nigles is free to
> challenge the tests point by point in an academic search for the
> truth. He will need to demonstrate intellectual honesty to be
> credible.
>
> w..

0
Reply spinoza1111 4/9/2010 2:57:44 AM

You're right, seebs.  This dude is funny as hell.

Think he'll make me some money?
0
Reply rigs 4/9/2010 3:10:07 AM

On 2010-04-09, rigs <rigorist@gmail.com> wrote:
> You're right, seebs.  This dude is funny as hell.

> Think he'll make me some money?

No.  But he will brighten an otherwise dull afternoon*.

I'm hoping he's happy now that the Wikipedia article no longer refers to an
out-of-date article that is not adequately researched, fact-checked, and
documented.  I mean, the problem, as described, was that the Wikipedia entry
linked to something essentially obsolete and not very well-organized.  I
have corrected this deficiency.

-s
[*] Yes, it's a reference.
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/9/2010 3:19:53 AM


spinoza1111 wrote:

> On Apr 9, 2:53 am, Walter Banks <wal...@bytecraft.com> wrote:
>
> >
> > Seeb's and Clive's reviews have been posted for a long time
> > on the internet and essentially forgotten until Nilges brought
>
> This is not correct. They were referenced in making the Schildt
> "biography" on wikipedia in 2006 and over these years, there has
> always been a high frequency of references. Furthermore, newbies have
> always been directed to the C FAQ which makes a libel a fact.
>
> > the comments back to life a year or two ago here. The bulk of
> > the criticism now aimed at Schildt is that he knew about errata
>
> It is clear that he did not since Peter has admitted that the CTCN
> errata have been fixed.

Some of the specific errata have been fixed in a later edition
but the same errors elsewhere  not directly referenced in Seeb's
were left unchanged. A solid technical editing pass should have
been made between revisions and the examples should have
been validated against the written description and run in the
context that the fragments were intended.

> In a stunt of astonishing vulgarity, Seebach
> has taken credit for this...and in response, is renewing his "open
> source" call to find more errors. Again, he does not offer to work
> with Schildt. He has learned nothing.

It is Schildt's work Seeb's email address is readily available he
could have easily contacted Seeb  (maybe he did). Seebs has
no obligation to work with Schildt. The current review started
directly with your call to treat Schildt honestly. Classify the errors
in some rigorous way starting with mundane to serious and
let the results stand for themselves.

Knuth paid for bug reports. Haberson and Steele author
published errata might be a good example to follow.

http://careferencemanual.com/errata.htm


w..


0
Reply Walter 4/9/2010 4:15:17 AM

On 2010-04-09, Walter Banks <walter@bytecraft.com> wrote:
>> > the comments back to life a year or two ago here. The bulk of
>> > the criticism now aimed at Schildt is that he knew about errata

>> It is clear that he did not since Peter has admitted that the CTCN
>> errata have been fixed.

> Some of the specific errata have been fixed in a later edition
> but the same errors elsewhere  not directly referenced in Seeb's
> were left unchanged.

The point being, he clearly knew that his claim that you needed to use
feof() to detect the end of a binary file with getchar() was wrong,
because he removed it -- but he didn't make the same change to getc().

What's the difference?  It's that one of them was mentioned in the old
C:TCN and the other wasn't.

> A solid technical editing pass should have
> been made between revisions and the examples should have
> been validated against the written description and run in the
> context that the fragments were intended.

Right.  This obviously did not happen.

>> In a stunt of astonishing vulgarity, Seebach
>> has taken credit for this...and in response, is renewing his "open
>> source" call to find more errors. Again, he does not offer to work
>> with Schildt. He has learned nothing.

> It is Schildt's work Seeb's email address is readily available he
> could have easily contacted Seeb  (maybe he did).

He has not.  He once sent, via his publisher, a document arguing that
the C89 standard really did allow "void main()" portably.  That's the
extent of his offers to work with me.

> Seebs has
> no obligation to work with Schildt. The current review started
> directly with your call to treat Schildt honestly. Classify the errors
> in some rigorous way starting with mundane to serious and
> let the results stand for themselves.

I really don't see any reason for Schildt to care either way.  It's been
ten years since the last edition of C:TCR -- the previous ones were much
closer together.  I don't imagine there are plans for a 5th edition, now
that he's making his money in the C++ and Java markets.

However, I did feel that it would be a crying shame if anyone thought the
Wikipedia article was based on an insufficiently-researched document.  I
have addressed this, and the previous document has been altered to clearly
state that it is obsolete and based on a prior edition.

Since this is exactly what Nilges said he wanted, I ought to be surprised
that he's whining, but frankly, I'm not.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/9/2010 4:34:44 AM

> (Sigh) If you post a new document:
>
> 1. =A0Questions will still remain at wikipedia how you misled them with
> the old document for fifteen years, violating their Biographies of
> Living Persons policies with maliciously false information [...]

Hey!  M. Seebach!  You violated a Wikipedia policy with something not
even written on Wikipedia, and managed to do it for six years before
Wikipedia even existed.  Did you know you were capable of such feats?

Archimedes Plutonium thinks that Wikipedia existed in 1997, too.
0
Reply J 4/9/2010 4:47:11 AM

On Apr 8, 11:47=A0pm, J de Boyne Pollard <J.deBoynePoll...@Tesco.NET>
wrote:
> > (Sigh) If you post a new document:
>
> > 1. =A0Questions will still remain at wikipedia how you misled them with
> > the old document for fifteen years, violating their Biographies of
> > Living Persons policies with maliciously false information [...]
>
> Hey! =A0M. Seebach! =A0You violated a Wikipedia policy with something not
> even written on Wikipedia, and managed to do it for six years before
> Wikipedia even existed. =A0Did you know you were capable of such feats?
>
> Archimedes Plutonium thinks that Wikipedia existed in 1997, too.

Time machine go!
0
Reply rigs 4/9/2010 4:49:18 AM

On 2010-04-09, J de Boyne Pollard <J.deBoynePollard@Tesco.NET> wrote:
>> (Sigh) If you post a new document:
>> 1. �Questions will still remain at wikipedia how you misled them with
>> the old document for fifteen years, violating their Biographies of
>> Living Persons policies with maliciously false information [...]

> Hey!  M. Seebach!  You violated a Wikipedia policy with something not
> even written on Wikipedia, and managed to do it for six years before
> Wikipedia even existed.  Did you know you were capable of such feats?

There also is the tiny detail that, in fact, I never misled anyone with the
old document.  It was substantially correct, the bulk of the comments in
it are comments that anyone competent in the field would generally agree
with, the errors in it were in fact (as now demonstrated at length)
representative and typical... In short, it was not false, let alone
"maliciously false".

I have improved the quality of the citation, but not significantly changed
its substance.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/9/2010 4:53:33 AM

> =A0 =A0 =A0 =A0 The header file associated with the I/O functions defined=
 by
> =A0 =A0 =A0 =A0 ANSI is called STDIO.H.
>
> Okay, that's wrong.

It's right if the file is stored on a FAT volume.

> =A0 =A0 =A0 =A0 For many C compilers, the header file related to the UNIX=
-like file
> =A0 =A0 =A0 =A0 system is called IO.H.
>
> Never heard of such a header, even allowing for the bogus caps. =A0Anyone
> know whether it's a DOSism?

I do.
0
Reply J 4/9/2010 5:07:32 AM

On 2010-04-09, J de Boyne Pollard <J.deBoynePollard@Tesco.NET> wrote:
>> � � � � The header file associated with the I/O functions defined by
>> � � � � ANSI is called STDIO.H.
>>
>> Okay, that's wrong.

> It's right if the file is stored on a FAT volume.

Not really.  On a case-insensitive filesystem, alternative spellings might be
accepted, but that doesn't mean that's what the header is called.

>> � � � � For many C compilers, the header file related to the UNIX-like file
>> � � � � system is called IO.H.

>> Never heard of such a header, even allowing for the bogus caps. �Anyone
>> know whether it's a DOSism?

> I do.

And is it?

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/9/2010 5:15:43 AM

On Apr 9, 12:53=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-09, J de Boyne Pollard <J.deBoynePoll...@Tesco.NET> wrote:
>
> >> (Sigh) If you post a new document:
> >> 1. =A0Questions will still remain at wikipedia how you misled them wit=
h
> >> the old document for fifteen years, violating their Biographies of
> >> Living Persons policies with maliciously false information [...]
> > Hey! =A0M. Seebach! =A0You violated a Wikipedia policy with something n=
ot
> > even written on Wikipedia, and managed to do it for six years before
> > Wikipedia even existed. =A0Did you know you were capable of such feats?
>
> There also is the tiny detail that, in fact, I never misled anyone with t=
he

No, I'm afraid you have.

> old document. =A0It was substantially correct,

14 over 20 of the errata were not errors and they contained errors of
their own, such as "the 'heap' is a DOS tems".

> the bulk of the comments in
> it are comments that anyone competent in the field would generally agree

This is tantamount to defining "competence in the field" as agreement
with someone who has no academic qualifications in computer science
whatsoever and is an incompetent coder.

If you define competence as agreeing with you on such propositions as
"the 'heap' is a DOS term" or "the stack should not be mentioned in
describing C runtime" then:

(1) You're wrong
(2) You're committing the logical fallacy of petitio principii


> with, the errors in it were in fact (as now demonstrated at length)
> representative and typical... In short, it was not false, let alone
> "maliciously false".

Malice on your part has been proved, since you refused McGraw Hill's
offer of an honorarium and made no effort to deal directly with
Schildt, who probably regards you as a stalker. Malice exists because
then and now you call for assistance in finding "errors" in the books
of one and only one author.

Malice would not have existed had you, like Brian Kernighan in his
early book The Elements of Programming Style, described the issue of
errors in printed software in a morally serious way, without naming
and shaming one author in a field where the law is used by publishers
to indemnify themselves and their authors against errors.

>
> I have improved the quality of the citation, but not significantly change=
d
> its substance.

You are lying: the page (http://www.seebs.net/c/c_tcr.html) is
unchanged.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/9/2010 5:40:06 AM

On Apr 9, 12:49=A0pm, rigs <rigor...@gmail.com> wrote:
> On Apr 8, 11:47=A0pm, J de Boyne Pollard <J.deBoynePoll...@Tesco.NET>
> wrote:
>
> > > (Sigh) If you post a new document:
>
> > > 1. =A0Questions will still remain at wikipedia how you misled them wi=
th
> > > the old document for fifteen years, violating their Biographies of
> > > Living Persons policies with maliciously false information [...]
>
> > Hey! =A0M. Seebach! =A0You violated a Wikipedia policy with something n=
ot
> > even written on Wikipedia, and managed to do it for six years before
> > Wikipedia even existed. =A0Did you know you were capable of such feats?

Fuck you, asshole. Seebach allowed CTCN to be cited in 2006 as the
main source for an article which was a vicious attack and still
contains a vicious Reception section, and has not fixed this despite
the fact it's been brought to his attention repeatedly, and despite
the fact that it is in violation of Biographies of Living Persons.
Learn to read.
>
> > Archimedes Plutonium thinks that Wikipedia existed in 1997, too.
>
> Time machine go!

0
Reply spinoza1111 4/9/2010 5:42:51 AM

> >> =A0 =A0 =A0 =A0 The header file associated with the I/O functions defi=
ned by
> >> =A0 =A0 =A0 =A0 ANSI is called STDIO.H.
> >>
> >> Okay, that's wrong.
> >
> > It's right if the file is stored on a FAT volume.
>
> Not really. =A0On a case-insensitive filesystem, alternative spellings mi=
ght
> be accepted, but that doesn't mean that's what the header is called.

Yes, really.  And it's what the *header file* is called.  That's
exactly the
spelling that a FAT filesystem will use for the header file's 8.3
name.

> >> =A0 =A0 =A0 =A0 For many C compilers, the header file related to the U=
NIX-like
> >> =A0 =A0 =A0 =A0 file system is called IO.H.
> >>
> >> Never heard of such a header, even allowing for the bogus caps. =A0Any=
one
> >> know whether it's a DOSism?
> >
> > I do.
>
> And is it?

Yes.  It, <dos.h>, and <direct.h> comprise the (header portions of
the) C
language bindings to the DOS system API, as supplied by pretty much
all
DOS-targetting implementations of the C language.  They're often
conflated
with the POSIX API C language bindings, but they are in fact a wholly
different API, that just happens to resemble the POSIX API on a dark
night
if one squints heavily.  The most widely-known difference is mkdir().
In
the C language bindings to the DOS system API, which really did spell
it
without a leading underscore in DOS-targetting compilers, it takes
one
argument.  In the C language bindings to the POSIX API it takes two.

They're also available on compilers that don't target DOS, as shims
mapping to the underlying system API, for compatibility with programs
ported from DOS.  This mapping is usually quite imperfect.  For
example:
on OS/2 and Win32, directory searches have to be closed lest one leak
handles.  But this is not true for the DOS system API.  Since the DOS
API C language bindings only have _dos_findfirst() and
_dos_findnext(),
there's usually either a bodge in the library to attempt to reduce
search handle leakage heuristically (as was the approach taken by
Borland C/C++ for OS/2) or an API extension providing a new
_dos_findclose() function that ported DOS code has to be modified
to call (as is the approach taken by Watcom C/C++).

On that latter note, I recommend a look at Microsoft KnowledgeBase
article 195930.
0
Reply J 4/9/2010 6:12:06 AM

> > > > (Sigh) If you post a new document:
> > > >
> > > > 1. =A0Questions will still remain at wikipedia how you misled
> > > > them with the old document for fifteen years, violating
> > > > their Biographies of Living Persons policies with
> > > > maliciously false information [...]
> > >
> > > Hey! =A0M. Seebach! =A0You violated a Wikipedia policy with
> > > something not even written on Wikipedia, and managed to
> > > do it for six years before Wikipedia even existed. =A0Did
> > > you know you were capable of such feats?
> > >
> > > Archimedes Plutonium thinks that Wikipedia existed in 1997, too.
>
> Seebach allowed CTCN to be cited in 2006 as the main source for an
> article [...]

Hey!  M. Seebach!  Apparently you have the power to magically
control whether any other people can hyperlink to your WWW pages
from elsewhere.  Did you know that you could probably make a
fortune from the WWW advertising industry with that ability?

Anyone care to hazard a guess, out of the various architectures
that the C language has been implemented on, which one
has a representation for integers where 2010-2006 is 15?  It's
not twos-complement, certainly.
0
Reply J 4/9/2010 6:23:47 AM

On 2010-04-09, J de Boyne Pollard <J.deBoynePollard@Tesco.NET> wrote:
>> >> � � � � The header file associated with the I/O functions defined by
>> >> � � � � ANSI is called STDIO.H.

>> >> Okay, that's wrong.

>> > It's right if the file is stored on a FAT volume.

>> Not really. �On a case-insensitive filesystem, alternative spellings might
>> be accepted, but that doesn't mean that's what the header is called.

> Yes, really.  And it's what the *header file* is called.  That's
> exactly the
> spelling that a FAT filesystem will use for the header file's 8.3
> name.

The term "header file", itself, is incorrect.  "headers" are not necesarily
files.  There is not necessarily an actual "file" called stdio.h, or STDIO.H,
or StDiO.H, or anything like that.  There is a *header* called <stdio.h>.

It doesn't matter what the filesystem might look like; you have your choice
of whether to display FAT names in uppercase or lowercase.  What matters is
that if you include <stdio.h> it is guaranteed to work, and if you include
<STDIO.H> it is not guaranteed to work.

Schildt did not advertise a book on "how specific compilers have been
implemented on a FAT filesystem."

> They're often
> conflated
> with the POSIX API C language bindings, but they are in fact a wholly
> different API, that just happens to resemble the POSIX API on a dark
> night
> if one squints heavily.  The most widely-known difference is mkdir().
> In
> the C language bindings to the DOS system API, which really did spell
> it
> without a leading underscore in DOS-targetting compilers, it takes
> one
> argument.  In the C language bindings to the POSIX API it takes two.

Oh, fun.

Thanks for the clarification.  In any event, the issue is largely moot;
the 4th edition of C:TCR fixes the header names.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/9/2010 6:30:52 AM

On Apr 9, 12:15=A0pm, Walter Banks <wal...@bytecraft.com> wrote:
> spinoza1111wrote:
> > On Apr 9, 2:53 am, Walter Banks <wal...@bytecraft.com> wrote:
>
> > > Seeb's and Clive's reviews have been posted for a long time
> > > on the internet and essentially forgotten until Nilges brought
>
> > This is not correct. They were referenced in making the Schildt
> > "biography" on wikipedia in 2006 and over these years, there has
> > always been a high frequency of references. Furthermore, newbies have
> > always been directed to the C FAQ which makes a libel a fact.
>
> > > the comments back to life a year or two ago here. The bulk of
> > > the criticism now aimed at Schildt is that he knew about errata
>
> > It is clear that he did not since Peter has admitted that the CTCN
> > errata have been fixed.
>
> Some of the specific errata have been fixed in a later edition
> but the same errors elsewhere =A0not directly referenced in Seeb's
> were left unchanged. A solid technical editing pass should have
> been made between revisions and the examples should have
> been validated against the written description and run in the
> context that the fragments were intended.
>
> > In a stunt of astonishing vulgarity, Seebach
> > has taken credit for this...and in response, is renewing his "open
> > source" call to find more errors. Again, he does not offer to work
> > with Schildt. He has learned nothing.
>
> It is Schildt's work Seeb's email address is readily available he
> could have easily contacted Seeb =A0(maybe he did). Seebs has
> no obligation to work with Schildt. The current review started
> directly with your call to treat Schildt honestly. Classify the errors
> in some rigorous way starting with mundane to serious and
> let the results stand for themselves.
>
> Knuth paid for bug reports. Haberson and Steele author

I don't think Schildt should have to waste his time on thousands of
bug reports, especially "bug reports" such as "the 'heap' is a DOS
term": yet in the document, Seebach calls for his readers to create
bug reports. He sought to flood the internet with thousands of phony
bug reports and expect Herb to handle this.

This is stalking.

> published errata might be a good example to follow.
>
> http://careferencemanual.com/errata.htm
>
> w..

0
Reply spinoza1111 4/9/2010 6:32:55 AM

On 2010-04-09, J de Boyne Pollard <J.deBoynePollard@Tesco.NET> wrote:
> Hey!  M. Seebach!  Apparently you have the power to magically
> control whether any other people can hyperlink to your WWW pages
> from elsewhere.  Did you know that you could probably make a
> fortune from the WWW advertising industry with that ability?

*snerk*

To be fair, I suppose in theory I could have removed the page that was
linked to, although I assume they'd just have linked to an archived
copy.

But why should I have?  It was correct as to what it actually said,
about the version of the book which existed when it was written.
Until Nilges came along, no one cared or remembered it, so far as I
can tell.

> Anyone care to hazard a guess, out of the various architectures
> that the C language has been implemented on, which one
> has a representation for integers where 2010-2006 is 15?  It's
> not twos-complement, certainly.

The "15" number is my fault, I referred to the document as
15 years old, when in fact it is only around 14 years old... Not that
this explains why the age of the document is relevant to a discussion
of Wikipedia's link to it.

That said, well, the only real issue ever raised about the previous
document was that it was poorly structured (granted) and addressed a
previous version.  The substance of the complaints was sound, and as
I've now shown, they really were representative of the quality of
the book.

The only real way Nilges has affected me negatively is that he's forever
shattered my dreams of being Usenet Kook of the Month.  I used to think
I could maybe compete, now I know I'm outclassed.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/9/2010 6:35:33 AM

> He once sent, via his publisher, a document arguing that
> the C89 standard really did allow "void main()" portably.

It would be ironic if it were mine, where I've been pointing out that
"a defect in the C standard that needs fixing with a corrigendum [...]
provides the authors of bad C programming books with the very loophole
that they have been needing for the past decade or so".  It's quite a
lot of a stretch to say that I make a case for portability (instead of
a case for fixing a defect in the standard).  I list several
implementations that don't define a void return type and several that
do, and one that quietly changed when I pointed out the problem.  Have
you ever had someone silently fix something when you pointed out a
defect on a WWW page?  (-:

If only the C standard were fixed, too ...
0
Reply J 4/9/2010 6:57:44 AM

On 9 Apr, 05:47, J de Boyne Pollard <J.deBoynePoll...@Tesco.NET>
wrote:

> Archimedes Plutonium thinks that Wikipedia existed in 1997, too.

isn't it some sort of paradox to use a word like "think" and AP in the
same sentence?
0
Reply Nick 4/9/2010 7:14:22 AM

On Apr 9, 11:19=A0am, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-09, rigs <rigor...@gmail.com> wrote:
>
> > You're right, seebs. =A0This dude is funny as hell.
> > Think he'll make me some money?
>
> No. =A0But he will brighten an otherwise dull afternoon*.
>
> I'm hoping he's happy now that the Wikipedia article no longer refers to =
an
> out-of-date article that is not adequately researched, fact-checked, and
> documented. =A0

I am tech-reviewing your new article at http://www.seebs.net/c/c_tcn4e.html=
..
Yes, you changed wikipedia in partial conformance to my request and
you have indeed responded to my concerns in some small measure. I'd
suggest an apology for the name-calling is in order, and that you seek
to further improve your online behavior. However, nothing you've done
meets my standard for dropping this matter.

"Open sourcing" a new "open season" on Schildt, by asking for help in
doing something you don't have the ability to do,  is incitement-to-
online harassment and may be a criminal matter. And when people start
asking online how they can make money from this activity, it becomes
extortion.

Furthermore, you have not addressed Dr. McClean's main concern, and
your tone is still too polemic and shows existence of bias
inappropriate in a tech review. Most readers, unfortunately for your
case, will see this as Return of Snarky Tirade instead of what we
need, which is a retraction of your 1995 hit, Snarky Tirade.

It shall amuse me to find order n*n errors in your material. I still
think you need to go to night school in computer science, guy, get
that degree. Pity you're too old to serve your country to get the
money to do so. Couple of years in the military would teach you not to
rat on people and how to get along with your brothers.


> I mean, the problem, as described, was that the Wikipedia entry
> linked to something essentially obsolete and not very well-organized. =A0=
I
> have corrected this deficiency.

Bit late for this disclaimer, a stronger form of which needs to be in
the original Snarky Tirade unless it's just blanked. You deliberately
and maliciously allowed what appears at first to be an NPOV tech
review to ruin a reputation for TEN YEARS. The consequences of your
libelous action are not going away; wikipedia's archive contains the
evidence of your deliberate misfeasance and malfeasance. But I'll drop
the matter if you erase the original CTCN, stop work and erase The
Return of Snarky Tirade, and remove the Reception section from the
wikipedia article.

Your deadline for the wikipedia change is 11 April China time.

You say you're concerned with people being misled by "incorrect"
texts. There are hundreds if not thousands of links to the original
Snarky Tirade, as shown by the fact that a search for "C: the Complete
Reference" (the title of the fourth edition) comes up with the Snarky
Tirade first; as I hope you know, links control search ranks.

But as you have admitted, for the past ten years, CTCN is JUST WRONG,
and you knew it was wrong, and you did nothing about it, thereby
misleading hundreds or thousands of people. You are creating a new
malicious libel and calling for assistance as a form of mob action
incitement. And while you do so, you are saying that the lies were
truths "because" you can "open the book at random" and find "errors",
despite the fact that it was directed at an MS-DOS audience with
different needs, despite the fact that you have no academic
qualifications in computer science, and despite the fact that all code
you submit to clc contains beginner errors.

You have assumed that the new book's "errors" will retrospectively
make a ten year lie not a lie. We don't buy this.

As things stand:

*  My review of The Return of Snarky Tirade (your new CTCN) will
appear shortly.

*  A new BLP complaint will be made on Monday and cc'd to my new best
friend Jimmy Wales [*]

[*] No, not really. But a person who appeared to be he commented
several times on my blog last winter, which means his admin slave may
forward email to that clown.

>
> -s
> [*] Yes, it's a reference.
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!

0
Reply spinoza1111 4/9/2010 7:17:35 AM

Seebs <usenet-nospam@seebs.net> writes:
> On 2010-04-09, J de Boyne Pollard <J.deBoynePollard@Tesco.NET> wrote:
>>> >>         The header file associated with the I/O functions defined by
>>> >>         ANSI is called STDIO.H.
>
>>> >> Okay, that's wrong.
>
>>> > It's right if the file is stored on a FAT volume.
>
>>> Not really.  On a case-insensitive filesystem, alternative spellings might
>>> be accepted, but that doesn't mean that's what the header is called.
>
>> Yes, really.  And it's what the *header file* is called.  That's
>> exactly the spelling that a FAT filesystem will use for the header
>> file's 8.3 name.
>
> The term "header file", itself, is incorrect.  "headers" are not
> necesarily files.  There is not necessarily an actual "file" called
> stdio.h, or STDIO.H, or StDiO.H, or anything like that.  There is a
> *header* called <stdio.h>.

Yes, the header (as defined by the C standard) is called <stdio.h>.
Well, sort of.  The < and > delimiters are not part of the header's
name; rather, the header is uniquely identified by the character
sequence ``stdio.h'' (C99 6.10.2p2).

A given implementation might implement that header as a file (most
do).  It's reasonable to refer to that file as a "header file".
And if it's stored on a FAT filesystem, the most precise name for
that file would be "STDIO.H"  (As I understand it, FAT filesystems
store file names in upper case; if you perform whatever system call
is used to get the names of the files in the appropriate directory,
it will return "STDIO.H", not "stdio.h", as the name of the file.
I could easily be mistaken on this point.)

So the statement that "The header file ... is called STDIO.H" could
well be perfectly true in that limited context.  It's also an absurd
statement to make in a book intended as a C reference.  And, as you
mention, it's to Schildt's credit that the statement was changed in
the 4th edition.

> It doesn't matter what the filesystem might look like; you have your choice
> of whether to display FAT names in uppercase or lowercase.  What matters is
> that if you include <stdio.h> it is guaranteed to work, and if you include
> <STDIO.H> it is not guaranteed to work.

Absolutely.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
0
Reply Keith 4/9/2010 7:24:25 AM

On 8 Apr, 17:59, Seebs <usenet-nos...@seebs.net> wrote:

> But! =A0You, Random Internet Guy, can help. =A0Pick a number, any number,=
 in
> the range 1..700, inclusive. =A0

if no one else has a number: 619
(and it is "random" as it came out of a prng)

> I'll add a detailed review of the ten pages
> starting at that page. =A0Including nitpicks and everything, just trying =
to
> catch all the errors. =A0I have no confidence that I'll catch EVERYTHING,=
 but
> I figure I can at least try.
0
Reply Nick 4/9/2010 7:34:56 AM

> >> >>  The header file associated with the I/O functions defined by
> >> >>  ANSI is called STDIO.H.
> >> >>
> >> >> Okay, that's wrong.
> >> >
> >> > It's right if the file is stored on a FAT volume.
> >>
> >> Not really. =A0On a case-insensitive filesystem, alternative spellings=
 might
> >> be accepted, but that doesn't mean that's what the header is called.
> >
> > Yes, really. =A0And it's what the *header file* is called. =A0That's
> > exactly the spelling that a FAT filesystem will use for the header
> > file's 8.3 name.
>
> The term "header file", itself, is incorrect. =A0"headers" are not necesa=
rily
> files. =A0[...]

You know that.  I know that.  But M. Schildt is talking about header
files, quite explicitly, and what xe says about header files is not
wrong.  It's pretty clear that the 3rd Edition isn't documenting the
C language, but DOS (and Windows) implementations of the C language.
(After all, you were just pointing out yourself that it documents
several C language bindings to the DOS system API, as well as the C
language bindings to the IBM PC firmware API and a DOS
direct-console-access library.  And we all know that "Turbo C/C++:
The Complete Reference" exists.)  Whether it's intended to or not
is another matter, but it clearly is.  (The Amazon reviewer who
commented how the 3rd Edition is "fully compliant with Microsoft's
Visual C++" has unintentionally hit the nail squarely on the head
with what the book really is.)

MS/PC/DR-DOS implementations use FAT format volumes, with
headers in files, where the 8.3 name of the header file here
very much will be exactly "STDIO.H".

By the way:
> you have your choice of whether to display FAT names in
> uppercase or lowercase. =A0

That doesn't change what the names themselves actually are.  I
also have the choice of displaying them in Wingdings, and that
doesn't change what the names actually are, either.
0
Reply J 4/9/2010 7:38:31 AM

On 2010-04-09, Nick Keighley <nick_keighley_nospam@hotmail.com> wrote:
> On 8 Apr, 17:59, Seebs <usenet-nos...@seebs.net> wrote:
>> But! �You, Random Internet Guy, can help. �Pick a number, any number, in
>> the range 1..700, inclusive. �

> if no one else has a number: 619
> (and it is "random" as it came out of a prng)

Ahh, I got one already, I did 168-177.

619 looks to be part of the chapter on "AI-Based Problem Solving", and it's
mostly a fragment of a larger program.  Nothing obviously wrong, although
it's just generally poorly done.  Lots of globals.  It looks like a
not-obviously-wrong explanation of depth-first and breadth-first searches.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/9/2010 7:47:16 AM

On 2010-04-09, J de Boyne Pollard <J.deBoynePollard@Tesco.NET> wrote:
> You know that.  I know that.  But M. Schildt is talking about header
> files, quite explicitly, and what xe says about header files is not
> wrong.

I think it is, if only because the book does claim to be a C reference
for all implementations, based on the standard.

> It's pretty clear that the 3rd Edition isn't documenting the
> C language, but DOS (and Windows) implementations of the C language.
> (After all, you were just pointing out yourself that it documents
> several C language bindings to the DOS system API, as well as the C
> language bindings to the IBM PC firmware API and a DOS
> direct-console-access library.  And we all know that "Turbo C/C++:
> The Complete Reference" exists.)

This is a valid point.  However, by 1995, some Windows users were using
a system which had filesystems in which file names were no longer in
uppercase.  :)

More generally, though, it's functionally-wrong; the underlying issue seems
to be that he unconditionally put all file names in block capitals without
thinking about whether they had other forms.  (Indeed, the #include statements
in the book nearly always use all-lowercase; the idiom seems to have been,
not an intentional statement about capitalization, but a convention for
showing filenames.)

That said, I don't object to a reference documenting additional features
beyond those required by the standard, and I don't think that makes it
intrinsically no longer a reference for the language in general.  It can
be a reference for the language in general, plus some specific extensions.

> Whether it's intended to or not
> is another matter, but it clearly is.  (The Amazon reviewer who
> commented how the 3rd Edition is "fully compliant with Microsoft's
> Visual C++" has unintentionally hit the nail squarely on the head
> with what the book really is.)

Hee.

> That doesn't change what the names themselves actually are.  I
> also have the choice of displaying them in Wingdings, and that
> doesn't change what the names actually are, either.

Point.  I guess I view case-smashing filesystems as caseless, even though
there may exist an internal representation.

Ah-hah!  I've found a way to justify my position.

The question is not "what is the name of the file on the disk".  It is "what
is the header file called".  Specifically, the file describing the stdio
interface mandated by ANSI.  And that is <stdio.h>.  :)

(The sentence is ambiguous as to whether the "specified by ANSI" applies to
the file or to the stdio interface, and since they're sort of
interchangeable...)

But yes.  If we declare that the first error is the cover of the book, then
we can make a lot of the other material into non-errors.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/9/2010 7:53:06 AM

On 8 Apr, 17:14, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 8, 9:37=A0pm, Nick Keighley <nick_keighley_nos...@hotmail.com>
> > On 8 Apr, 13:24,spinoza1111<spinoza1...@yahoo.com> wrote:
> > > On Apr 8, 7:48=A0pm, Walter Banks <wal...@bytecraft.com> wrote:
> > > > spinoza1111wrote:
> > > > > On Apr 8, 8:23 am, Ian Collins <ian-n...@hotmail.com> wrote:
> > > > > > On 04/ 8/10 12:07 PM, Seebs wrote:
> > > > > > > On 2010-04-07, Ian Collins<ian-n...@hotmail.com> =A0wrote:



> > > Even if this is true, the guy [schildt] has two rights:
>
> > > 1. =A0Freedom of speech under the US Constitution, the constitutions =
of
> > > most developed countries, and the UN declaration of human rights.
>
> > yes he has freedom of speech. So do the people who criticise his
> > book(s)
>
> "The most stringent protection of free speech would not protect a man
> in falsely shouting fire in a theatre and causing a panic.

<snip long legal quote>

well I don't agree that a critique of a book is in this class

<snip>

> > > 2. =A0The right of privacy under the Ninth Amendment of the US
> > > Constitution which includes freedom from harassment by "undue"
> > > exposure, where "undue" in the US legal system is defined by the
> > > ordinary person's expectations.
>
> > [shrug]. He published a book. The book is publicly available and I dodn=
't
> > see how it breaches privacy to read it and criticise it. We aren't
> > going through his bins (trash) or pointing long lenses at his bedroom.

you agree then?


> > > In Schildt's case, a jury, save a jury composed of linux dweebs, woul=
d
> > > agree that in proportion to his "errors" his treatment has been
> > > "undue".
>
> > I suspect an average person would find both the book and the critique
> > incomprehensible.
>
> I wouldn't count on this. Lawyers in fact understand computer science
> better than ordinary programmers...we have one half of the evidence
> for that statement here.

juries don't tend to have many lawyers on them.
Lawyers know computer science? Why did no one tell me? I'd have got my
dad to tutor me!

<snip>

> > > Schildt needs to be spared the law of the jungle. If you don't like
> > > his books, don't buy them, and rate them low on Amazon by all means.
> > > But if you can't write and don't program well, you look like a
> > > malignant fool and mob member when you start this shit.
>
> > hey. I buy technical books. They cost a lot of money. I want to buy
> > good ones. I'm greatful for any reasoned criticism. Hell, I've even
> > solicited opinion from you!
>
> As you should be grateful.

why?

> An intelligent Linux C programmer would simply put CTCR back on the
> shelf,

how would a beginner know? There is no indication that the book is
window's biased


> while an intelligent Windows C programmer would not, after
> either programmer read about void main.

<snip>

> How many intelligent people use the garbage in Amazon reviews to
> seriously make a purchase?

well I read 'em

> Almost none. Seebach's review is worse than
> the crap on Amazon.

<snip nilge rant>

0
Reply Nick 4/9/2010 7:55:34 AM

> To be fair, I suppose in theory I could have removed the page
> that was linked to, although I assume they'd just have linked
> to an archived copy.
>
> But why should I have? =A0[...]

Because you have MAGIC POWERS, that enable you to CONTROL THE
WIKIPEDIA, that make people's MINDS think DANGEROUS THOUGHTS
about whether C programming books are GOOD IDEAS for the
INNOCENT NOVICE.  Don't you know this?

> The "15" number is my fault, [...]

It is?  Not only have you POWER OVER WIKIPEDIA and TOTAL
HYPNOTIC CONTROL OF ALL WWW PAGE AUTHORS, but you have
INVENTED THE NUMBER 15.  Is there no end to your
capabilities?

You didn't invent Nilgesmathics, though.  You may have
invented 15, but it took Edward G. Nilges to take your
simple number theory and turn it into the advanced
calculus of Nilgesmathics, based upon the Axiom of
Fifteen Totality.  So no stealing credit, now.
0
Reply J 4/9/2010 8:00:59 AM

On 2010-04-09, Nick Keighley <nick_keighley_nospam@hotmail.com> wrote:
> On 8 Apr, 17:14, spinoza1111 <spinoza1...@yahoo.com> wrote:
>> while an intelligent Windows C programmer would not, after
>> either programmer read about void main.

><snip>

Of course, this turns out not to be true -- the book is full of advice
which is garbage on Windows, too.

Printing a prompt to a test file instead of to the user who's supposed
to respond to it is not particularly useful.  A book on C which, so far
as I can tell, *never mentions structure padding at all*, is not doing
its reader any service.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/9/2010 8:03:02 AM

On 9 Apr, 03:57, spinoza1111 <spinoza1...@yahoo.com> wrote:
> On Apr 9, 2:53=A0am, Walter Banks <wal...@bytecraft.com> wrote:

> > Seeb's and Clive's reviews have been posted for a long time
> > on the internet and essentially forgotten until Nilges brought
>
> This is not correct. They were referenced in making the Schildt
> "biography" on wikipedia in 2006 and over these years, there has
> always been a high frequency of references. Furthermore, newbies have
> always been directed to the C FAQ which makes a libel a fact.

the FAQ does not mention the book being discussed here. It mentions
the _Annotated ANSI C Standard_. Would you like to open *that* can of
worms? To be honest it is (or was) a cheap way to acquire a copy of
the standard. I own a copy. The annotations are worthless.


0
Reply Nick 4/9/2010 8:03:46 AM

On 2010-04-09, Nick Keighley <nick_keighley_nospam@hotmail.com> wrote:
> On 9 Apr, 03:57, spinoza1111 <spinoza1...@yahoo.com> wrote:
>> On Apr 9, 2:53�am, Walter Banks <wal...@bytecraft.com> wrote:
>> > Seeb's and Clive's reviews have been posted for a long time
>> > on the internet and essentially forgotten until Nilges brought

>> This is not correct. They were referenced in making the Schildt
>> "biography" on wikipedia in 2006 and over these years, there has
>> always been a high frequency of references. Furthermore, newbies have
>> always been directed to the C FAQ which makes a libel a fact.

> the FAQ does not mention the book being discussed here. It mentions
> the _Annotated ANSI C Standard_. Would you like to open *that* can of
> worms? To be honest it is (or was) a cheap way to acquire a copy of
> the standard. I own a copy. The annotations are worthless.

They are indeed exceptionally bad.

I think that's the key bit missing from the Nilges analysis; he's assuming
that negative statements about something are "libel", but that's only the
case *if they are untrue*.  But Schildt's writing makes it quite clear that
he has substantial misunderstandings of C (or is an *extremely* bad writer
who is somehow able to consistently say something wrong in several different
ways even though he understands it... but I think this is unlikely).

There is no libel; Schildt has (or at least, had when he wrote this book) a
very poor understanding of C.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/9/2010 8:05:37 AM

On 2010-04-09, J de Boyne Pollard <J.deBoynePollard@Tesco.NET> wrote:
>> To be fair, I suppose in theory I could have removed the page
>> that was linked to, although I assume they'd just have linked
>> to an archived copy.

>> But why should I have? �[...]

> Because you have MAGIC POWERS, that enable you to CONTROL THE
> WIKIPEDIA, that make people's MINDS think DANGEROUS THOUGHTS
> about whether C programming books are GOOD IDEAS for the
> INNOCENT NOVICE.  Don't you know this?

Oh!

You're right, of course.  I had forgotten because I was too busy
thinking about toast.

>> The "15" number is my fault, [...]

> It is?  Not only have you POWER OVER WIKIPEDIA and TOTAL
> HYPNOTIC CONTROL OF ALL WWW PAGE AUTHORS, but you have
> INVENTED THE NUMBER 15.  Is there no end to your
> capabilities?

Apparently not!  On Tuesday, I made a rock so heavy I couldn't
lift it, but then on Wednesday I lifted it anyway.  WITHOUT
CONTRADICTION.  I am just that awesome.

> You didn't invent Nilgesmathics, though.  You may have
> invented 15, but it took Edward G. Nilges to take your
> simple number theory and turn it into the advanced
> calculus of Nilgesmathics, based upon the Axiom of
> Fifteen Totality.  So no stealing credit, now.

You are, of course, right.  When it comes to making stuff up, I
will forever be but a pale imitator of Nilges.  I am particularly
crippled by a tendency to imagine that the stuff I've just made up
is in some way not real; he has no such limitations.

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam@seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply Seebs 4/9/2010 8:07:34 AM

Seebs <usenet-nospam@seebs.net> writes:
> On 2010-04-09, J de Boyne Pollard <J.deBoynePollard@Tesco.NET> wrote:
>>>         The header file associated with the I/O functions defined by
>>>         ANSI is called STDIO.H.
>>>
>>> Okay, that's wrong.
>
>> It's right if the file is stored on a FAT volume.
>
> Not really.  On a case-insensitive filesystem, alternative spellings might be
> accepted, but that doesn't mean that's what the header is called.

Given that it needn't even necessarily be a file, whether or not 
some filesystems may be forgiving of the error is a side issue.

>>>         For many C compilers, the header file related to the UNIX-like file
>>>         system is called IO.H.
>
>>> Never heard of such a header, even allowing for the bogus caps.  Anyone
>>> know whether it's a DOSism?
>
>> I do.
>
> And is it?

The one I saw was. It was for the lowest level non-portable 
input/output operations, IIRC. (Unlike the high level conio.h 
file, f'rex.)

Phil
-- 
I find the easiest thing to do is to k/f myself and just troll away
-- David Melville on r.a.s.f1
0
Reply Phil 4/9/2010 8:53:30 AM

Edward G. Nilges wrote:
> Your deadline for the wikipedia change is 11 April China time.

You'll need to sit down, M. Seebach, close your eyes,
place your fingers to your temple, and FOCUS YOUR HYPNOTIC
MIND RAYS REALLY HARD.

In the meantime, the rest of us can ponder the koan of how
daft one has to be to be a person banned from Wikipedia
for sockpuppetry publicly soliciting other people to make
edits to it under xyr direction.
0
Reply J 4/9/2010 9:01:34 AM

> [...] some of the high-level conceptual problems Schildt
> demonstrates (such as clearly not understanding EOF), [...]

For what it's worth, I think that I partly understand why that error
is there, if we accept the notion that this was really a book about
DOS (and Windows) C implementations.  There is a character, whose
value is 26, that a lot of the libraries for DOS implementations of
the C language treated as if it were EOF.  (It isn't EOF, of course,
and never was any sort of end-of-file marker to the underlying
operating system itself.  I have a Frequently Given Answer on this.)
So I suspect that this error is the result of conflating character 26,
mis-named the end-of-file character (It's actually "SUB".), with the
EOF value read, in place of an unsigned character, from C streams by
the stream I/O functions.  It is possible, with those C libraries, to
have an actual character in the stream that comes through fgetc(),
say, as EOF.
0
Reply J 4/9/2010 9:17:20 AM

> Unlike the high level conio.h file, f'rex.

<conio.h> wasn't higher level than the other DOS system API C language
bindings.  Indeed, it was at the same level or even lower.

In Microsoft's C implementation, the functions called the MS-DOS
version 2 standard I/O APIs.  You wanted to know what getche() did, M.
Seebach?  On early Microsoft C it did whatever INT 0x21 with AX equal
to 0x01 did.  Similarly, getch() wrapped INT 0x21/AX=0x08, putch()
wrapped INT 0x21/AX=0x02 (or possibly AX=0x06), and kbhit() wrapped
INT 0x21/AX=0x0B.  These calls were simply yet more wrappers around
the DOS system API.

Then along came Borland, whose compiler had to be faster than
Microsoft's.  Borland's <conio.h> functions weren't just simple
wrappers around various MS-DOS v2 INT 0x21 calls.  Instead, Borland's
library wrote directly to video memory for output, and talked directly
to the firmware API for keyboard input.  kbhit() turned into a
firmware call.  putch() wrote directly to VRAM and knew about text
window boundaries, scrolling flags, and colours.  And getche() became
putch(getch()).  And thus "You can redirect standard input and output
of a Microsoft compiled program, because its <conio.h> library uses
DOS calls; but it won't work with the Borland compiler, because its
<conio.h> library doesn't." became a Frequently Given Answer.

So Borland's (and also Watcom's) <conio.h> library no longer wrapped
the DOS system API, and was actually talking to the system at a lower
level, not a higher one.
0
Reply J 4/9/2010 10:22:30 AM

On Apr 8, 3:49=A0pm, Seebs <usenet-nos...@seebs.net> wrote:
> On 2010-04-08, Nick Keighley <nick_keighley_nos...@hotmail.com> wrote:
>
> > On 7 Apr, 20:28,spinoza1111<spinoza1...@yahoo.com> wrote:
> >> You believe that using Linux makes you special. This is in fact a form
> >> of white racism which has infected computing because the dirty little
> >> secret is that by staying away from Windows you stay away from Windows
> >> users, who are increasingly and in a global sense nonwhite, while
> >> Linux's affiliation with universities codes this in your mind as a
> >> "white" system.
> > isn't Linux widely used by non-white people? Isn't Linux's I18N on a
> > par with Windows'?
>
> No offense, but is there any point in responding to a rant that illucid

I think it's time, Peter, to drop your pretense that you are literate
and for that reason an authority on either Schildt's use of language
or the meaning of "clarity".

This is because "illucid", a word you've used several times, is not a
meaningful word, and there are plenty of correct words for what you
stumble to say. Such as unclear.

You see, "illucid" occurs neither in the compact nor unabridged OED,
nor does it appear in the free online Merriam Webster, nor at
dictionary.com. I have never encountered it save from you.

In the complete Oxford English Dictionary, the closest match is the
verb form of the reverse of what you mean: "to shed light upon; to
make clear, clear up, elucidate"! The il- prefix is not a free
operator, and most literate people know that for this reason you may
not make neologisms.

In fact, a poet would use "illucid" as is as the participle for
"illucidated" to make the meter work:

Nilges has once again made all pellucid,
Clear, transparent, glassy and illucid.
He has for us the Eleusinian illucidated
Whilst Seebach with toads and sheep has mated.

"Know thyself". I am not making an inference from a single data point;
that's what you do in the case of Schildt despite the fact that you
don't know Windows programming and have no academic background in
computer science. Instead, I am gradually forming a correct image of
your capabilities, and this is evidence that fits a pattern of error
and pretense. Before you continue your little campaign, know yourself.


> with factual points? =A0I have no idea where Nilges gets the idea that I
> think using Linux makes me special. =A0I don't even particularly like Lin=
ux.
>
> But the pure noise component really dominates any kind of argumentation h=
ere.
> What does "in a global sense" mean? =A0It means that Nilges has access to=
 a
> keyboard, and not much else.

It means that you're a provincial who's trying to tell world
programmers what to read.
>
> >> You also demand a "white" privilege of defining the rules of success.
> ><snip>
> > aren't you white?
>
> Well, to be fair, doesn't he consistently demand the privilege of definin=
g
> the rules of success? =A0So I guess that's at least consistent with his o=
ther
> behavior.

Actually, that's what having a life plan is all about. To the extent
that one does not in fact harm others, one defines the rules of
success.

>
> Me, I have no interest in "defining the rules of success". =A0I am a
> descriptive, not a prescriptive, student of programming. =A0If something =
really
> does work, I don't care whether it matches any particular theory. =A0(Con=
trast

That's interesting, because you've never posted anything that works,
to my knowledge.

> with Nilges, whose cover story for not knowing how switch() works is that=
 it's
> not properly "structured".)

No, your code was not properly structured in queue.c. It's a separate
fact that C allows (but does not require) an unstructured fall-through
as a legacy feature not used by competent programmers.

Using break() diligently in all switch() statements is core computer
science competence; returning an integer in main() is not. This is
because you cannot back your claim with any reference, outside a
community of mere programmers, to an academic and scientific result.
We don't fallthrough in switch because it was proven by Bohm and
Jacopini that we don't need to, and it was shown by Dijkstra et al.
that good programs restrict themselves to a small superset of the
three Bohm/Jacopini structures which includes case/switch only when
there is a single entry/exit and n distinct paths which never
overlap.

Our praxis is mathematically definable; yours is not. In ours, switch-
case is recognized as a fourth block in addition to process, if-then-
else and do-while, with while-do one trip also often admitted.

But this is because switch-case without fallthrough stands in relation
to the basics in the trivial relationship "you're" has to "you are".
It's a transliteration.

Whereas switch-case with fallthrough is neologistic, and there is no
gain in efficiency, reliability or maintainability. There's no gain in
efficiency because if a switch case is duplicated codewise in the
structured version, no time is lost save in the break() which may
generate a go to in machine language, well worth the investment. The
(slight) reliability-maintainability objection is that you would have
to replicate code, but this is handled as of old: function, inline
function or preprocessor macro.

The reliability-maintainability objection you made is actually sheer
intellectual flaccidity of the sort I learned to expect, increasingly,
as more and more shitheads entered the field: the sort of people who
buy "Don't Make Me Think!".

The gain is of course clarity, especially because modern languages
don't support fallthrough. The usage in fact endangers the quality of
the code to demonstrate membership in an in-crowd. It's a shibboleth,

>=A0When I criticize non-portability, it's not
> because I have any particular preference for portability *in and of itsel=
f*;
> it's because my experience has taught me that portability offers a very
> substantial return on time and effort invested in it, and in particular,
> that writing for portability from the beginning is much cheaper than tryi=
ng
> to bolt it on later.
>
> The rules of success are that if what you're doing works and allows you t=
o
> be successful, apparently that's a way of succeeding. =A0No interest in d=
efining
> that; it strikes me as a ludicrous effort. =A0It's like demanding the pri=
vilege
> of defining the laws of physics. =A0You don't get a vote; physics is out =
there,
> and you can cope or not.

This is absurd. Sociology, whether theoretical or applied, is not
physics because you are part of the data, and you make the rules in
equilibrium with others.

For example, you can't just decide to "succeed" by deliberately
trashing Schildt as if social standing and reputation were like heat
in physics, which is conserved in the ordinary physical world as is
demonstrated in a high school laboratory.

Whereas social standing and reputation doesn't accrue to you "just
because" you've taken it away from Schildt or a coworker, by
backstabbing, or allowing a false document to be referenced by others
for ten years. It's not "conserved". It's manufactured by real
accomplishment (such as writing halfway decent code). It's permanently
destroyed and doesn't come back by gossip, online trashing, and lies.

In fact, philosophies of "self-interest" which assume no altruism or
justice-instinct try to reduce social phenomenon to fully explainable
attempts of systems to optimize their standing. They are for this
reason attractive to people with technical backgrounds. The result
here is pretty obvious. The best people are driven away.
>
> -s
> --
> Copyright 2010, all wrongs reversed. =A0Peter Seebach / usenet-nos...@see=
bs.nethttp://www.seebs.net/log/<-- lawsuits, religion, and funny picturesht=
tp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
0
Reply spinoza1111 4/9/2010 12:35:22 PM

"Seebs" <usenet-nospam@seebs.net> wrote in message
news:slrnhrtikm.stj.usenet-nospam@guild.seebs.net...
> [FAT filesystem]
>

Pete,

Did you just pollu..., uh, crosspost to, comp.os.msdos.programmer with OT
c.l.c. crud just because JdeBP mentioned 8.3 filenames?

I guess I'm just going to have to come back to c.l.c. and verbally pound
some more of the ignorant morons there who possess overly inflated egos...

> J de Boyne Pollard <J.deBoynePollard@Tesco.NET>
>

OMFG, ROFL!!!...   I thought it/he/she died.  I haven't seen a post from
it/him/her in a while.  I recommend you chase it/he/she out of there quick.

It/he/she prefers gender neutral pronouns... which is considered
demasculinization or defeminization by most.  This is no joke.  Xe's (<--FYI
that's a gender neutral pronoun...) in-depth webpage on neutered and spayed
identity pronouns is presented here:
http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/sex-neutral-pronouns.html

I haven't read the c.l.c. thread, but if JdeBP is up to his usual antics,
it/he/she just lured you into a completely wrong, biased, warped,
delusional, and *strongly* pro-Microsoft rant.  It/he/she could earn the
global award for penultimate chain yanking... if you exclude Mike Corley.
Even when it/he/she is presented with factually based correct evidence
it/he/she refuses to accept any info not aligned with Microsoft or
Bernstein's djbdns.


Laugh, I think maybe I should attempt to jinx c.l.c...  just for the OT crud
that c.l.c. people continue to spooge out onto the rest of Usenet.  May the
"god" of insane OT spam perpetually pound c.l.c. with his paranoia.
MI5Victim arise!  Arise!  Arise MI5Victim!  Arise!

The victim with paranoia from the very beginning:
http://groups.google.com/group/soc.penpals/msg/3248ce42b709d840?hl=en
http://groups.google.com/group/rec.travel.air/msg/4725860c747d6163?hl=en

Or try his website:
http://www.mi5.com/

Better yet, just buy the books by Boleslaw Tadeusz Szocik, "Persecuted by
MI5 Security Service Volume 1" and "Persecuted by the MI5 Security Service
Volume 2" on Amazon.  Or, get your Miracle C compiler by him today.  It's
insane:
http://www.c-compiler.com/


Rod Pemberton


0
Reply Rod 4/9/2010 12:36:41 PM

On 9 Apr, 10:17, J de Boyne Pollard <J.deBoynePoll...@Tesco.NET>
wrote:

> > [...] some of the high-level conceptual problems Schildt
> > demonstrates (such as clearly not understanding EOF), [...]
>
> For what it's worth, I think that I partly understand why that error
> is there, if we accept the notion that this was really a book about
> DOS (and Windows) C implementations. =A0

besides your, quite reasonable, explanation another possibility is
that he'd had dealings with "clairvoyant" i/o systems such as Pas