15 ms·
Deconstructing K&R C Is Dead (2015)
- meritt 10y agoFYI, this rant is from January 2015. Surprised to see it showing on HN today. If anyone is interested in what he removed, you can find it here: https://web.archive.org/web/20150101224641/http://c.learncodethehardway.org/book/krcritique.html https://web.archive.org/web/20150101224641/http://c.learncod...
- dang 10y agoIt wasn't obvious when this dates from, but we'll take your word for it and add 2015 to the title.
- meritt 10y agoThanks. Archive has the 'dead' article first indexed Jan 6th, 2015. https://web.archive.org/web/20150106191636/http://c.learncodethehardway.org/book/krcritique.html https://web.archive.org/web/20150106191636/http://c.learncod...
- Vivtek 10y agoWhat he removed is actually a pretty fine essay on the pitfalls of classic C. Maybe I'm just old enough to be the target demographic, but I found it pretty illuminating. Zed is frustrating sometimes.
- wyldfire 10y agoI am one of the many stalwarts whose bookshelf contains a prominent copy of K&R C. But over the last 10 years or so I find myself referring to it less and less often. It's a huge problem that it stopped at the second edition. The 2nd ed was great in 1999. It is not great in 2016, it is only good. > "You're right, but you're wrong that their code is bad." I cannot fathom how a group of people who are supposedly so intelligent and geared toward rational thought can hold in their head the idea that I can be wrong, and also right at the same time. Zed, you're right, period. But I think you probably just hurt people's feelings because they revere Kernighan and Ritchie and this is one prominent item of their legacy. > But C? C's dead. It's the language for old programmers who want to debate section A.6.2 paragraph 4 of the undefined behavior of pointers. Good riddance. I'm going to go learn Go (or Rust, or Swift, or anything else). Amen. The union of those three are likely to address all use cases that C handled in the past. BTW the blog post would be clearer if titled: " 'Deconstructing K&R C' is dead". Gotta love mixing up C with natural language operator precedence ambiguity. :)
- deleted 10y ago[deleted]
- na85 10y ago>Zed, you're right, period. But I think you probably just hurt people's feelings because they revere Kernighan and Ritchie and this is one prominent item of their legacy. This is hilarious, because programmers by and large love to pride themselves about being stoic, logical, and practical in lieu of letting emotion dictate what they do. Since when do programmers give a shit if people's precious fee-fees contradict what is technically correct? (The best kind of correct!)
- AlexeyBrin 10y ago> Since when do programmers give a shit if people's precious fee-fees contradict what is technically correct? Programmers at least the ones I've seen in my life are not from Vulcan :). In other words, we humans, are all driven by our emotions like it or not. The problem is that some people chose to believe that they are pure rational beings, therefore they are always right.
- pcwalton 10y agoThe thing is, I think you can simultaneously have all of these opinions: (a) K&R were/are top-notch computer scientists; (b) K&R was a fantastically written book; (c) C was a great language in 1978; (d) we should be moving away from C in 2016. The fact that we didn't know as much about programming languages in 1978 as we do now in no way diminishes the significance of the work. I think that C should rapidly be moving toward obsolescence, and I hold K&R in great esteem.
- wyldfire 10y agoAgreed on all accounts.
- ternaryoperator 10y ago> Gotta love mixing up C with natural language operator precedence ambiguity. :) Well, then, in that case you shouldn't you reall refer to it as K&&R
- markhahn 10y agojoke? the author is self-important in precisely the way that K&R weren't.
- bsg75 10y ago> I cannot help old programmers. Unfortunate he uses this categorization. The problem is a mindset that can exist in any generation.
- rhexs 10y agoLow level languages are tough. Gaining a mastery of C does require knowing quite a few strange rules and quirks and it's certainly a bit harder than learning Python. The C FAQ does a good job of illustrating some of the more confusing parts. Sure, I wish I could write Go instead, but that isn't going to happen on the many embedded systems I work on. This is a rather strange and insulting article. I'm not sure why Zed can't help "old programmers" nor do I understand why he's angered that individuals know about undefined behavior in C. Is there any background to this or did he have the misfortune of being insulted on IRC? Edit -- I googled for a bit and discovered this was in response to someone doing a pretty good job technically reviewing the book for free! http://hentenaar.com/dont-learn-c-the-wrong-way http://hentenaar.com/dont-learn-c-the-wrong-way Perhaps the title was a bit inflammatory. Zed's rebuttal is at https://zedshaw.com/2015/09/28/taking-down-tim-hentenaar/ https://zedshaw.com/2015/09/28/taking-down-tim-hentenaar/ and is a great example of how not to react to constructive criticism. My favorite part is his safercopy function and the lack of size_t. And finally, to leave us all with a quote from Zed's rebuttal: "Over this next week I’m going to systematically take down more of my detractors as I’ve collected a large amount of information on them, their actual skill levels, and how they treat beginners. Stay tuned for more." Wow.
- vacri 10y ago> nor do I understand why he's angered that individuals know about undefined behavior in C If you read the first part of that same sentence, it should give you a clue.
- kinkdr 10y ago> Low level languages are tough I disagree. Low level languages, especially C, are the easiest to master. K&R book is the only book you need to read to know everything about C. All you need after you understand the fundamentals is a bit of discipline. C++ on the other hand is extremely difficult to master. Just have a look at the rules for Rvalue references and you will see what I mean. It may be easier for a complete novice to write some code that doesn't crash in C++ than it is in C, but not mastering it, or even be good at it.
- 10y ago
- pcwalton 10y agoThis is obviously a bitter rant, and devolves into uncomfortably ageist territory about halfway through. I do agree that we should be moving away from C and C++, though. It's pretty simple, really: C was a pretty good language in 1978. We didn't know a lot of things in 1978 that we do now in 2016. It now makes sense to revisit those decisions in light of nearly 40 years of practice. The so-called "PL Renaissance" has given us a whole host of new languages which have steadily chipped away at the dominance of C and C++, and I think this is a healthy trend that ought to continue.
- jimbokun 10y agoIt's remarkable, though, that it's taken 40 years to make much head way in replacing C. There's still a lot of C code out there, and a lot of new C code still being written.
- pcwalton 10y ago> It's remarkable, though, that it's taken 40 years to make much head way in replacing C. I don't agree: it's been a long process, but the trend is unmistakable. It's hard to remember now, but in the early '90s C and C++ were completely dominant. Nowadays they're much more specialized: you're as likely to build your company on Java or even Python/Ruby as you are to build it on C++. People talk about how it's hard to hire C++ engineers nowadays, while in the '90s "C++ engineer" was pretty much synonymous with "programmer". And so on.
- blub 10y agoThat's quite normal, because the market today is much larger and diverse. e.g: It doesn't make any sense to build web apps in C or C++ and this type of software is very spread nowadays but was virtually non-existing back then. The interesting question is what will mobile devices, the IoT and embedded devices in general be programmed in? C and C++ are popular choices today, so the trend is not really "unmistakable".
- 10y ago
- cognivore 10y agoI have mixed feelings about this, but I cannot disagree with it. a. I haven't written a program in C in over 10 years. I wrote software 5 days a week for those 10 years. b. I wouldn't want to write a program in C now. c. The first "high level" programming language I learned was C, from a book (not K&R C), while travelling in Asia, without a computer. It taught me well, but I immediately went on to other languages. e. I can't shake the idea that there is some value to knowing that low level stuff, even though I don't use it much myself. Maybe linux kernel hackers will keep it alive. I know game programmers use it a lot as well. But for the majority of us, it's kind of an arcane skill now.
- stillworks 10y ago> b. I wouldn't want to write a program in C now. When all else fails... come back and say this again ! But for the time being ignorance be bliss.
- broodbucket 10y agoKernel hackers will definitely keep it alive, even if you manage to avoid every other hugely prolific C codebase out there. Being an arcane skill makes it an appealing skill to learn. There's more kernel jobs then there are university graduates capable of properly writing C.
- DLA 10y ago> a. I haven't written a program in C in over 10 years. I wrote software 5 days a week for those 10 years. That's fine. Perhaps the kind of programs you have been writing and not a good fit for what C is great at doing. That does not take away from C or its use for appropriate work.
- keithnz 10y agoI use it all the time in embedded systems. It's very common. Basically there is no good alternatives until you get to much bigger chipsets. However in the embedded world you tend to go with a limited subset of C. Especially no use of dynamic memory.
- jimbokun 10y agoMaybe this made Zed feel better, but communicates almost nothing to any outside reader. Not a single actual quote from any of his detractors, for the reader to judge for him or her self if their criticisms have any validity. The categorical declaration of "I cannot help old programmers," without providing the evidence he has for this claim. Lots of name calling, though. No link to the original content, to determine for ourselves whether or not it was fair to K&R's work. I suppose Zed just meant this to be personally cathartic, and didn't realize he posted it on a public web site where other people can read it?
- Animats 10y agoMaybe this made Zed feel better, but communicates almost nothing to any outside reader. Yes. I can't figure out exactly what he's ranting about. He writes "I will make it clear that my version of C is limited and odd on purpose because it makes my code safe." Does this mean he defined a safer subset of C? (There are lots of those. I've taken a crack at that myself [1], but it's politically hopeless. Rust is the way forward.) Why would anyone want to write K&R C today? It's awful. It didn't even check function parameter types. Struct fields were just offsets; you could use one on a pointer of the wrong type and the compiler wouldn't complain. (Considering that Pascal predated C by some years, and had a sane type system, this was kind of lame. But they were trying to compile in 64K of 16 bit words in one pass. That was an adequate excuse in the 1970s.) The first ANSI C at least had a sane type system. [1] http://www.animats.com/papers/languages/safearraysforc43.pdf http://www.animats.com/papers/languages/safearraysforc43.pdf
- Twirrim 10y ago> I suppose Zed just meant this to be personally cathartic, and didn't realize he posted it on a public web site where other people can read it? He's done these kinds of rants repeatedly. It's his counter-productive style. I can't judge his arguments on a technical level, (I do think his introduction to various language guides are excellent.) but these kinds of rants surely just alienate more people than they persuade?
- pfarnsworth 10y agoTo be perfectly blunt, C does not need Zed Shaw "saving" it. He can go ahead and ignore it or end his book or rewrite the chapter or spout his vitriol over how stupid C programmers are; nothing he does will make an impact.
- pjmlp 10y agoWe have CVE for that.
- gravypod 10y agoI can't see how you could say C is dead when there isn't really anything that can replace it. I'll take it as dead when the Linux kernel, or it's futuristic replacement, is written in something other then C. If you are talking about at the user-space level, then yes I can see that. But you shouldn't assume your single use case, higher level user space apps, is the only use case.
- pcwalton 10y agoIn what way, specifically, is Rust unsuitable for building a kernel? There's no argument that the Linux kernel is currently written in C. But that doesn't prove that nothing exists that can replace C.
- z92 10y agoWe can't say if Rust is a suitable replacement unless a a team tries to write a kernel in Rust, and then comes up with a comparative result. Right now C is only the tried and true solution. The rest are possibilities only.
- pcwalton 10y agoThere are two ways to interpret your post. The first is "there's no kernel written in Rust that is as complete as Linux". The second is "Rust is unsuitable for a kernel". The first interpretation is obvious and completely uninteresting; the second is something you haven't supported at all.
- mveety 10y agoPeople are writing a kernel in rust[0], and a pretty good unix-like at that. I don't like rust, but it's a fine language for that and in general. [0] http://www.redox-os.org/ http://www.redox-os.org/
- gravypod 10y agoWell if you can implement a kernel that does everything that Linux does, and is entirely backwards compatible, then I'll say "ok, the reign of C is over". Till then, C is going no where.
- ExtremisAndy 10y agoThis childish rant is embarrassing. With millions and millions of lines of C code basically running the internet and of vital importance to countless devices, calling it a s*y language is beyond ridiculous.
- pcwalton 10y agoAsbestos was also used in millions of buildings and was vitally important as insulation. It was also something that was a bad idea and something that we needed to move away from.
- mturmon 10y agoI agree with where you're coming from. Another analogy that comes to mind is knob-and-tube wiring (https://en.wikipedia.org/wiki/Knob-and-tube_wiring https://en.wikipedia.org/wiki/Knob-and-tube_wiring). It's an older home wiring technology that works fine for years if undisturbed, is still present and working OK in homes all over, was invented in the early days of electrified homes, requires considerable skill to install properly, tends to be unsafe if not handled skillfully, is expensive and delicate to modify, has no hidden components, allows interesting wiring layouts because conductors are separated, ... One could go on with the obvious parallels. (I learned on a PDP-11.)
- pcwalton 10y agoYeah. The weird thing is that in other industries, people have no trouble admitting that the old stuff is often problematic and needs to be replaced. In the supposedly forward-looking tech industry, though, we stick with our tools from 1978 and stubbornly resist admitting that we have learned anything since then. It's strange.
- cwyers 10y agoThings look different from the outside than they do on the inside. The old saw of "science advances one funeral at a time" is true in lots of fields, you just probably see a lot more examples in programming because you spend more of your time there.
- lkrubner 10y agoDo remember that this guy wrote: "I’ve more or less kept my mouth shut about some of the dumb and plain evil stuff that goes on in the Rails community. As things would happen though I’d take notes, collect logs, and started writing this little essay. As soon as I was stable and didn’t need Ruby on Rails to survive I told myself I’d revamp my blog and expose these fucks." and: "After Mongrel I couldn’t get a gang of monkeys to rape me, so forget any jobs. Sure people would contact me for their tiny little start-ups, but I’d eventually catch on that they just want to use me to implement their ideas. Their ideas were horrendously lame. I swear if someone says they’re starting a social network I’m gonna beat them with the heel of my shoe." So that is very much his style of writing.
- davidw 10y agoHe had this big rant about Debian that was about Debian trying to lock people in because of 'business' or something absurd like that. Debian is a non-profit! I found it irritating because it wasn't even "he's being a jerk, but he's right". It was just plain wrong.
- deleted 10y ago[deleted]
- dang 10y agoI don't think bringing out a list of generically outrageous things someone said in the past rises to the level of discourse we're trying for here. We detached this subthread from https://news.ycombinator.com/item?id=11727718 https://news.ycombinator.com/item?id=11727718 and marked it off-topic.
- lkrubner 10y agoThe man has a long history of writing angry rants. You don't think that would influence how people might read his current rant? You don't think the readers of Hacker News might like to know about his past history of similar behavior? You don't think it helps interpret the level of anger in his current rant?
- DLA 10y agoOh Zed. Really? There is nothing wrong with carefully crafted C code for applications were it is the best suited tool. Sure, there are sharp edges. True you can write crappy, security nightmare code. You do make some good points. I agree Go is fantastic. Rust is coming along as well. However, C still runs the world. That's not changing anytime soon. Not with the explosion of IoT and GPU type devices. And, hello Linux kernel and all the glorious command line tools on nix. Try using Go or Rust (love both, x2 for Go) to allocate say a hundred GB of memory for some huge/fast in-memory data processing. Let me know how far you get. Your rant is as polarizing as those who are blind to C's flaws (yes, there are a few). Stop saying "don't write C", that's just childish. Rather, what about "let's write better, less security flaw prone C." As an engineer, one ought to choose wisely when choosing tools. This means pros and cons and balanced unemotional decision making. Not a holy war against a given tool. And I am a professional programmer. Let's do C where C makes sense. (Edit: fixed typos)
- vacri 10y ago> Stop saying "don't write C", that's just childish. Rather, what about "let's write better, less security flaw prone C." A consistent theme throughout the article is that he's actually more interested in teaching people to write C well than fight with pedants. He's not torching his book, he's updating it and removing the contentious chapter. "let's write better, less security flaw prone C." is exactly what he's trying to say - the "don't write C" bit at the end is more about it being a dinosaur than a childish huff, though there is a little of that in that comment.
- kibwen 10y ago> Try using Go or Rust (love both, x2 for Go) to allocate > say a hundred GB of memory for some huge/fast in-memory > data processing. Why would this be a problem in Rust? It literally doesn't impose any overhead on memory consumption, at least not any that C doesn't (e.g. padding). Dropbox has clusters of machines that manage exabytes of data whose core is written in Rust.
- pcwalton 10y ago> Try using Go or Rust (love both, x2 for Go) to allocate say a hundred GB of memory for some huge/fast in-memory data processing. Let me know how far you get. Um, what's wrong with that in Rust? > Rather, what about "let's write better, less security flaw prone C." We've been trying this for the past 40 years and we've completely failed to stem the constant tide of new game-over security flaws. I think it's time to admit that if we couldn't do it in 40 years, we've failed.
- barbs 10y agoI can't really speak for Zed's expertise and/or value to the programming community. From what I gather, a few of his projects are widely used (Mongrel comes to mind), and he seems to know his stuff pretty well. I also identify strongly with his Programming Motherfucker[0] rant. But man, the guy is insecure to the point of requiring therapy or something. He seems obsessed with his image and status, and the slightest criticism will cause him to lash out in an immature and ridiculous manner. Past rants have him making lewd comments about penis-sizes and challenging others to a physical fight[1]. It's a shame, because if he just relaxed a bit and took criticism gracefully, he'd probably find himself to be a bit more valuable to the community and employers, and would actually be a pretty decent dude. Instead, his writing seems to reek of a constant need to validate and defend himself. This is probably an unfair comparison, but I can't help but think of Terry Davis: a brilliant programmer hindered by mental issues. Schizophrenia is obviously not the same as insecurity, but I think the situation here is somewhat similar. [0] http://programming-motherfucker.com/ http://programming-motherfucker.com/ [1] http://harmful.cat-v.org/software/ruby/rails/is-a-ghetto http://harmful.cat-v.org/software/ruby/rails/is-a-ghetto
- astrodust 10y agoBeing passionate about things and having opinions can mean that you eventually burn out on something and for the sake of your own mental health have to move on. I don't think Zed's doing anything wrong. He's saying what he thinks needs to be said, he's challenging the complacent, and he's not pulling any punches. If you don't like his attitude there's plenty of other people to listen to. I appreciate that he's out there making noise, getting people to re-think their assumptions about programming. If you live life by particular principles sometimes you have to take the hard road. You can't argue it hasn't been an interesting path.
- blub 10y agoMaybe being "passionate" is not a healthy state of mind. The community blabbers so much about passion which is nothing more than an almost uncontrolable emotional state. Screw passion, I'd rather have discipline and a healthy interest instead.
- 10y ago
- mark-r 10y agoI went to the Internet Archive just to see what all the fuss was about. Hate to say it, but I agree with the detractors. He seems to be completely missing the concept of preconditions. If the preconditions are met, the code is good; if the preconditions aren't met, undefined behavior occurs. Most people programming C or C++ for more than 10 minutes learn to pay attention to these things. The chapter would have been much better if it would have stuck to the importance of validating preconditions, rather than simply pretending they don't exist. Good riddance.
- ori_b 10y agoThe specific section of his 'Learn C the Hard Way' book that he's referring to was mostly, as I recall, complaining that the C string functions defined in K&R will fail when you don't pass them valid data, and therefore, they're fundamentally broken. Make of that what you will, but it seems to me that given all of the other ways that C can blow up due to programmer error, it seems reasonable to expect programmers to pass a valid string to a string function.
- mveety 10y agoYeah, I agree. This is similar to complaining that the plane was broken when you fly it into a mountain. I can see this being a minor issue when you're passing data to like strdup(2) from an unknown source, but you should be following the rule of "users do dumb shit." and check these things. C isn't designed to prevent you from hanging yourself because if it were to prevent you you wouldn't have enough rope to climb a mountain.
- regularfry 10y agoI'm with Zed on this one. Giving the programmer fewer things to have to remember, by design, is a de facto improvement. Forcing a human to repeatedly do a task which could have been designed out is evidence of a bad design. Mind you, we're talking about the stdlib here. You can swap this stuff out. Some people do: djb is a fairly well-known example.
- kinkdr 10y agoYou had my sympathy until I read the "error prone shitty language like C". Next time before getting pissed off about the response you get, think what could it be that you have said or done that may have triggered it.
- ipsin 10y agoTo me, C is like PHP (ignoring for a moment that PHP was written in C). You can document its shortcomings, its dangers and all the headache-inducing choices. But while you're doing that, people all over the world are building wonderful and terrible things with it. So you've moving on to Go or Rust? Great! Good choices! But remember that there are people who may disagree and be wrong and also do something interesting with that wrongness.
- mfukar 10y agoNo language makes it the least bit difficult to write bad code. This is not an argument in favour or against _any_ language.
- zvrba 10y agoI've read/maybe even briefly participated in a discussion about Zed's book a couple years ago, and the technical debate went like this: Z: K&R's strcpy is broken, e.g., you can forget to null-terminate the string. Mine is safer. Ohters: It's not broken, of course it'll do something unpredictable if you break its preconditions. Z: strcpy is still broken. Others: Your function will break too if you pass it the wrong length. Z: This cannot happen, K&R strcpy is broken, mine is safe.
- webkike 10y agoK&R C was my introduction to real programming. I treated it ever since as a book, not a reference. Does that make sense? For me it was a glance into the mind of the creator of the language. Yes, some of the ways of programming were flawed in a way that results in today in many terrible things, not the least in which is death. But I was able to outgrow K&R, to learn better things, with its succinct language reference as my wings. I was fine not learning security oriented programming immediately. And I certainly enjoyed learning it with minimal snark and curse words. Maybe my method was harder, really? Learning things without you telling them to me? Maybe, don't really care. Maybe people don't like your essay because it's essentially shitting on a reference to a language. That is what K&R was in the beginning. It morphed into something else by your demands not the authors. Let my hero rest in peace. Learn to breathe. C is as dead as Latin is.
- kinkdr 10y ago> C is as dead as Latin is I wish that was true, but you will be surprised how many things you use everyday are written in C. Even the ones you would never imagine. Node.js for example, a large part is in C. Redis, C. Memcached, C. PHP itself is written in C.
- webkike 10y agoI'm sorry this wasn't clear; I was subconsciously waxing poetic. I meant to say that C's presence is constantly fading but its influence is widespread.
- kinkdr 10y ago(y) :)
- wahern 10y agoThere's a difference between fading away and the universe expanding. Once upon a time most Unix software was written in C, shell, and awk. Then Perl came along. Did that diminish C? No. Then Java. Did Java diminish C? No. Then Python. Did Python diminish C? No. (You can throw C++ somewhere in there; not sure where. Though IME C++ use really seemed to explode with Windows developers migrating to Linux.) In each case the universe of software expanded, but C was never diminished. People who think Rust, Go, or whatever will diminish C are ignorant of history. Of course, maybe the predictions will bare out. But I seriously doubt it, and it will be despite their underlying premises, not because of them. Rather, much more likely is an expanded ecosystem. As I explained else thread, there's nothing intrinsic to the C standard which makes it unsafe. Compilers are free to add bounds checking at every point in the program; in most cases it would be just as cheap as in C++ or even Rust. It would require much rebuilding and retooling, but not much rewriting existing software. (Relying on undefined behavior is dangerous not only because of optimizations, but because undefined behavior can also preclude automatic bounds checking.) That C compilers don't do that is a function of 1) baggage and 2) other functional constraints, like strong ABI compatibility. But neither of those are set in stone. People who think C is hopelessly unsafe make the same mistake every C newbie (and some die-hard C-is-just-assembly people) do: conflating the language semantics with implementation and machine details. People assumed that clang would quickly overcome GCC because it was so new and nimble. But clang still hasn't unequivocally really overtaken GCC, and certainly hasn't obsoleted GCC. Rather, the competition merely spurred GCC to evolve faster. I see much the same happening with C. In the future, look to systems like OpenBSD, FreeBSD, and Alpine Linux, which are more free to upgrade their toolchain and runtime environments with backwards-incompatible changes, to field enhanced C environments with better bounds checking and mitigations. Approaches like stack canaries and ASLR are only the tip of the iceberg for what's possible.
- Yuioup 10y agoPunctuation seems to be dead. It took me a while to understand the title.
- dschiptsov 10y agoK&R taught fundamentals and a good style. It is timeless classic, because the principles doesn't change within successions of mass hysteria. Plan9 dialect of C is another example. There is portable mk package, with includes core libs (libbio, libutf, etc. which also served as core libs for earlier versions of Golang) to appreciate what C supposed to be. I would paraphrase - attention seeking by attacking classics is a poor style.
- regularfry 10y agoPart of his point is that K&R isn't good style. It's a clear, consistent, and well-demonstrated style, which made it popular, but that doesn't make it good.
- siegecraft 10y agoDamnit, I was tricked into reading something by professional troll Zed Shaw. The hypocrisy of him complaining about "the dark side of programming" is hilarious consdering he is a very good example of that. His style of debate is to insult and call people names who have offered non-judgemental and constructive criticism and I'm sure nothing I'm saying is news to anyone who has a passing familiarty with him.
- alexeiz 10y agoI looked at Zed's books but didn't find them either containing much of useful material, or written well enough to be worth reading. Granted, I'm not a novice to subjects he writes about. But still, I find it peculiar that his high opinion of his works seems to be rather detached from reality. The books are written in a simplistic and sometimes demeaning style and it's obvious that many people will not like it. But when someone writes an honest review, he seems to get too upset about it. While he obviously likes to critique other peoples' works (such as K&R), he's very sensitive to critique of his own books. Zed thinks that it's acceptable to insult the reviewer (Tim Hentenaar) in response. Reading his response made me cringe. Insulting reviewers is just not what respectable authors do.
- twblalock 10y agoLots of insecure butthurt and resentment in this article, and not much substance.
- silent90 10y agoI'm sensing a huge incomprehension in a great amount of posts. The key is to know the purpouse of tools. C is a "close-to-the-metal" type language. You can control a low-level things, execution time, "number of hops" when writing data, etc. If you want a friendly language with "no segfaults, no memory leaks" then go higher level (which in many cases is a better choice, i.e. a GUI desktop application with no performance constraint). If you have a problems wrigint in C then you simply still can't C and using the wrong tool for the task. "But C? C's dead. It's the language for old programmers who want to debate section A.6.2 paragraph 4 of the undefined behavior of pointers" Someone has to build the low-level stuff. Dear boys in too-tight pants and a hippie mustache: your high-level things and gluten-free snacks does not grow on trees.
- pjmlp 10y ago> Someone has to build the low-level stuff. Some of us where already doing it in much better languages, before C had any meaning outside AT&T walls.