2 ms·
Those justifications or "reasons" for learning fascinate me. C imagines a PDP-11-like abstract machine, and for reasons good and bad modern processor designers
by gumby 3y ago
Those justifications or "reasons" for learning fascinate me. C imagines a PDP-11-like abstract machine, and for reasons good and bad modern processor designers try to make that abstract machine fast.
But if you want to get a feel for what the hardware might be doing, as the author says, C is not a good choice, and never really was. If you want to start to understand the hardware, write some assembly code. It's not that hard, but you have to think about the actual hardware model.
The author's other point is also correct (much as it irks me -- I want to know everything): nobody understands the whole vertical stack from quantum mechanics to the latest frameworks, much less its horizontal ramifications (subtleties of TCP implementation or category theory). I could creditably* describe perhaps 60% of how a car works these days but I can no longer do more than simple maintenance. Infuriating, yet surely a good thing.
* creditable, sure, but credibly? Not for me to decide.
- nedbat 3y agoEven assembly won't expose you to pipelining, cache misses, and branch prediction.
- gumby 3y agoExactly, "start to understand". Register renaming, speculative execution, all sorts of fun stuff. And all that's pretty high level when you start to look at the deeper things the chip designers had to think about that still influenced the higher level design, like thermals, transmission implications of capacitance...it's so great that it never ends!