I have huge respect for Rob Pike but there's a bit of revisionist history going on here. Go was originally envisioned as a systems programming language. It was often called "a better C". This exposed Rob Pike's lack of experience in the area (IMHO) because anyone who had done any systems programming at all knew that garbage collection made any systems language a nonstarter. Where Go succeeded was completely unintenti…
> anyone who had done any systems programming at all knew that garbage collection made any systems language a nonstarter Very interesting, can you elaborate with an example?
I also found there are subsets of Go aimed at filling this use case because of the GC issue [4] (eg Emgo [5], TinyGo [6]).
The Fuchsia Language Policy [7] also points to this. Fun fact: the networking stack in Fuchsia was written in Go because of Dave Crawshaw, who was (and I assume still is) a big Go advocate. I got into an argument with him once about stop-the-world GC pauses in Go. Anyway, the Fuchsia project has largely been unhappy with this ever since because there is an overhead to using Go that essentially you can't get rid of. Using memory and object pools can solve many but not all problems. And at some point I suspect they'll replace the networking stack with something not written in Go.
[1]: http://www-cs-students.stanford.edu/~blynn/c2go/
[2]: https://news.ycombinator.com/item?id=2535206
[3]: https://news.ycombinator.com/item?id=2535386
[4]: https://github.com/golang/go/issues/29147
[5]: https://github.com/ziutek/emgo
[6]: https://github.com/tinygo-org/tinygo
[7]: https://www.reddit.com/r/golang/comments/f92nkc/golang_is_no...