3 ms·
I’m always skeptical of telling people to not just try something out in programming. Yes, don’t just try to code up the next unix without knowing any c. But def
by ianai 7y ago
I’m always skeptical of telling people to not just try something out in programming. Yes, don’t just try to code up the next unix without knowing any c. But definitely getting your hands dirty isn’t going to instill any super bad mental/coding practices.
- geofft 7y agoC is a particularly weird language: it's entirely possible for things to work but - secretly introduce security vulnerabilities - stop working on a different compiler or after a compiler upgrade A generation of C programmers learned by trying things out, and they left us with superstitious beliefs about volatile (and also with imprisoned Uyghurs in China). We have the evidence and learning C by trial and error doesn't work. If you're going to write C (and there are definitely places where it's the right thing to use), learn it with more caution than you'd learn other languages.
- StrangeDoctor 7y agoOk I’ll bite, what on earth is the connection between Uyghurs and C?
- saagarjha 7y agoPresumably the fact that iOS had vulnerabilities that allowed for watering-hole style zero-day attacks on Uyghurs in China.
- ianai 7y agoBy that point you should be well beyond just messing around with c.
- geofft 7y agoShould be, yes, but again we have the evidence: the people whom Apple hires to write kernels regularly make these sort of mistakes. (Let alone the people that Microsoft hires, or the people who write various third-party Android drivers.) So whatever form of "should" that we have right now isn't working.
- geofft 7y agohttps://googleprojectzero.blogspot.com/2019/08/a-very-deep-dive-into-ios-exploit.html https://googleprojectzero.blogspot.com/2019/08/a-very-deep-d... This is one of the few places where writing C is objectively reasonable (an OS kernel) - and also one of the places where it's particularly dangerous if you get things wrong.
- acomjean 7y agoYou can learn by playing around, but its very helpful to have a guide in the begining. I had to start coding for work in C and without some good footing it was frustrating dealing with older code and creating new things with my very limited experience. (I had c++ which isn't the same.) Having spent a week going a book and getting up to speed helped greatly and increased my enjoyment, reduced my frustration fwiw.