3 ms·
If you don't understand the concepts of C - things like pointers - then you don't actually know how computers work and how programming languages are implemented
by tomp 6y ago
If you don't understand the concepts of C - things like pointers - then you don't actually know how computers work and how programming languages are implemented (i.e. how the JavaScript you write actually happens) so, yeah, you're probably not a serious programmer. Copy-paste code from Stack Overflow? Sure. Debug a complex problem or optimize a piece of code? Unlikely.
- jcranmer 6y agoUnsafe Rust is at least as close to the hardware as C is, if not somewhat closer (C doesn't have 8- or 16-bit arithmetic operations, and I believe unsafe Rust doesn't have the strict aliasing rules of C). Arguing that you specifically have to learn C to understand hardware is the gatekeeping I dislike the most, especially because it turns out that C itself can have a pretty bad view of hardware.
- tomp 6y agoSure, which is why I wrote understand not know. I doubt many Rust programmers would have issues writing C (basically just forget about ownership and write plain functions) unlike say Python or JavaScript (or even Java) programmers.
- AzzieElbab 6y agoI started my career as C dev, working on driver level software. These days I want to stay as far away from hardware as possible. Hardware is horrible, bugs, bugs, bugs, and more bugs.
- goto11 6y agoIf you don't understand assembler then you don't understand how a computer works. C is a higher level language which just happen to be more primitive than most. Knowing C is fine, but thinking C is somehow "the real world" is dangerous, since then you don't understand that the abstractions in C (like pointers or the stack) are just design choices with certain trade-off and that alternatives are possible. Are you suggesting someone who knows say Haskell but not C is not able to debug their own programs?
- tomp 6y agoSure, I agree. I just think the impact is less, since e.g. computers are optimized for C (there's special instructions for manipulating C-like stack). I think of more importance is the concept of registers, which C mostly abstracts away - definitely useful to know, but probably less performance impact than pointers vs. objects.
- dunefox 6y ago> Copy-paste code from Stack Overflow? Sure. Debug a complex problem or optimize a piece of code? Unlikely. What a ridiculous thing to say. One doesn't need to know how programming languages are implemented or 'how pointers work' or even know C in order to be a proficient programmer. This is just nonsensical gatekeeping.
- a1369209993 6y ago> If you don't understand the concepts of C - things like pointers - then [...] you're probably not a serious programmer. This is true, but doesn't actually require knowing (or even having heard of) C specifically.