Hacker News new | ask | show | jobs
by gnfargbl 1059 days ago
I have created and maintain a 130k SLOC Go codebase over the last four years or so, and there are a number of things about Go that irritate the shit out of me. I still get bitten by taking the address of a loop temporary on a surprising basis, for example, even though I am acutely aware of the issue. Or, I haven't really found any use for generics yet, because (as best I can tell) it's impossible to specialise and pretty much every potential use-case I have found for generics so far seems to boil down to lots of shared functions and a few specialised functions.

None of those real irritations are addressed in this article, which seems to be an extended complaint that Go isn't as portable between Linux and Windows as the author would like it to be. If you're unfamiliar with Go and attempting to evaluate the language, there's not much in here that I could recommend one way or the other. You would be better spending the time on doing the Tour of Go, then reading one of the various "pitfalls" articles.

1 comments

> seems to be an extended complaint that Go isn't as portable between Linux and Windows as the author would like it to be

I don't think that's true. The author is using that lack of portability as an example of what they think is wrong with Go:

> And they're symptomatic of the problems with "the Go way" in general. The Go way is to half-ass things.

> The Go way is to patch things up until they sorta kinda work, in the name of simplicity.

And I get the point they're making. The issue isn't that file permissions don't work consistently cross-platform in Go, it's that they can't work consistently cross-platform in anything but rather than add complexity Go has papered over the cracks. If that's an acceptable approach in a core file API who knows how often it's employed elsewhere in the runtime? The following section the post shows this mindset as implemented in monotime and the many potential footguns the official implementation introduces.

> The issue isn't that file permissions don't work consistently cross-platform in Go, it's that they can't work consistently cross-platform in anything but rather than add complexity Go has papered over the cracks.

Interestingly enough, C of all languages had enough sense to not require permissions as an argument for fopen(3).