this post was submitted on 27 Apr 2024
107 points (96.5% liked)
Rust
6030 readers
1 users here now
Welcome to the Rust community! This is a place to discuss about the Rust programming language.
Wormhole
Credits
- The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I'm still in my honeymoon-ignoring-footguns phase with go, but am well aware I'm on the same path. I do really love how quick is it to generate a static binary that will always work.
Oh yeah, that is really nice, and something fantastic about Go.
That said, I found that I care about that a lot less now than I used to. With everything running through CI, having a build take a few minutes instead of a few seconds isn't really a big deal anymore. And for personal things where I used to build small Go binaries, I just use Python, mostly because it's easier to drop into a REPL than to iterate with Go.
I like Go in theory, and I hope they fix a lot of the issues I have with it. But given that Go 2 isn't happening, maybe it won't. Or maybe they'll do the Rust editions thing (seems to be the case in that article) so they can fix fundamental issues. IDK. But I'm guessing some of the things I want aren't happening, like:
map[K]V
should be concurrency-safe, or at least have a safe counterpart w/o needing an importinterface{}(T(nil)) == nil
- or better yet, no nil at allThose are pretty fundamental to how Go works, though maybe the last one could be fixed, but it has been there since 1.0 and people have complained since 1.0...
I haven't really written any Go but from trying to debug some issues in Go software and looking at the source code it seems to be the kind of garbage language that is write-only and likely most major projects written in it will take a full rewrite if you want to overhaul it for a new major version (as in the kind of major version where the code base changes significantly, not the kind where you just broke some minor API).
Honestly, I disagree, but I obviously haven't seen the code in question.
Go has a lot of really nice things going for it:
My problem isn't with normal program flow, but that the syntax is deceptively simple. That complexity lives somewhere, and it's usually in the quirks of the runtime. So it's like any other abstraction, if you use it "correctly" (i.e. the way the maintainers intended), you'll probably be fine, but if you deviate, be ready for surprises. And any sufficiently large project will deviate and run into those surprises.