4 ms·
Go was designed by dudes who live the Unix philosophy. It was designed to be like C, be lean and efficient and most importantly to be scalable on multi CPU arch
by supernovae 8y ago
Go was designed by dudes who live the Unix philosophy. It was designed to be like C, be lean and efficient and most importantly to be scalable on multi CPU architectures with some beautifully simple primitives that enable channels/routines.
Go is awesome for what it is.
- pcwalton 8y agoGo's primitives are not really ideal for CPU parallelism. To make CPU parallelism nice you want things like parallel iteration constructs, which Go can't have because of lack of generics. Furthermore, any CPU parallelism work wants the best optimizer around and SIMD support to make best use of those cycles—otherwise it'd be better to just write in C++. Goroutines and channels are best used as concurrency primitives, not parallelism tools.
- Groxx 8y agoJust to +1 this: it aligns with very nearly all Go-core-team concurrency/parallelism stances I've seen. Go intends to support concurrency, not parallelism, and they go to great lengths to remind people that they're not the same thing.
- supernovae 8y agoWho said anything about parallelism? Concurrency still works beautifully on multicore CPUs. I'm writing jobs that have lots of tasks, not jobs that parallelyze a single task...
- pcwalton 8y agoConcurrency works just as beautifully on single-core CPUs. :)
- supernovae 8y agoyup, it works great on both :)