6 ms·
It minimally reflects PDP-11 assembly, which is not how modern computers work.
by ChrisSD 8mo ago
It minimally reflects PDP-11 assembly, which is not how modern computers work.
- uecker 8mo agoThis is a meme which is repeated often, but not really true. If you disagree, please state specifically what property of PDP-11 you think it different from how modern computers work, and where this affects C but not other languages.
- pjmlp 7mo agoIt lacked SIMD instructions.
- tmtvl 7mo agoDon't forget about branch prediction (GCC may have __builtin_expect, but that's not standard C).
- direwolf20 7mo agoThe compiler usually can't do anything about branch prediction. Expect is more about keeping cold paths out of the cache.
- pjmlp 7mo agoActually that was one of the problems with EPIC architectures, where compilers are expected to be the ones doing those kind of optimizations.
- uecker 7mo agoC compilers can emit SIMD instructions just fine and often have extensions to support writing it explicitly. Also few other languages have explicit support for them from the start and most have added them as some kind of extension later. So the idea that this is some fundamental computer architecture thing C got wrong seem pretty far-fetched. Support for multi-core processing would be a more plausible thing to look at, but even there it seems that C still does quite well.
- jcgl 7mo agoThis isn’t my space to opine on, but I found this talk both riveting and compelling: https://m.youtube.com/watch?v=36myc8wQhLo&t=1s&pp=2AEBkAIB https://m.youtube.com/watch?v=36myc8wQhLo&t=1s&pp=2AEBkAIB In a nutshell, the useful fiction of computer-as-Von-Neumann-meaning doesn’t adequately reflect the reality of modern hardware. Not only does the CPU itself not fit that model (with things like speculative execution, sophisticated power and load management…), but the system as a whole is increasingly an amalgamation of different processors and address spaces.