6 ms·
Thank you Go team and project! Go continues to be my favorite language and experience to build and maintain in. They got so much right from the start, then ha
by nzoschke 3y ago
Thank you Go team and project!
Go continues to be my favorite language and experience to build and maintain in.
They got so much right from the start, then have managed to make consistent well reasoned, meaningful and safe improvements to the language over the years.
It’s not perfect, nothing is, but the “cost” of maintaining old code is so much lower compared to pretty much every other language I have used.
- devjab 3y agoGo is such a productive language to work with, it's absolutely mind blowing how little adoption it has around where I live. Well I guess Lunar went from node to java to go, and harvested insane benefits from it, but a lot of places have issues moving into new languages. Not that I think that you should necessarily swap to a new hipster tech, I really don't, but Go is really the first language we've worked with that competes with Python as far as productivity goes. At least in my experience. We'll likely continue using Typescript as our main language for a while since we're a small team and it lets us share resources better, but we're definitely keeping an eye on Go.
- hagbarth 3y agoOne of the reasons I like Go is that it really doesn't try to be a hipster language. It's kinda boring, which is great!
- Philip-J-Fry 3y agoBoring is good when you want to build things that are maintainable by 100s of devs. Something we have experienced over and over is that devs moving from languages like C# or Java just love how easy and straight forwarding developing in Go is. They pick it up in a week or two, the tool chain is just so simple, there's no arguing around what languages features we can and can't use. Almost everyone I've spoke to finds it incredibly productive. These people want to be delivering features and products and it makes it easy for them to do so.
- VirusNewbie 3y agoMaybe a 100 devs Go is fine, but it gets to be a nightmare as you scale beyond that. Language abstractions exist to prevent having developers build their own ad-hoc abstractions, and you find this time and time again in languages like Go. You can read the Kubernetes code and see what I mean, they go out of their way to work around some of the missing language features.
- Cthulhu_ 3y agoYeah, and that nightmare gets even worse in other languages; one motivation for creating Go was the use of C/C++ by thousands of developers at Google. Can you link to some of these workarounds? I'm curious to see whether they actually make a lot of difference. In theory (and I have no experience with any software project with more than ten developers working on it), they only made it more difficult by adding cleverness.
- rcv 3y agoI typically develop in Python, C++, and Typescript, and recently had to implement some code in Go. So far I've found it a pretty unpleasant language to use. It feels pedantic when I don't need it to be, and yet I have to deal with `interface{}` all over the place. Simple things that would be a one-liner Python or TS (or even just an std::algorithm and a lambda in C++) feel like pulling teeth to me in Go. I'd love to hear of any resources that can help me understand the Zen of Go, because so far I just don't get it.
- mseepgood 3y agoSince the advent of generics I rarely ever use `interface{}`.
- badrequest 3y agoI write Go every day, and can count the number of times per year I have to involve an `interface{}` literal on one hand. Unless you're doing JSON wrong or working with an API that simply doesn't care about returning consistently structured data, I can't fathom why you'd be using it "all over the place."
- coffeebeqn 3y agoMe too. We have around a dozen go services and I have maybe used or seen interface{} once or twice for a hack. Especially after generics. I think the parent comment is suffering from poor quality go code. It’s like complaining about typescript because things in your codebase don’t have types
- kaba0 3y ago> They got so much right from the start, then have managed to make consistent well reasoned, meaningful and safe improvements to the language over the years In which universe? They have to constantly patch the language up and go back on previous assumptions.
- 13415 3y agoThat's the first language change that can in theory break programs (in practice, it won't). Everything else was just additions to the existing language with full backwards compatibility. That's the opposite of constantly patching the language up.
- kaba0 3y agoYou can patch things up without breaking backwards compatibility. But, going on a well-trodden path slower than the pioneers is not a big achievement.
- badrequest 3y agoPlease point to when Go has broken backwards compatibility.
- kaba0 3y agoThat’s not my point. Smart men learn from the mistakes of others.
- nzoschke 3y agoObviously different perspectives in this thread. Robert Griesemer, Rob Pike, and Ken Thompson are objectively smart men and pioneers and have learned from lots of mistakes both they and the industry made. Go embodied a lot of those learnings out of the gate. If the bar is to be perfect out of the gate that’s impossible and I can’t think of any language that could pretend to be so. Go was very good out of the gate and has slowly but surely evolved to be great.
- deleted 3y ago[deleted]