A note on Peter Seebach's vicious little tirade

S

spinoza1111

http://spinoza1111.wordpress.com/2009/10/02/a-note-on-peter-seebachs-vicious-little-tirade/


Peter Seebach has written a vicious little tirade on a computer
author, Herb Schildt which is at http://www.seebs.net/c/c_tcr.html. It
is characterized by a strikingly unethical misuse of logic and a
complete misunderstanding of rhetoric construed as how we say things
to be understood.

One of the most astonishing passages in Peter Seebach’s vicious little
tirade about Herb Schildt’s work is this:

"I am missing several hundred errors. Please write me if you think you
know of any I’m missing. Please also write if you believe one of these
corrections is inadequate or wrong; I’d love to see it.

Currently known: ... "

This is followed by a grand total of 20 errors.

That is, Seebach is using McCarthyist and Stalinist tactics in this
document. He presents 20 errors, some of which are trivial, and others
of which are matters of interpretation. He then apes Senator McCarthy,
who waved an empty sheet of paper in a Senate hearing on “Communists
in the US government”, making reference to a “list”.

Seebach’s statement makes no sense, because he says at the end that
“here are the known errors” but above he says “I am missing several
hundred”.

This can only logically be construed to mean that “there must be
hundreds but I do not know what they are, and I’d like you to join me
in this cybernetic lynching”.


"Little did I dream you could be so reckless and cruel as to do an
injury to that lad. It is true he is still with Hale & Dorr. It is
true that he will continue to be with Hale & Dorr. It is, I regret to
say, equally true that I fear he shall always bear a scar needlessly
inflicted by you. If it were in my power to forgive you for your
reckless cruelty, I will do so. I like to think I am a gentleman, but
your forgiveness will have to come from someone other than me. "

....

"Let us not assassinate this lad further, senator. You have done
enough. Have you no sense of decency?"

- Joseph Welch, Army-McCarthy Hearings 9 June 1954
 
S

spinoza1111

On Thu, 01 Oct 2009 23:05:47 -0700, spinoza1111 wrote:





Are you really not seeing this part of the original c_tcr document, or
just pretending not to?

"The following is a partial list of the errors I am aware of, sorted by
page number. I am not including everything; just many of them."

As I've said, the page is contradictory, indeed to the point of
incoherence, which really undercuts Peter's claim to standing as a
critic and which may be why McGraw Hill shitcanned the fax.

"Partial" CONTRADICTS "currently known". And if "many" cannot be <
1/5, then there are at best 100 errors (including in all probability
trivia given the "known" list). This is not "hundreds".

Conclusions:

(1) Seebach is incapable of organizing a simple written document.

(2) From (1) it follows that Seebach has no standing in criticising
Schildt.

(3) Since the claims in the document are self-contradictory, Seebach
is lying.

(4) From (3) it follows that Seebach needs to take the post off the
Internet, and replace it with a public apology for the harm done
Schildt and his family.
 
B

bartc

spinoza1111 said:
Peter Seebach has written a vicious little tirade on a computer
author, Herb Schildt which is at http://www.seebs.net/c/c_tcr.html. It
This is followed by a grand total of 20 errors.

That is, Seebach is using McCarthyist and Stalinist tactics in this
document. He presents 20 errors, some of which are trivial, and others
of which are matters of interpretation.

"Page 19
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.) "

'In general' can mean 'commonly'. Trivial nitpick.

"Page 33
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."

Depends what the author meant by Global Variables (I haven't seen the book).
Could be trivial.

"Page 163
You may also declare main() as void if it does not return a value.
Specifically untrue. ANSI mandates two declarations for main, and says that
main may have declarations compatible with those. Both return int."

My K&R2 uses "main()" yet is highly thought of. Trivial.

"Page 333
After
char str[80];

sprintf(str,"%s %d %c", "one", 2, 3);

it is asserted that str will contain "one 2 3". This is incorrect; it would
contain "one 2 ^C". (That's "control C" in ASCII, or a character with the
value 3)"

Clearly this was a typo: that 3 in the sprintf call should have been '3'.
Trivial.

Some of the others I can't comment on as I haven't seen the book. So I would
have to agree a lot of this stuff depends on interpretation.

Perhaps the Schildt book just needed more thorough proof-reading.
 
C

Colonel Harlan Sanders

Peter Seebach has written a vicious little tirade on a computer
author, Herb Schildt which is at http://www.seebs.net/c/c_tcr.html. It

It's been there for the best part of a decade.
And you've commented on it many, many, many times before.

Why start another thread on this? Why this pretense that anyone is
"conducting a pogrom" or whatever hysterical analogy you're using now
(oh, I see it's "McCarthyist and Stalinist", those well-known
soulmates, not "Nazis" this week).

Less than a week ago you wrote:

Indeed, it appears to me that Seebach is maturing. I encourage this
process, and as part of both Seebach's and Feather's growing up they
both need to post a public apology to Schildt. Hopefully we can get
their with this "peace process": that is my long term goal.

So much for Nilges' "peace process".

Neither Seebach or Feather have done anything to provoke this
resumption of hostilities.

But that's it, isn't it?
You can't stand to be ignored.
So busy writing your blog posts and waiting, waiting, waiting for
someone to come along and argue with you, in a place where you hold
the whiphand.
 
M

Mark Bluemel

[Snip]

He really is something isn't he. I'm not quite sure what, but he
really is something.
 
S

spinoza1111

In

spinoza1111wrote:



Do you have a copy of "C: The Complete Reference"? Have you read it?
No.

Yes.


<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
 
S

spinoza1111

spinoza1111wrote:
http://spinoza1111.wordpress.com/2009/10/02/a-note-on-peter-seebachs-...
Peter Seebach has written a vicious little tirade on a computer
author, Herb Schildt which is athttp://www.seebs.net/c/c_tcr.html. It
This is followed by a grand total of 20 errors.
That is, Seebach is using McCarthyist and Stalinist tactics in this
document. He presents 20 errors, some of which are trivial, and others
of which are matters of interpretation.

"Page 19
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.) "

'In general' can mean 'commonly'. Trivial nitpick.

"Page 33
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."

Depends what the author meant by Global Variables (I haven't seen the book).
Could be trivial.

"Page 163
You may also declare main() as void if it does not return a value.
Specifically untrue. ANSI mandates two declarations for main, and says that
main may have declarations compatible with those. Both return int."

My K&R2 uses "main()" yet is highly thought of. Trivial.

"Page 333
After
 char str[80];

 sprintf(str,"%s %d %c", "one", 2, 3);

it is asserted that str will contain "one 2 3". This is incorrect; it would
contain "one 2 ^C". (That's "control C" in ASCII, or a character with the
value 3)"

Clearly this was a typo: that 3 in the sprintf call should have been '3'.
Trivial.

Some of the others I can't comment on as I haven't seen the book. So I would
have to agree a lot of this stuff depends on interpretation.

Perhaps the Schildt book just needed more thorough proof-reading.

That could be correct. Nothing justifies the harm Seebach has done.
 
S

spinoza1111

It's been there for the best part of a decade.
And you've commented on it many, many, many times before.

Yes, I have. And I will continue to do so when and where I choose
until Seebach and Feather replace their vicious little tirades with
apologies to Schildt.
Why start another thread on this? Why this pretense that anyone is
"conducting a pogrom" or whatever hysterical analogy you're using now
(oh, I see it's "McCarthyist and Stalinist", those well-known
soulmates, not "Nazis" this week).

Just because you know jackshit about McCarthyism, Stalinism, the
second-order relationship of the two, or Naziism don't mean I don't,
Bubba.
Less than a week ago you wrote:



So much for Nilges' "peace process".

Neither Seebach or Feather have done anything to provoke this
resumption of hostilities.\

WTF did schildt do, KFC?
But that's it, isn't it?
You can't stand to be ignored.
So busy writing your blog posts and waiting, waiting, waiting for
someone to come along and argue with you, in a place where you hold
the whiphand.

That's me, Kaintuck: Ilse, she-wolf of the SS, tigress of Siberia,
harem master of the oil sheikhs. What ev er turns you on.

You're just too chicken to post at the blog since you'll have to clean
up your act, Colonel.
 
S

spinoza1111

In <[email protected]>, Colonel Harlan

Sanders wrote:





There's no point in holding a whiphand if there's nobody to whip. I
would be very much surprised to discover any C experts reading his
blog. What would be the point?

Gettin' a lot of hits especially on "Software as a Philosophical
Pathology". I don't advise people how to use C since most people
shouldn't.
 
S

Seebs

"Page 19
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.) "
'In general' can mean 'commonly'. Trivial nitpick.

I think I'd agree at this point. When I wrote that, I was much less aware
of connotational usage in language, and understood "in general" to be the
opposite of "in some cases".
"Page 33
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."

Depends what the author meant by Global Variables (I haven't seen the book).
Could be trivial.

I don't think the author gets a vote in what "global" means.
"Page 163
You may also declare main() as void if it does not return a value.
Specifically untrue. ANSI mandates two declarations for main, and says that
main may have declarations compatible with those. Both return int."

My K&R2 uses "main()" yet is highly thought of. Trivial.

Not so. "main()" declares main returning int.

It is arguably a fairly small issue, but it is one where he's definitely just
plain wrong.
"Page 333
After
char str[80];

sprintf(str,"%s %d %c", "one", 2, 3);

it is asserted that str will contain "one 2 3". This is incorrect; it would
contain "one 2 ^C". (That's "control C" in ASCII, or a character with the
value 3)"

Clearly this was a typo: that 3 in the sprintf call should have been '3'.
Trivial.

I don't think it's "clear" that it was a typo. I am not a mind reader.
Some of the others I can't comment on as I haven't seen the book.

The code provided is adequate to evaluate the claims.
So I would
have to agree a lot of this stuff depends on interpretation.

I think some of it does, but at some point, when you have a large number
of samples of just-plain-wrong, you have to start asking why.

In particular, consider the ("%f", sizeof f) example, and the example
where he uses sizeof(a) where a is a function parameter declared as an
array. You don't have to see the book to understand those, and to see
the problems.

You might be able to argue that the first is a "typo" again -- but now
we have to ask whether your "Clearly" evaluation of the sprintf example
above is right, because he seems to be more unclear on format specifiers
than you thought. Maybe he really does think that %c works on numbers
that way; he appears to think that %f can print sizeof values.

The second, though, is just plain wrong, and can't be rendered right through
any trivial fix.
Perhaps the Schildt book just needed more thorough proof-reading.

No. It's not just the proof-reading errors, it's the conceptual errors.

I'll grant that some of the complaints were trivial, but not all were, and
they were only a small sample... And I stand by the evaluation that it's a
very clear and lucid bit of writing describing a language similar to C,
but which is not actually C.

The thing is... *Third Edition*. And yes, substantial revisions had occurred;
in the second edition, page 53 (I think?) had "<>" used as a synonym for !=.
So there were definitely revisions... But revisions which tell us that some
of the examples had never even COMPILED, let alone been run, are not
necessarily encouraging.

I would expect a third edition of a book to be pretty carefully vetted.

-s
 
J

Julienne Walker

"Page 163
You may also declare main() as void if it does not return a value.
Specifically untrue. ANSI mandates two declarations for main, and says that
main may have declarations compatible with those. Both return int."

My K&R2 uses "main()" yet is highly thought of. Trivial.

The only problem with K&R2's usage is that in the early chapters a
return statement is omitted, which is technically undefined behavior.
However, this was a pedagogical choice that is explained shortly
after, and correct code is provided from then on, IIRC. I won't attack
or defend their choice to allow undefined behavior for simplicity
sake, but this is quite different from doing so (regardless of the
reason) and then failing to correct the error both in explanation and
example.

Many of Schildt's errors from the time seem habitual, which suggests
that he himself didn't understand the language he was teaching well
enough to teach it. That is my gripe with these older books: a student
teaching a student usually results in two students with just enough
knowledge to be dangerous. Multiply that by however many copies his
best seller books have sold and the potential damage from first
generation readers alone is frightening.

In all fairness, when I glance through newer books by Schildt, they
don't usually strike me as being technically unsound.
 
W

Walter Banks

Keith said:
The first sample program in K&R2 is:

#include <stdio.h>

main()
{
printf("hello, world\n");
}

I suggest that there are actually three problems with that code:

1. It uses implicit int. This is of course perfectly legal in
C89/C90, but I personally consider it to be a poor style.

2. It uses () rather than (void). I've argued here before that,
strictly speaking, this invokes undefined behavior unless the
implementation specifially allows that declaration for main.
"main()" is not exactly equivalent to "main(void)". This is
a rather subtle point, and it's plausible that K&R themselves
weren't aware of it at the time.

3. It doesn't return a value. This is valid in C99, but of course the
book predates C99 by about 10 years. In C89/C90, it returns an
undefined status to the environment. On my system, when I compile
and run the program, I get:
hello, world
Exit 13
The second line comes from my shell, not from the program.

And yes, I know who I'm criticizing. These are minor points.
I still consider K&R2 to be one of the best books on C, and one of
the best programming books overall.

To not weigh in too heavily on this. The real issue is Schildt's book
was promoted as a reference on C99 and his authority was the
contributions he made to the SC22/WG14 on C99. Both are not
true. At a point during the evolution of C that there was a real need
for clarity it didn't help.

The secondary problem is the book's publisher and author
don't seem to care about the errata.

w..
 
S

Seebs

I disagree. This is supposed to be a technical reference work and its
clearly intended to be read by people who might not realise its a typo.
Such mistakes should not exist, and if they do there should be an
erratum list somewhere. I don't think there is.

I basically agree -- which is embarassing because I'm pretty sure there's at
least one such error in my shell programming book which I have not yet set
up the errata list for.

-s
 
K

Keith Thompson

Mark McIntyre said:
I disagree. This is supposed to be a technical reference work and its
clearly intended to be read by people who might not realise its a
typo. Such mistakes should not exist, and if they do there should be
an erratum list somewhere. I don't think there is.

For my money, typos like this are as bad as a history book listing
Queen Victoria as dying in 1902 or Las Vegas as being the capital of
Nevada. You just can't have them and remain credible.

It probably did originate as a typo, but it should never have
survived to appear in a published book. If it was a typo in
Schildt's original code, it should have been caught as soon as he
compiled and ran the code -- and there's no excuse for not doing so
for code intended for a published book.

It's possible that Schildt's code was correct and the apostrophes
were lost later, perhaps in typesetting. I don't know enough about
the process of publishing books to know how plausible that is.
If that's the case, then I can understand the error appearing in
the published book -- but then there needs to be an errata list
from either the author or the publisher.

And the number of other serious errors in Schildt's published code
makes it likely, but doesn't prove, that the error was Schildt's
and he just didn't bother to check it.
 
F

Flash Gordon

James said:
In today's world that would require an Amish-like lifestyle. There's
computers in our cars, our kitchen appliances, our TV sets, and our
telephones.

I know people I would not trust in a car, people I would not trust in a
kitchen, people I would not trust with a TV, and definitely people I
would like kept away from telephones!

Most people have no interest in programming. Of those that do a large
number are not interested in C.
 
S

spinoza1111

I think I'd agree at this point.  When I wrote that, I was much less aware
of connotational usage in language, and understood "in general" to be the
opposite of "in some cases".

1 down, 19 to go.
I don't think the author gets a vote in what "global" means.

I do. As a second generation computist, Peter, both literally and
agewise, you fail to understand here that Humpty Dumpty, in a
sociological sense, is right, despite the conservative fantasy that
texts (dictionaries included) determine word meaning.

When I, or we (where "we" is a discourse community) use a word, it
means what we or I mean: no more and no less. Ordinary programmers do
indeed confuse and conflate "file" and "global" scope especially
outside of C for two very good reasons:

(1) File scope is a C term, and C was so poorly designed it has no
apriori right to determine our usage whatsoever.

(2) Programmers, not computer scientists, created software praxis,
theory, and the lexicon. You weren't there, but I was.

As I relate in my book, a spiritual mentor was already writing
compilers that dared not speak their name in 1955 working for the
railroad industry on behalf of IBM. As was the case with early Greek
mathematics, working people developed the practice...and the theory.

But as a result, an urban legend existed by the 1960s that a new
priesthood of sheer nobodies was going to take over the worklives of
"real" people, defined as people whose skilled white collar work was
under threat by computerization. As in the case of Euclid and Plato,
self-defined "computer scientists" created credentialism based on the
work of the anonymous programmers just preceding them.

Which is how it should have been: except for one thing. Rather than
formalizing the praxis to the best of their ability, most computer
scientists outside of Dijkstra did as little work as possible and the
result was a series of mistakes and messes blessed by computer
science, including Multics, hierarchical data bases...and, we now
know, C.

Having seen this process first-hand, I believe you have no right
whatsoever to criticise Herb for misuse of words, since your
intellectual foundation is itself built on sand.
Not so.  "main()" declares main returning int.

It is arguably a fairly small issue, but it is one where he's definitely just
plain wrong.

You've been foolishly replicating this trivial crap for years with the
result that the virus and its surrounding cloud of confusion pervades
the Internet.
"Page 333
After
 char str[80];
 sprintf(str,"%s %d %c", "one", 2, 3);
it is asserted that str will contain "one 2 3". This is incorrect; it would
contain "one 2 ^C". (That's "control C" in ASCII, or a character with the
value 3)"
Clearly this was a typo: that 3 in the sprintf call should have been '3'.
Trivial.

I don't think it's "clear" that it was a typo.  I am not a mind reader.

That's your problem, isn't it. Peter, what the HELL do you think
understanding, dialog, and civility ARE, and (to quote Elvis Costello)
what's so funny about peace love and here, understanding? Language
comprehension IS mind reading.

In the philosophical sense, your careless use of cliche is very
interesting, since it shows how the demotic understanding of the
scientific world view is what Richard Berman calls "the disenchantment
of the world".

You deny the possibility of an occult connection with Herb Schildt's
mind because you're a no-nonsense chap. But in so doing by way of
hackneyed prose, by saying "I'm not a mind reader", you inevitably, to
use my own cliche, throw the baby out with the bathwater, for people
in crummy little offices say "I'm not a mind reader" half the time
perfectly sensibly...and the other half when they don't want to listen
or read.

To deny the occult in the hackneyed register is ALSO to deny ordinary
non-occult mechanisms such as language by means of which we do become
"mind readers".
The code provided is adequate to evaluate the claims.


I think some of it does, but at some point, when you have a large number
of samples of just-plain-wrong, you have to start asking why.

What's the number and where's the list? You have given 20 items, some
of which you admit are trivial.
In particular, consider the ("%f", sizeof f) example, and the example
where he uses sizeof(a) where a is a function parameter declared as an
array.  You don't have to see the book to understand those, and to see
the problems.

You might be able to argue that the first is a "typo" again -- but now
we have to ask whether your "Clearly" evaluation of the sprintf example
above is right, because he seems to be more unclear on format specifiers
than you thought.  Maybe he really does think that %c works on numbers
that way; he appears to think that %f can print sizeof values.

Does it matter what he thinks?

English departments of the 1950s, in the USA, taught the "new
Criticism" in which the author was axiomatically assumed either to be
all-knowing and all-enabled to communicate a pure intent, or deficient
if he was not either of those.

Analyzing Herb's books as Great Literature under New Criticism would
find them simply not as good as other books: big deal. This happens
every day: millions of books are published and some of them are not as
good as others.

"Deconstruction" on the other hand finds boners ("aporias") even in
Homer and stresses more how we make use of a text. It doesn't whine
about the author's Homeric nods.

As Nash and I discovered at the time C The Complete Reference was
published, there were (and are) multiple incompatible versions of C,
and Herb's audience also had to contend with this.

Booklovers don't write vicious little tirades itemizing a subset of 20
errors to imply hundreds, Peter. Hitler Youth do this.
The second, though, is just plain wrong, and can't be rendered right through
any trivial fix.


No.  It's not just the proof-reading errors, it's the conceptual errors..

I'll grant that some of the complaints were trivial, but not all were, and
they were only a small sample...  And I stand by the evaluation that it's a
very clear and lucid bit of writing describing a language similar to C,
but which is not actually C.

Where is the complete list, Peter?
The thing is... *Third Edition*.  And yes, substantial revisions had occurred;
in the second edition, page 53 (I think?) had "<>" used as a synonym for !=.
So there were definitely revisions... But revisions which tell us that some
of the examples had never even COMPILED, let alone been run, are not
necessarily encouraging.

I would expect a third edition of a book to be pretty carefully vetted.

OK, ten years prior to C: The Complete Reference, Donald Knuth had
pioneered a technology (Tex & Literate Programming) for so integrating
source with prose as to be able to continually test the source code.

This should have been adopted by publishers given Brian Kernighan's
observation in 1976 that there were errors in many computer books'
code snippets.

It was not: when I published Build Your Own .Net Language and Compiler
in 2004, it was more important (for a good reason or bad) to my
editors that I use special screen capture software for screen shots
than it was for the code quoted in my .docx and subsequently .pdf file
to be extractable and testable by an automatic tool just before I
sent the .pdf to the last time to Apress for shipment to a print
plant.

As it was I shipped GUIs with inspect() and test() buttons in the
download at Apress to have some control over bugs in the code, not as
it appeared on the printed page but in the download.

Under the conditions of production of C: The Complete Reference,
errors inevitably creep in. Had Brian's 1976 recommendations been
thought important, publishers would have been required by law to use
Tex and Literate Programming technologies to publish computer books,
but as usual, what programmers think "oughta be a law" does not
control. Herb did a more than acceptable job in the real world, and
did not deserve to be singled out by you, in a way that you knew, or
should have known, would self-replicate virally on the Internet, in
such a way as to magnify a trivial list of 20 typos and matters of
opinion!
 
S

spinoza1111

The only problem with K&R2's usage is that in the early chapters a
return statement is omitted, which is technically undefined behavior.
However, this was a pedagogical choice that is explained shortly
after, and correct code is provided from then on, IIRC. I won't attack
or defend their choice to allow undefined behavior for simplicity
sake, but this is quite different from doing so (regardless of the
reason) and then failing to correct the error both in explanation and
example.

Many of Schildt's errors from the time seem habitual, which suggests
that he himself didn't understand the language he was teaching well
enough to teach it. That is my gripe with these older books: a student
teaching a student usually results in two students with just enough
knowledge to be dangerous. Multiply that by however many copies his
best seller books have sold and the potential damage from first
generation readers alone is frightening.

Wow, Julienne, this is just nonsense. What you are saying is that
people can be "damaged" by "reading a book".

Please, think about that.

I now TEACH critical reading having been first requested to do so when
in Chicago I was teaching Visual Basic at uni level. And I teach
students that all reading is critical.

That is: the old Fundamentalist screed, against the reading of books
other than the Bible (or Q'uran), can be turned on its head.

The Fundamentalist says, "why read anything other than the Bible (or
Q'uran)? If it is in the Bible, or Q'uran, it is true: if it is not in
the Bible (or Q'uran) it is false."

But this is Fundamentally bullshit. For it implies that one should
only read the Bible (or Q'uran), once, and memorize it (which was the
practice of older traditions of Hinduism and Buddhism in preliterate
societies).

It's bullshit, because reading worth the name of reading CRITICALLY
CONNECTS with the text.

On the one hand it is alert for errors and aporias.

On the other, it makes an effort to cathect, to connect, to relate: to
find common ground. Peter Seebach could have said to himself "oh,
yeah, I can relate, I see where he's at" but he didn't, being a punk,
at least 15 years ago.

In a free society, no government, not even a powerful private entity
(such as a manipulated viral Internet opinion) has the right to claim
that a book's errors will have pernicious effect. This is because free
citizens in a free society will do as I did in January 1970 when I
bought my textbook for my first computer science class, Sherman's
"Programming and Coding for Digital Computers".

It described the IBM 7094 with its fixed word length as a paradigm
computer: but in lectures, the professor described the computer which
we were to use, which had a completely different architecture.

My figuring this out was and is called gittin' a edumocation. While no
author has the right to deliberately say things that aren't true, his
Homeric nods can be used in a free society to create truth in minds
sufficiently critical, sufficiently undulled by corporate horseshit,
to form their own views, and, in Herb's case, try his code out on
their own systems.

The C99 standards committee, and computer vendors who want to lay off
highly skilled compiler vendors to increase their stock price, have
done far more damage to C praxis than has Herb Schildt, because they
made an undefined and undefinable mess of what was a fairly clear
language before C99.
In all fairness, when I glance through newer books by Schildt, they
don't usually strike me as being technically unsound.

Oh aren't we dulcet fair, Julienne
Aren't we dulcet fair?
She does damage and speaks false
And then she moves on leaving not a lock of golden hair.

Oh aren't we dulcet fair? We have said what we have said
That a book may rot the reader's head,
And that it's perfectly OK
To go right ahead and say
Things that damage needlessly and hurt a family

Whilst over this darkling plain, where "ignorant armies clash by
night"
The corporations step on all of us as they wage their hideous fight.
 
S

spinoza1111

The first sample program in K&R2 is:

#include <stdio.h>

main()
{
    printf("hello, world\n");

}

I suggest that there are actually three problems with that code:

1. It uses implicit int.  This is of course perfectly legal in
   C89/C90, but I personally consider it to be a poor style.

2. It uses () rather than (void).  I've argued here before that,
   strictly speaking, this invokes undefined behavior unless the
   implementation specifially allows that declaration for main.
   "main()" is not exactly equivalent to "main(void)".  This is
   a rather subtle point, and it's plausible that K&R themselves
   weren't aware of it at the time.

3. It doesn't return a value.  This is valid in C99, but of course the
   book predates C99 by about 10 years.  In C89/C90, it returns an
   undefined status to the environment.  On my system, when I compile
   and run the program, I get:
        hello, world
        Exit 13
   The second line comes from my shell, not from the program.

And yes, I know who I'm criticizing.  These are minor points.
I still consider K&R2 to be one of the best books on C, and one of
the best programming books overall.

OK. So how come you do not defend Schildt? He's not as good as K & R,
but K & R contain errors, and Schildt is admitted to be a good writer.

Could it be?

Could it be that Schildt is a Midwesterner with a funny-sounding, too
German name to be thought worthy of respect?

Like me?

And for this reason he became your scapegoat for your own failings?
[...]

--
Keith Thompson (The_Other_Keith) (e-mail address removed)  <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"- Hide quoted text -

- Show quoted text -
 
S

spinoza1111

I disagree. This is supposed to be a technical reference work and its
clearly intended to be read by people who might not realise its a typo.
Such mistakes should not exist, and if they do there should be an
erratum list somewhere. I don't think there is.

For my money, typos like this are as bad as a history book listing Queen
  Victoria as dying in 1902 or Las Vegas as being the capital of Nevada..
You just can't have them and remain credible.

The confusion here is between a constructed entity (C praxis and
theory) of trivial import, and real biological, historical and legal
facts. Since any one of us can in principle write a compiler or OS as
part of a supportive community (Linus Torvaldys having stunningly
proved this by example), while Queen Victoria was powerless over the
Grim Reaper's exact arrival, and the legislature of the state of
Nevada would have a fit, THERE IS A DIFFERENCE between "nature" and
"second nature" here which applies, and to treat C as a holy relic is
bullshit qed.

One reason I'd rather teach rug rats today is the grim self-importance
of programmers over such trivial, nasty and dead things, a self-
importance coupled shamefully with a mulish refusal to improve along
the one dimension that might make sense in terms of human survival:
software safety at the bare metal level.
 

Ask a Question

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

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

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top