Even that's not enough; there must be actual malice -- IOW, a
deliberate attempt to harm someone's reputation by spreading
falsehoods.
In the case of a private person, spreading discreditable truths is
also libel, I'm afraid. Here's what Blackstone's commentaries say
(4-150):
"For the same reason it is immaterial with respect to the essence of a
libel, whether the matter of it be true or false; since the
provocation, and not the falsity, is the thing to be punished
criminally: though, doubtless, the falsehood of it may aggravate its
guilt, and enhance its punishment."
Here's the unabridged Oxford definition of the Law use of Libel as a
noun:
"Any published statement damaging to the reputation of a person"
In Seebach's case, there is an aggravating falsehood in Blackstone's
sense. This is his inference from what he considers an "error" in
Schildt to the conclusion that Schildt doesn't know about the facility
or C in general. When Seebach fucks up one line strlen, we're not
supposed to make this inference.
This is unwarranted, since anyone with publishing experience knows
that the production process introduces errors (both Seebach and
Heathfield have admitted that there own books contain errors).
It could be argued that C:TCN is a deliberate attempt to harm
Schildt's reputation as an authority on the C programming language,
This is what it would appear to be.
but it is not using falsehoods to do so; it is using examples of
"The 'heap' is a DOS term" is a falsehood, and, absent working face to
face to Schildt, Seebach had no right to make inferences about his
competence, inferences which are proven false by Schildt's large
number of books, each of which has been more commercially successful
than Seebach or Heathfield.
Schildt's own writing compared to the language definition to
The "language definition" as found in the standards cannot be used to
write compilers or even understand how to use C (Seebach's code is
exhibit A). They fail to define significant semantics, because by the
time they were drafted, there existed several incompatible
implementations, and the standards writers appear to have no mandate
to make these compilers incompatible with a standard.
The only way to square this circle was to create a non-deterministic
semantics, in which (to take only one simple example) the programmer
cannot code a(b=0, b) and expect in all cases that the values of the
formal parameters will both be zero.
In this code
#include "stdio.h"
#define MAX_SIZE 100
void b(int c, int d)
{
printf("%d %d",c,d);
}
int main()
{
int e = 4;
b(e = 0, e);
return 0;
}
my Microsoft C++ express compiler in C mode prints 0 0, but I'm not
"supposed" to expect this because in "standard" C the order of
evaluation has been "defined" as nondeterministic.
But if the order of evaluation is nondeterministic, this means that a
truly conformant compiler would have to use a random number generator
to generate code for matching formal and actual parameters.
This is a result of vendor greed, and the Bush-Clinton spirit of
allowing the private sector to highjack the public good.
A sensible compiler cannot be written for "standard" C nor can a
sensible book for real programmers be written about it. Schildt is at
most guilty of a little *schlamperei* in going along to get along to
get along with a marketing plan at McGraw Hill, which deliberately
ignored, as you clowns ignore, the essential problem.
Schildt compromised himself as I compromised myself when the Registrar
of my university, for whom I'd written a lot of software and who
considered me a genius, counseled me to get my ass to Champaign-Urbana
and learn (as Herb there learned) REAL computer science using real DEC
gear instead of IBM mainframes. Although I did go to grad school in
Chicago, I wound up wasting time by having to reinvent structured
programming in assembler and Cobol.
But all programmers do this, because they have relationships and
children as I did. The real evil are programmers handed access to
higher-level platforms who then stalk and shit upon their brothers and
sisters for having to make a silk purse out of a sow's ear and being
underwhelmed by the void main issue...because it's 3:00 AM in the
server room and they have to get it working.
demonstrate his lack of authority.
In short, it is not libel to point out that someone doesn't know what
they're talking about if you can demonstrate that they really don't
know what they're talking about (at least in the US).
Seebach hasn't demonstrated this, since as Dr McClean has pointed out,
his tone is biased and he makes errors of his own. But see Blackstone:
the malice and not the truth is what determines libel.
And honestly, the intent is not to harm Schildt; the intent is to
The tone implies something that is in fact the secret fear of every
programmer; you guys are secretly soiling yourselves in fear that your
incompetence will be discovered. This is because American business
highjacked computers in order to give a gloss of Science and Reason to
the game of expropriation. In so doing, they needed programmers able
to get code to "work" in the sense of running with or without errors.
In the "hacker ethos" this became "rough consensus and working code",
and despite the hackers' illusion that they were free men, they were
men so willing to compromise and **** with truth-as-software-
correctness that they, and not educated or cultivated men or women,
program computers today and create the ongoing software crisis.
Schildt was made "it" by Seebach because Seebs was able to get
corporate jobs as a programmer but had never taken computer science
nor been certified as one who knew his trade except in the most sloppy
ways: that approbation which one can get from making things work, or
run, or appearing to. By stalking Schildt, Seebach tried to exorcise
Seebach's demons, but it gives him only temporary Nepenthe.
alert non-experts that this reference is substantially flawed and
should not be used. The reason we pile on Shildt is that a) he is
advertised as an authority on the language, b) his books on C have
been *consistently* awful, and c) after *four* editions he *still*
makes stupid mistakes.
You have never made this case, because you can only criticise his lack
of conformance to Linux and his "failure" to tell his readers about
nondeterministic operations...information which is useless on a
specific compiler and platform which works deterministically.
I agree with Harter that Seebs' updated page could be substantially
improved upon by focusing less on individual mistakes and addressing
larger structural failings (sins of both omission and commission).
It's clear that, as a C programmer, Schildt is pretty damned lazy and/
or sloppy; his examples are riddled with stupid runtime errors (such
as redirecting stdout *before* prompting for input, using the wrong
conversion specifiers in printf() statements, etc.) and bad practice
(gets() still appears in his examples, feof() as a loop condition,
etc.). It's also clear that some (much?) of his explanatory text is
at variance with the language definition (be it the standard or a
specific implementation). But something that I think Seebs needs to
make clearer is how much Schildt *doesn't* explain about the language
(the point about structure padding is a good one).
As I have said, no professional programmer or educated person such as
Dr McClean expects to self-moronize and blindly type in code. I
realized in my first computer science class that the assembler code
for the IBM 7094 wasn't going to work on a 1401; tyros, contrary to
mythos, are in my experience often smarter than "experienced"
programmers who are moronized by corporate life.
And when Seebach turns to the vastly more important expository Schildt
text, Seebach's lack of education is plain.
Here's a howler from CTCN-4 that shows this: "similarly, "the heap" is
not necessarily a single region."
To the uneducated, whether in CS or other fields, a grave skepticism
is their simulation of the education they do not have, as in the case
of Creationist "scholars" who express doubt about a "theory" and trust
to the ignorance of their readers on the nature of a scientific
"theory".
To the half-educated fraud, whether Seebach or the Creationist, the
best kind of statements are open-ended and nondeterministic because
these types of statements, as opposed to e=mc**2, four colors suffice,
or three control structures suffice, are harder to FALSIFY.
Because Seebach never took a single class in CS, nor, apparently, a
class in philosophy of science, nor, apparently International
Baccalaureate classes in Theory of Knowledge that I teach, he believes
that he can get away with gravely intoning "the heap is not
necessarily a single region". This is because he skipped computer
hardware -oftware architecture which despite the passing of highly
leveled architectures such as the VAX still uses Dijsktran "separation
of concerns" to make things CLEAR.
At some implementation level, the heap may not "necessarily" be a
single region. It may be a linked list of pointers or chunks of
storage. It may in fact be several linked regions. At the level of
engineering it might be scattered over several chips on a board, and
you may be able to watch it being used in several different places. At
the level of physics it's particles dancing in a void who do not know
what they do.
But the computer SCIENTIST as opposed to the hacker, or stalker, knows
that it's her job to e pluribus unum, and to make at some
comprehensible singular HEAP out of lower-level implementation
details. To assault and stalk based on denying the scientist the
ability to form a concept is not only libel and stalking. It's also
digital Maoism.
Exhausted middle-aged mothers and grandmothers bring their shining
sons and daughters to my classes in Hong Kong in hopes that they will
major, in some cases, in computer science in Hong Kong. In many cases,
these mothers and grandmothers lived in mainland China in the 1960s
and 1970s and were denied an education by thugs who disrupted classes
and stalked decent teachers and authors based on what these assholes
thought were "errors". Seebach is not as destructive as they but he is
as evil, and contemptible because so impotent in the long run. And the
Teabaggers are Seebach scaled up: Fascism.