| I work on a code base that is a mixture of Go and C. It's IO, CPU and Memory hungry, and it's distributed. C is fast because it's close to how CPU and memory actually work. Go gives you 95+% of that plus easy to learn, easy to use language. A new person could start contributing useful features and bug fixes immediately. A senior person could get C-level performance. More and more of our code is moved from C to Go, with very little performance penalty, but with a lot more safety and ease of use. Our customers benefit, and our company makes more money. In the end, that's what software is about. |
Out-of-order execution, cache hierarchies, branch prediction, virtual memory, pipelining, vector instructions, ILP, NUMA are all pretty transparent to the C spec.
Trying to accommodat hardware quirks with C feels like blackbox engineering. It's certainly better than with managed languages but still....