Hacker News new | ask | show | jobs
by farresito 927 days ago
IMO, Go is a mediocre language with great tooling and a great company behind it, and it turns out ultimately if you don't have the latter, the former is irrelevant.
5 comments

Yes, like Python and Javascript right? Turns out you don’t need a great language when you provide what most people want: great tooling, good resources to ramp up, great stdlib, etc. Believe it or not Golang was the first language to do this, and probably still the only one? (Rust misses the mark on great stdlib)
> great stdlib

Many comments say the opposite of this. I am not too experienced, but I do know that go has a great standard library for web apps.

I'm pretty familiar with Golang's stdlib and other languages stdlib and I'm not sure what the other commenters are on.
Typescript (which is 99% of current JS above toy scale) has a company behind it.
I dont think there is a language better suited for containerized applications, even web servers more broadly.

Is it the best at everything? No, but it got everything exactly right for its niche imo.

And also the actual container infrastructure itself.
Yeah, I also think people index too hard on the language itself, when the runtime, tooling, and ecosystem are all much more important. Moreover, I think "mediocre" is a good thing so long as it means "fewer features" or "simple". I'm kind of glad Go is a mediocre language in this sense, because it gets out of the way. And Go's runtime is similarly "mediocre"--it's fast enough for 99% of applications, it doesn't use a ton of memory by default, the default GC is low latency, goroutines far easier to use than async/await, all it needs is a Linux kernel (no userland dependencies), and it's all small enough to fit in a static binary. Go also has a pretty good standard library too; no need to pull in dependencies just to marshal JSON or make HTTP requests, and everything compiles to static binaries by default so distributing CLI tools internally is a breeze.

Go isn't the best at anything, but it gets 80-90% of the way there on everything whereas other languages aim for 100% in one dimension (e.g., performance, static analysis) at the expense of all other considerations (e.g., usability).

Yes, i can agree. Go is not my favorite language, but when it comes to pragmatism and developer productivity, Go is up there.
Most developers are mediocre, so having a language that can match the skill level of the average dev is a win for many situations, no?
No. A better language would make things safer for the average dev.

You don't give the new guy at work the saw with all of the safety features removed. Or maybe you do, but you're not doing it for his benefit at least.

A mediocre language is not the same as a language appropriate for developers of mediocre skills. Go could have been made a better language [0] in many ways that would have actually made it easier than it is right now, by avoiding some of the footguns built into the language. This also wouldn't have made the language more prone to being used in a complex manner by metaprogramming enthusiasts and the like. Better often means simpler, not more complex.

[0]: Not that it's not already decent.