3 ms·
Second this, but want to add: You don't necessarily need to be able to sit down and bang out quality C, but learning some C is a great way to understand how so
by russell_h 11y ago
Second this, but want to add:
You don't necessarily need to be able to sit down and bang out quality C, but learning some C is a great way to understand how software works at a lower level than you'll get from Python or Ruby. On the other hand you can apply that understanding to more quickly and correctly understand what higher level code is doing and what risks it is taking.
If you don't already have a good theoretical background, learn some C. Something like C++ or even Rust would work for this too, but those introduce a lot more language concepts that you don't really need.
- tptacek 11y agoI think C++ and Rust are actually a bad idea here. Learn C. Don't bother with C++ until you've got C down. I mean, learn Rust if you want to write Rust code. But for the objective I'm addressing with C, you need C.
- noir_lord 11y agoAgreed, in addition a lot (if not most) of the low level attack surface (drivers, kernels, web servers) are still written in C, it's still the lingua franca (with C++ somewhat second).
- icpmacdo 11y agoWould you do that by picking up a copy of K&R or would you have a more modern recommendation?
- bebop 11y agoK&R is still a really good book that covers pretty much all of the language. Do note that it is very dated, and stylistically you should not try to emulate them. Looking at a modern C code base (I have heard redis is well structured) would be the best place to learn a modern style.