A note on personal corruption as a result of using C



"Truth is a moral category" - Adorno

Many people in this ng are personally corrupt and use this ng to take
out their corruption on others. Part of the reason is that in their
professional, corporate lives, they are forced, more or less, to
"drink the Kool-Ade" in the form of assenting to false propositions.

Notably, this is evident in their support for The Lies of C. For
reference, here are some of the major Lies of C, the loyalty to which
over time has transformed Brian Kernighan from someone who wrote well
and honestly On Programming Style in 1976 to someone, today, who
doesn't understand OO and does not care to learn despite his
affiliation with a research university, and which cause the lie-based
personality destruction in this ng...in which people systematically
cover up their mistakes, and gossip about people who don't.


THE LIES OF C

"A string cannot contain Nuls" Yes it can. Data arrives as strings and
needs to be validated, but C makes it impossible. It becomes
impossible to write effective string validation routines by definition
if the input isn't even a string: garbage in, garbage out was never
truer.

"A string is 8 bytes" No it isn't and this has not been the case since
under Deng Xiao Peng China entered the real world.

"Aliasing gives me power" No it doesn't. It means that you have been
too lazy to find an effective algorithm.

"Don't make me think! Just make the behavior undefined in the
standard!" Up yours, pal.

"A regular expression is what my code can handle" No, it isn't: the
theory was developed before computers.

"A struct is a class" No, it isn't.

"A for is just while with sugar": no it isn't. The for loop needs to
evaluate invariants before it starts, but if you send a boy (Ritchie)
to do a man's job, you get a useless for which might as well be a
while.

"Here's the preprocessor. Don't use it.": a Biblical injunction:
here's the apple tree, guys. Don't eat the apple and don't drink the
Kool Ade: but you must and will, and I'm God.

"Pointers are unsigned integers and as such compareable. No they
aren't. Yes. Just kidding, they aren't.": C "experts" often sound like
the villain in the movie Dodgeball, "White" Goodman.

"Here's post and pre increment. Don't try to guess when they happen":
there weren't enough lies in 1999, so yippee let's standardise the
language and add more!

"Hey, Einstein, your code has another bug": it is important, it is Job
One, to design a language that makes fools look wise, and wise men
look like fools, and it has something to do with the Beatles.


A personal note: in Seattle, in the 1980s, I successfully implemented
a safety critical system for hydrostatics working with a professional
engineer who gave me the choice between C and "True Basic", at the
time an attempt by the inventor of Basic to create a useful safe and
structured Basic. I chose True Basic, and my program grandfathered a
series of successful versions, one of which was used on the ship that
found the Titanic. It was rewritten in Visual Basic in the 1990s, of
course, and not by me, and I was proud to see it in its new guise.

A bit later I was engaged to write a system for real estate appraisal
and chose C: but this project failed because (1) I found myself having
to write all of modern Excel from scratch and (2) because of the need
to remedy hundreds of C gotchas, I spent more time in my library than
on the problem.

I felt ashamed of myself when I billed the client. I'd encapsulated a
string with Nuls in a struct with a long length, and was spending too
much time on proto-OO code, because once you have the struct you need,
in debugging, a toString() method and an inspect() method. In the
latter, I actually traveled the string in a try-catch structure, if I
remember correctly, to see if there was a memory exception.

The client was paying for The Great Proletarian C Library Rethink, and
this was completely unfair! I acquired a reputation at Princeton for
"knowing C" but would rather have people praise me for knowing Rexx,
Mike Cowlishaw's magnificent interpretive (later compiled) version of
PL.I: but because of computing fashion fascism, I found (at the Rexx
conference in Annapolis MD in 1990) that the people trying to vend
Rexx outside of the IBM mainframe were going down the tubes.

I then discovered Numerical Recipes in C, and, thinking I'd found
another Knuth, tried to use the code: but it was actually easier to
translate Knuth's phony "nutty professor" interpreter MIX than to use
Teukolsky et al.'s code, because they'd unlike Knuth farmed out the
development...and used, for the code, a typeface that confused upper
case I and lower case l, and, of course, used one character
identifiers!

I also saw C "experts" saying one thing and doing another. I was asked
to fix code written by Fat Bastards who'd loudly trumpeted their
belief that you shouldn't code "magic constants": whose actual code
allocated arrays as globals using constant and non-symbolized values.

Like an idiot I tried to extend C to the capabilities of True Basic by
treating the C library functions as primitives, not realizing at the
time that it's intellectually irresponsible to call something
mathematically "primitive" (where the word as used has no meaning
outside mathematics) if it calls itself undefined when the going gets
tough. It appears that no C maven has read a history of mathematics.
It troubled mathematicians that the square root of minus one seemed to
be undefined, and only the incompetents and the thugs tried to
legislate the trouble away.

This is why overuse of C causes personal corruption and is the reason
for the abuse of people on this ng. C is an evil language.

.


Loading