You should learn C because it's a gateway to deeper knowledge. The kernel uses it, about a thousand programs shipped with Linux use it, embedded programming uses it. It helps you understand how lower level network protocols have been designed, how to efficiently use memory, how to design algorithms and why they're harder than you think. There's a crapton of libraries in C, most higher level languages have some extensions to take advantage of them. Sensitive security software will use it, due to various attack vectors that are slightly easier to deal with at a lower level. It's handy and expands your brain. And it's not going away anytime soon.
"On my 18th birthday, my girlfriend asked me to drive to Barnes & Nobles. She strolled in, then strolled out at a much faster pace. Then she handed me a copy of The C Programming Language, which she had just stolen..."<p>Marriage material! :D
> Programming from the Ground Up<p>> <a href="https://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf" rel="nofollow">https://download-mirror.savannah.gnu.org/releases/pgubook/Pr...</a><p>There is an updated version of the book from the author: "Programming Under the Hood" or "Learn to Program with Assembly". See[0]<p>[0] <a href="https://github.com/johnnyb/programming_under_the_hood" rel="nofollow">https://github.com/johnnyb/programming_under_the_hood</a>
> Beej’s Guide to C Programming
> It’s straightforward and to the point.<p>I'm not saying its a bad book/guide, but with sections like these:<p>>Before we go on, why would I even begin to bother pointing out that a pound sign is called an octothorpe? The answer is simple: I think the word octothorpe is so excellently funny, I have to gratuitously spread its name around whenever I get the opportunity. Octothorpe. Octothorpe, octothorpe, octothorpe.<p>It claims to be aimed at programmers who are already proficient in high-level languages, but spends a whole paragraph explaining what code comments are.<p>I'm not sure it qualifies as "to the point"
Learn enough C so that you can push your module written in Java/Ruby/Python/Node into C, and all the other high level language users can pick it, compile it and use it natively in their language.<p>Imagine you wrote a new 3D model file-format and all other language users have to load the Ruby interpreter to use it.
> <i>Then she handed me a copy of The C Programming Language, which she had just stolen (though at $80, it’s not clear who was robbing whom to begin with).</i><p>Code of Dishonor
If you want to be a Haskeller, learn some C too. They are fully complementary. The Linux tooling, gamedev libraries, etc you have available if you leverage C is great. And Haskell's FFI and C tooling making it simple.
This is so strange : the original Kernighan and Ritchie The C Programming Language book from the early 1980s was a couple hours front to back read, and you're done, and you're up and programming. (Or you're not a computer person at heart perhaps?)<p>The followup edition I think had the C89 draft ANSI standard, and was the beginning of the way way way more wordy era.<p>That the idea of "learn enough C to survive" is a concern for anyone seems to mean the concise clarity of the original K&R book is long lost?
> <i>Then she handed me a copy of The C Programming Language, which she had just stolen (though at $80, it’s not clear who was robbing whom to begin with).</i><p>No, it’s actually crystal clear.
Isn’t a more future-proof approach to learn Rust instead? Linux kernel is incorporating Rust, and programmers often adopt open source packages written in their favorite language. Rust being the most favorite language for 5 years in a row must say something.