3 ms·
No. Go shares a lot of thematic/aesthetic/design principles with C for sure. It prioritizes language clarity, simplicity and universality over features. But
by ajross 4y ago
No. Go shares a lot of thematic/aesthetic/design principles with C for sure. It prioritizes language clarity, simplicity and universality over features.
But the layer being abstracted by the language is totally different. Go is a managed runtime which assumes the use of a threadsafe heap on a multicore host, it provides a stack switching engine for concurrency management and a scheduler on top of that, and assumes the use of robust I/O primitives with asynchronous capabilities.
C gives you an easy way to express access basic CPU operations on top of a flat memory model, and maps well to the lowest level of OS system calls. And that's about it. It has some simple library stuff on top that gives you bits and pieces of what you get with big managed languages, but in general everyone recognizes that this isn't its strength and that you shouldn't use it for those problems.
But the flip side is that if you have problems that don't map to managed environments well, C remains about as good an environment as you're going to find. If you're writing kernels and drivers and firmware, you aren't going to be able to use Go.