I could never get why people didn't just ignore Go and move on. It's not the things that are wrong with it, but rather there isn't very much right with it.
I get that compile time is a big problem for C++ developers. (Gotta break it to that kid who wants to break into system programming that it's easy to get a C++ job that comes with a 45 minute build)
The counter-argument that I first heard for the REBOL language is that the fear of slow compilation is the main reason why "we can't have nice things" in programming languages. For instance we are still using parser generators that are as unergonomic as the 1970s Lex and Yacc -- maybe because the kind of people who know how to write that kind of tool don't have a lot of empathy for less skilled developers who could accomplish a lot with parsers that are easier to use. If we had better parsers we wouldn't be hearing all this talk about how Common LISP is better for metaprogramming than other languages: instead of rejecting generative grammars and modern linguistics we could build programming languages whose syntaxes aren't set in concrete if we had better parsers.
Rust has some interesting ideas behind it. Go just splits the difference between C++ and Java.
It is a bit weird, Go had a single use-case - highly portable network servers for Google scale infra - yet people are using for stuff nothing like that (e.g. Docker).
Yes it's sort of like a "safer" C - yet how can an alternative to C not even be able to link with C libraries (easily)?
Yes it has lightweight threads in a fast compiled language, and if that kind of scalability is important to you, then Go might be interesting, but it's a narrow use case.
I get that compile time is a big problem for C++ developers. (Gotta break it to that kid who wants to break into system programming that it's easy to get a C++ job that comes with a 45 minute build)
The counter-argument that I first heard for the REBOL language is that the fear of slow compilation is the main reason why "we can't have nice things" in programming languages. For instance we are still using parser generators that are as unergonomic as the 1970s Lex and Yacc -- maybe because the kind of people who know how to write that kind of tool don't have a lot of empathy for less skilled developers who could accomplish a lot with parsers that are easier to use. If we had better parsers we wouldn't be hearing all this talk about how Common LISP is better for metaprogramming than other languages: instead of rejecting generative grammars and modern linguistics we could build programming languages whose syntaxes aren't set in concrete if we had better parsers.
Rust has some interesting ideas behind it. Go just splits the difference between C++ and Java.