4 ms·
I guess I would fit that bill, so I'll give it a shot. I still care about stuff like this, and there are definitely ergonomic improvements that could be made.
by llimllib 5y ago
I guess I would fit that bill, so I'll give it a shot.
I still care about stuff like this, and there are definitely ergonomic improvements that could be made.
I guess my feeling is that overall, for the programs I write (network services, broadly speaking), the benefits greatly outweigh the annoyances.
on the positive site, in my experience, Go:
- Is easy to learn
- Has a relatively small surface area
- Generates static binaries
- Forces you to consider error handling
- (I'm listing this as a benefit as well as it's a downside!)
- Is pretty darn fast, both at build time and run time
- Is mostly well documented (text/template documentation excluded)
- Takes backwards compatibility seriously
- Cross compiles easily
- Has generally very good and fast tooling
- Has superb network-related libraries
- Has excellent support for concurrency
on the negative side, it:
- Is often not pretty or elegant
- It does have an aesthetic of its own once you're used to it, but it's never as satisfying as nailing something exactly right in haskell or rust, or doing something highly dynamic and fancy in python or ruby
- Sometimes resists nice algorithms and data structures
- this is why I would never want to use it for data science, for example
- Is very opinionated
- if you want something it doesn't agree with, you just don't get that thing
For much of the work I do, the positives outweigh the negatives. Maybe that helps?
- iainmerrick 5y agoSounds like you're that rare beast, a persuadable swing voter :)
- Macha 5y ago> - Forces you to consider error handling If you use the result. Its easy to overlook that some more procedural functions might return only an optional err value. See also stuff like append sometimes mutates and returns a reference to a slice with the same backing array, and sometimes returns a slice with a different backing array. Nothing going to remind you you forgot to copy before returning.
- llimllib 5y agofor sure, I've been bitten by that as well. I really wish it were required to handle the err value.