It says he’s a politician. That’s a professional bullshitter. That might corroborate he was doing this stuff on purpose for money. Unlike many politicians, he also seemed to use his influence to help and entertain a lot of people. Most (all?) of us do good and bad in our lives. I wouldn’t expect him to be any different, esp ambitious enough for writing books and taking office.
Note: The jumping in the pool with suit was funny. I’d have liked to see the reactions in person.
My worries kicked in when you said it was at over 200 libraries. If it sounds true and is horribly wrong, then I thought it could still be polluting peoples’ minds as they start programming. Maybe they’ll think they’re not smart enough as the examples don’t run. Maybe they’ll get past that with bad habits that lead to data corruption, crashes, and/or hacks. Maybe others will correct their bad practices.
I don’t know but the book at libraries ain’t good. Made me think about sending out emails to those in bigger areas to ask that they throw the book in the trash. Maybe send a recommendation for a good book for newcomers, too. What’s the best one for that you think? In that hypothetical scenario, I’d also note that the language doesn’t change a whole lot over time like most IT stuff. So, whatever they buy they won’t have to replace every year. Lots of small libraries avoid computer books if they obsolete too much.
Maybe they’ll think they’re not smart enough as the examples don’t run.
I couldn’t shake that thought the whole time I was reading it and it’s why I really detest sloppy tech books.
As for the books in the library, I’m thinking of finding the copies (1st and 2nd edition!) in my alma mater’s library and at least leaving a warning note in them.
Good idea. I might at least do a few on the list. Again, what’s the current, best recommendation for a beginner book in your mind in case they ask about one?
Truthfully, I don’t know a good C book for beginners. I have not looked at such books in a long time. I learned from K&R, but I was also learning it in university from different books at the time. None of them stand out in my mind. (I don’t think K&R is a great fit for beginners, especially with modern C.)
If anyone has suggestions, please feel free to comment.
There is 21st century C, though it assumes some general programming experience.
There is also Head First C, though I have no direct experience with it, as I read through the C# book in the same series, rather than the C book. I recall learning a lot from the book Head First C#, so that gives me some hope for Head First C.
To be fair, I don’t know that C is a very good first programming language these days, unless you’re starting in a domain that doesn’t require working with care around allocations, or unless you have someone helping you learn.
To be fair, I don’t know that C is a very good first programming language these days
I hope most of us agree on that by now. :) I always encourage them to learn something like Python first just to get into the mental habits of breaking problems down, implementing solutions precisely, and debugging others’ code. That’s hard enough by itself to learn without the low-level stuff in there. Once comfortable with that, then learn the low-level stuff with a book on something like C language.
I guess I’m looking for best intro(s) to C to recommend for someone with some programming experience in a high-level language.
21st Century C seemed like a decent introduction to C, and takes exactly that angle. It doesn’t have the abrasiveness of Learn C the Hard way, and starts out explaining the C environment so that you aren’t left ignorant of how to work with makefiles and the like.
While it’s a great book, I see it more as a ‘refresher’ than an intro text to a novice. Would still recommend K&R 2nd ed. for essentials, followed by this to get up to date practices.
My worries kicked in when you said it was at over 200 libraries. If it sounds true and is horribly wrong, then I thought it could still be polluting peoples’ minds as they start programming. Maybe they’ll think they’re not smart enough as the examples don’t run. Maybe they’ll get past that with bad habits that lead to data corruption, crashes, and/or hacks. Maybe others will correct their bad practices.
The same is true for multiple other wrong books and other texts. Best to avoid anything by Herb Schildt, Yashwant Kanetkar, Zed Shaw, Richard Reese, many tutorials like Beej’s guide to C, etc.
What’s the best one for that you think?
K&R 2nd ed. was definitely the best 20 years ago. Now I don’t know, but perhaps “C How to Program” by Harvey Deitel and Paul Deitel or “C Programming: A Modern Approach” by Kim King. And of course “C: A Reference Manual” by Harbison and Steele for reference. Also books written by Richard Stevens for UNIX programming.
I’d actually like an explanation for all of those—assuming of course, that they aren’t all making the exact same mistake, which seems highly unlikely. I was under the impression that Zed Shaw, albeit controversial, wrote good introductory material.
I don’t have the time to review them again. Now I think that I should write reviews them once and for all and then share every time they come up in a discussion. Like Ed’s thoughts on “Learn C The Hard Way”.
Indeed, Schildt’s C books are quite widely maligned. Unfortunately I read them when I was at school, keen to learn C - I didn’t know any better at the time (this was in the days when the web had only just been invented and hadn’t left CERN yet). Herb Schildt, Ray Duncan, Charles Petzold (Windows logo tattoo and all) and Michael Abrash were the programming heroes of my youth.
I liked this piece a lot. I feel it’s especially valuable for its attempt to get inside the head of the author. this sort of empathy and effort to understand why someone was so badly and obviously wrong is valuable and rare.
I wanted to explore that question some more in the post, but it got out of scope and is really its own huge topic.
The short version is that perhaps, as readers, we think they are asking “Is this content any good?” when what they’re really asking is, “Will this sell?”
In the preface of the second edition it says that the first edition was reviewed “by a professional C programmer hired by the publisher.” That programmer said it should not be published. That programmer was right, but the publisher went ahead and published it anyway.
Can you expand slightly on this? I understand that the second edition contains a blurb that someone they hired reviewed the 1st edition and decided it should never be published. I’m slightly lost in meaning here.
Did they hire a person for the second edition, to review the first edition where the conclusion was ‘that should have not been published’?
Hired a person to review the first edition, the conclusion was to not publish but they still decided to publish and included a blurb about it in the second edition?
I guess the question is, did they knew before publishing that it’s this bad.
Additionally was the second edition reviewed by the same person and considered OK to be published?
Here’s a longer excerpt from the second edition’s preface.
Prior to the publication of the first edition, the manuscript was reviewed by a professional C programmer hired by the publisher. This individual expressed a firm opinion that the book should not be published because “it offers nothing new—nothing the C programmer cannot obtain from the documentation provided with C compilers by the software companies.”
This review was not surprising. The reviewer was of an opinion that was shared by, perhaps, the majority of professional programmers who have little knowledge of or empathy for the rigors a beginning programmer must overcome to achieve a professional-level knowledge base of a highly technical subject.
Fortunately, that reviewer’s objections were disregarded, and “Mastering C Pointers” was released in 1990. It was an immediate success, as are most books that have absolutely no competition in the marketplace. This was and still is the only book dedicated solely to the subject of pointers and pointer operations using the C programming language.
To answer your question, then, all we can conclude is that a “professional C programmer” reviewed the first edition before it was published, recommended against publishing it, but the book was published anyway. If the quoted portion were the reviewer’s only objection, then we could surmise that the reviewer didn’t know much either, or didn’t actually read it.
little knowledge of or empathy for … a beginning programmer
This is an important point I feel that has been left out of the discussion of this book. Yes the book contains harmful advice that should not be followed. It is probably a danger to make this text available to beginners, and it serves as little more than an object of ridicule for more experienced readers.
However, I think there is something to be gained from a more critical analysis that doesn’t hinge on the quality or correctness of the example. This reviewer takes a step in the right direction by trying to look at Traister’s background and trying to interpret how he arrived at holding such fatal misconceptions about C programming from a mental model seemingly developed in BASIC.
Traister’s code examples are in some cases just wrong and non-functioning, but in other cases I can understand what he wanted to achieve even if he has made a serious mistake. An expert C programmer has a mental model informed by their understanding of the memory management and function call semantics of C. A beginner or someone who has experience in a different sort of language will approach C programming from their own mental model.
Rather than pointing and laughing at his stupidity, or working to get this booked removed from shelves, maybe there’s something to be gained by exercising empathy for the author and the beginner programmer. Are the mistakes due to simple error, or do they arise from an “incorrect” mental model? Does the “incorrect” mental model actually make some sense in a certain way? Does it represent a possibly common misconception for beginners? Is it a fault of the programmer or the programming language?
…an opinion that was shared by, perhaps, the majority of professional programmers who have little knowledge of or empathy for the rigors a beginning programmer must overcome…
What utter nonsense. This is inverse-meritocracy: claiming that every single expert is blinded by their knowledge & experience. Who are we to listen to then?
It seems like they’d prefer lots of terrible C programmers cropping up right away, to a moderate number of well-versed C programmers entering the craft over time. Which, now that I think about it, is a sensible approach for a publisher to take.
Exactly. There’s tons of news outlets, magazines, and online sites that make most of their money on fluff. Shouldn’t be surprised if computer book publishers try it. The managers might have even sensed IT books are BS or can risk being wrong individually given how there’s piles of new books every year on the same subjects. “If they want to argue about content, let them do it in the next book we sell!” ;)
I recommend a scene from Hal Harley’s film “Fay Grim” (the sequel to “Henry Fool”) here. At a point, Fay questions the publishers decision to publish a work (‘The Confessions’) of her husband - she only read “the dirty parts” but still recognized the work as “really, really bad”.
Excerpted from a PopMatters review: “One proposal, from Simon’s publisher Angus (Chuck Montgomery), will lead to publication of Henry’s (admittedly bad) writing and increased sales of Simon’s poetry (on which royalties Fay and Ned depend to live). (Though the writing is, Fay and Angus agree, “bad,” he asserts they must press on, if only for the basest of reasons: “We can’t be too hard-line about these things, Fay. Anything capable of being sold can be worth publishing.”)”
In my writeup, in the footnotes, I link to a promotional video for Gibilisco’s book. In the description it says, “One of my new books (co-authored with Robert J. Traister) has come off the press” but in the video he actually forgets his name.
If you watch the video (which is just bizarre) he says that all he did was redo the diagrams in Traister’s book.
Sometimes I’m not sure whether the internet has exacerbated or helped reduce the Dunning-Kruger effect. I want to believe it’s harder to convince oneself to write a book like this in the information age.
Hah! Thanks for this review. I cracked up at a few points:
In the preface of the second edition it says that the first edition was reviewed “by a professional C programmer hired by the publisher.” That programmer said it should not be published. That programmer was right, but the publisher went ahead and published it anyway.
Also
If you browse search results for other books by Traister you’ll find a lot of questionable sounding titles: Making money with your microcomputer (1982), Leaping from BASIC to C++ (1994), […] Cave Exploring (1983)
Pointers to functions are seen mainly as a way to obfuscate your program. “A pointer to a function serves to hide the name and source code of that function. Muddying the waters is not normally a purposeful routine in C programming, but with the security placed on software these days, there is an element of misdirection that seems to be growing.” (p. 109)
Here’s his obituary; he died 11 years ago. He seems like he was a nice man.
I found that in my searches. He did seem like a good person. It’s unfortunate his book is really, really bad.
It says he’s a politician. That’s a professional bullshitter. That might corroborate he was doing this stuff on purpose for money. Unlike many politicians, he also seemed to use his influence to help and entertain a lot of people. Most (all?) of us do good and bad in our lives. I wouldn’t expect him to be any different, esp ambitious enough for writing books and taking office.
Note: The jumping in the pool with suit was funny. I’d have liked to see the reactions in person.
Sounds like the C version of English As She Is Spoke
My wife teaches English and will really appreciate this. Thanks!
This type of naive translation is really common. A personal favourite
Fascinating read with good, detect work, Sir! :)
My worries kicked in when you said it was at over 200 libraries. If it sounds true and is horribly wrong, then I thought it could still be polluting peoples’ minds as they start programming. Maybe they’ll think they’re not smart enough as the examples don’t run. Maybe they’ll get past that with bad habits that lead to data corruption, crashes, and/or hacks. Maybe others will correct their bad practices.
I don’t know but the book at libraries ain’t good. Made me think about sending out emails to those in bigger areas to ask that they throw the book in the trash. Maybe send a recommendation for a good book for newcomers, too. What’s the best one for that you think? In that hypothetical scenario, I’d also note that the language doesn’t change a whole lot over time like most IT stuff. So, whatever they buy they won’t have to replace every year. Lots of small libraries avoid computer books if they obsolete too much.
I couldn’t shake that thought the whole time I was reading it and it’s why I really detest sloppy tech books.
As for the books in the library, I’m thinking of finding the copies (1st and 2nd edition!) in my alma mater’s library and at least leaving a warning note in them.
Good idea. I might at least do a few on the list. Again, what’s the current, best recommendation for a beginner book in your mind in case they ask about one?
Truthfully, I don’t know a good C book for beginners. I have not looked at such books in a long time. I learned from K&R, but I was also learning it in university from different books at the time. None of them stand out in my mind. (I don’t think K&R is a great fit for beginners, especially with modern C.)
If anyone has suggestions, please feel free to comment.
There is 21st century C, though it assumes some general programming experience.
There is also Head First C, though I have no direct experience with it, as I read through the C# book in the same series, rather than the C book. I recall learning a lot from the book Head First C#, so that gives me some hope for Head First C.
To be fair, I don’t know that C is a very good first programming language these days, unless you’re starting in a domain that doesn’t require working with care around allocations, or unless you have someone helping you learn.
I hope most of us agree on that by now. :) I always encourage them to learn something like Python first just to get into the mental habits of breaking problems down, implementing solutions precisely, and debugging others’ code. That’s hard enough by itself to learn without the low-level stuff in there. Once comfortable with that, then learn the low-level stuff with a book on something like C language.
I guess I’m looking for best intro(s) to C to recommend for someone with some programming experience in a high-level language.
21st Century C seemed like a decent introduction to C, and takes exactly that angle. It doesn’t have the abrasiveness of Learn C the Hard way, and starts out explaining the C environment so that you aren’t left ignorant of how to work with makefiles and the like.
It does recommend autotools, however.
While it’s a great book, I see it more as a ‘refresher’ than an intro text to a novice. Would still recommend K&R 2nd ed. for essentials, followed by this to get up to date practices.
The same is true for multiple other wrong books and other texts. Best to avoid anything by Herb Schildt, Yashwant Kanetkar, Zed Shaw, Richard Reese, many tutorials like Beej’s guide to C, etc.
K&R 2nd ed. was definitely the best 20 years ago. Now I don’t know, but perhaps “C How to Program” by Harvey Deitel and Paul Deitel or “C Programming: A Modern Approach” by Kim King. And of course “C: A Reference Manual” by Harbison and Steele for reference. Also books written by Richard Stevens for UNIX programming.
Why exactly would you say Beej’s guide to C isn’t a good tutorial?
I’d actually like an explanation for all of those—assuming of course, that they aren’t all making the exact same mistake, which seems highly unlikely. I was under the impression that Zed Shaw, albeit controversial, wrote good introductory material.
I don’t have the time to review them again. Now I think that I should write reviews them once and for all and then share every time they come up in a discussion. Like Ed’s thoughts on “Learn C The Hard Way”.
I have always thought that Herbert Schildt’s C books contained more mistakes than any other C books out there.
Clive Feather’s ‘famous’ review and a review of a later book by seebs (of obfuscated fame): C: The complete nonsense
Indeed, Schildt’s C books are quite widely maligned. Unfortunately I read them when I was at school, keen to learn C - I didn’t know any better at the time (this was in the days when the web had only just been invented and hadn’t left CERN yet). Herb Schildt, Ray Duncan, Charles Petzold (Windows logo tattoo and all) and Michael Abrash were the programming heroes of my youth.
That was freaking hilarious. Good one.
I liked this piece a lot. I feel it’s especially valuable for its attempt to get inside the head of the author. this sort of empathy and effort to understand why someone was so badly and obviously wrong is valuable and rare.
If the book is so bad, then what is the publisher doing? Isn’t it their job to weed out bad content?
I wanted to explore that question some more in the post, but it got out of scope and is really its own huge topic.
The short version is that perhaps, as readers, we think they are asking “Is this content any good?” when what they’re really asking is, “Will this sell?”
Can you expand slightly on this? I understand that the second edition contains a blurb that someone they hired reviewed the 1st edition and decided it should never be published. I’m slightly lost in meaning here.
I guess the question is, did they knew before publishing that it’s this bad.
Additionally was the second edition reviewed by the same person and considered OK to be published?
Here’s a longer excerpt from the second edition’s preface.
To answer your question, then, all we can conclude is that a “professional C programmer” reviewed the first edition before it was published, recommended against publishing it, but the book was published anyway. If the quoted portion were the reviewer’s only objection, then we could surmise that the reviewer didn’t know much either, or didn’t actually read it.
This is an important point I feel that has been left out of the discussion of this book. Yes the book contains harmful advice that should not be followed. It is probably a danger to make this text available to beginners, and it serves as little more than an object of ridicule for more experienced readers.
However, I think there is something to be gained from a more critical analysis that doesn’t hinge on the quality or correctness of the example. This reviewer takes a step in the right direction by trying to look at Traister’s background and trying to interpret how he arrived at holding such fatal misconceptions about C programming from a mental model seemingly developed in BASIC.
Traister’s code examples are in some cases just wrong and non-functioning, but in other cases I can understand what he wanted to achieve even if he has made a serious mistake. An expert C programmer has a mental model informed by their understanding of the memory management and function call semantics of C. A beginner or someone who has experience in a different sort of language will approach C programming from their own mental model.
Rather than pointing and laughing at his stupidity, or working to get this booked removed from shelves, maybe there’s something to be gained by exercising empathy for the author and the beginner programmer. Are the mistakes due to simple error, or do they arise from an “incorrect” mental model? Does the “incorrect” mental model actually make some sense in a certain way? Does it represent a possibly common misconception for beginners? Is it a fault of the programmer or the programming language?
What utter nonsense. This is inverse-meritocracy: claiming that every single expert is blinded by their knowledge & experience. Who are we to listen to then?
It seems like they’d prefer lots of terrible C programmers cropping up right away, to a moderate number of well-versed C programmers entering the craft over time. Which, now that I think about it, is a sensible approach for a publisher to take.
Cynically? The publishers job is to make money. If bad content makes them money, they’ll still publish it.
Exactly. There’s tons of news outlets, magazines, and online sites that make most of their money on fluff. Shouldn’t be surprised if computer book publishers try it. The managers might have even sensed IT books are BS or can risk being wrong individually given how there’s piles of new books every year on the same subjects. “If they want to argue about content, let them do it in the next book we sell!” ;)
I recommend a scene from Hal Harley’s film “Fay Grim” (the sequel to “Henry Fool”) here. At a point, Fay questions the publishers decision to publish a work (‘The Confessions’) of her husband - she only read “the dirty parts” but still recognized the work as “really, really bad”.
Excerpted from a PopMatters review: “One proposal, from Simon’s publisher Angus (Chuck Montgomery), will lead to publication of Henry’s (admittedly bad) writing and increased sales of Simon’s poetry (on which royalties Fay and Ned depend to live). (Though the writing is, Fay and Angus agree, “bad,” he asserts they must press on, if only for the basest of reasons: “We can’t be too hard-line about these things, Fay. Anything capable of being sold can be worth publishing.”)”
Reads like Miss Marple.
I would assume K&R had much more influence than Traister.
I sincerely hope so.
[Comment removed by author]
In my writeup, in the footnotes, I link to a promotional video for Gibilisco’s book. In the description it says, “One of my new books (co-authored with Robert J. Traister) has come off the press” but in the video he actually forgets his name.
If you watch the video (which is just bizarre) he says that all he did was redo the diagrams in Traister’s book.
Sometimes I’m not sure whether the internet has exacerbated or helped reduce the Dunning-Kruger effect. I want to believe it’s harder to convince oneself to write a book like this in the information age.
Hah! Thanks for this review. I cracked up at a few points:
Also
😂
Cave Exploring sounds like it could be harmful to your health. Given Traister’s reputation in C programming.
Amazing. I’m going to buy this book just for the entertainment value.
demand -> supply
My god. It’s like a parody of itself.