The principal reason is that Go’s design makes no attempt whatsoever to push the state-of-the-art envelope. Go was designed to be a pragmatic language for large-scale software engineering. The design team made decisions and engineering trade-offs that were focussed entirely on three objectives:
- Keep the language very small and simple and easy-to-learn. This helps developers who are less experienced, or new to programming–a crucial goal because not everybody on a development team can be seasoned senior programmers.
- Keeping the language small and simple means much less cognitive friction while programming. A large, complex language imposes a greater cognitive load on the human brain. A small, simple language lets the developer focus more of their attention on the application itself, rather than dissipating it over the tools they’re using. This also helps with improving productivity or velocity of development.
- Keeping the language small and simple means that it’s easier to ensure reliability and lower defect count.
Of course, Go’s critics do not agree with this philosophy; they do not agree with the premises.
However, there’s no denying that it works. And it works well. That’s why Go has been so readily accepted by the IT community. It has very little to do with Google’s marketing muscle (Go’s marketing muscle didn’t save AtScript, and it failed to catapult Dart into the limelight).
Go’s success ticks off all of its detractors. They believe the success is unwarranted. It absolutely galls them that the IT community has found Go to be a very useful and pragmatic software engineering language. It shatters their worldview and makes them very, very angry.
They’re royally pissed off at Go users who only want to get shit done as quickly and as easily as possible. They’re pissed off that Go users somehow manage to write BIG applications successfully and beyond the users’ expectations. This makes no f*cking sense at all! Again, lots of anger.
They believe with every fibre of their being that when you create a new language, the ONLY goal should be to advance the art of language design, to find new design innovations. Other goals, no matter how pragmatic, irks them to no end.
Go’s design and its wildly successful acceptance are a huge kick in the teeth. Yes, if somebody kicked me in the teeth, I’d be pissed off, too.