3 ms·
Golang gives you freedom. Rust gives you seat belts. It depends on you what you value more.
by jhoechtl 4y ago
Golang gives you freedom.
Rust gives you seat belts.
It depends on you what you value more.
- jeroenhd 4y agoI don't think Go gives you freedom, actually. There aren't any good standard library functions for dealing with badly encoded unicode for file names, for example. Instead, Go provides what the language designers considered solutions to most problems. Window not having Unix permissions? Just fake a bunch of them. Path not valid unicode? Probably not a problem. As long ad you agree with the way the Go designers think, that'll save you tons of work. Just don't use Go in situations where those solutions might not work out, like when you're iterating over arbitrary files instead of the files you've created yourself in Go code.
- shadowgovt 4y agoThe counterpoint is "your filenames shouldn't be badly-encoded unicode." In other words, "If `ls` can't render it, it's a bad filename. Rename the file." (This does mean that Go is constraining the set of problems it's easy to solve with it. But that's the nature of programming in general... We decide what problems need to be easier to solve at the expense of putting some problems outside the "sweet spot" and requiring more work to solve them).
- WJW 4y agoIf `ls` can't render a filename that is legal under the POSIX specs, there are two possibilities: - `ls` is wrong and should be fixed. - The specs are wrong and should not allow filenames to be arbitrary bytesequences. The third option ("The user is wrong even though they did exactly what was in the spec") is just unsatisfactory because it self-contradicts.
- shadowgovt 4y agoSpecs are a three-edged sword: the spec, the intent, and the implementation. And "The user is wrong even though they did exactly what was in the spec" is pretty much the rule, not the exception.
- asherah 4y agowould highly prefer my car to have seatbelts over "simplicity" and "freedom" if i plan to go over 30mph with it
- astrange 4y agoPersonally I like my programming languages to have warnings instead of errors for something like an unused import. To avoid the car analogy, let's use construction - an in construction building should be allowed to keep the scaffolding up while it's being built. But maybe you should still clean the floors? Uh oh, it's getting away from me already.
- isubasinghe 4y agoI would argue Golang is the most restrictive because it doesn't have an escape hatch from its language features. Rust will get out of your way if you really want it to. It just gives you a seat belt because you are on the highway (writing systems code) but you are free to take it off.
- masklinn 4y agoYes nothing says "the language gives you freedom" like an unused import being a non-bypassable compilation error.