3 ms·
Rust is really a language that pulled a lot of concepts that were done elsewhere, into a really solid nice package. Go is unusual in the new language space in
by bluejekyll 10y ago
Rust is really a language that pulled a lot of concepts that were done elsewhere, into a really solid nice package.
Go is unusual in the new language space in that in eschewed many of these modern techniques. Swift comes to mind as a comparison, which has many of the features that the author misses.
Personally I like the examples offset by a single other language as it's less context switching.
- stouset 10y agoThat's the feeling I get when using Rust: all of the bits of the language appear to work well together. People clearly thought about how all of the features in Rust would interoperate; it was designed. Go, on the other hand, continually feels like a language that wasn't designed as much as it accumulated. None of the parts seem to work in concert. Nil by itself was a bad idea, but when combined with actually-nil-but-not-really interfaces, it leads to subtly broken code. Tuples feel bolted on as second-class citizens, and tuple-based error patterns combined with sometimes-nonsensical zero values for types makes it uncomfortably easy to accidentally use invalid values when you have a typo in error-handling. Implicitly implementing interfaces makes sense until you type-switch on interfaces at runtime, and then through edits elsewhere one interface becomes a distinct subset of the other interface — depending on how they're ordered, you may never hit the other code. Some of the decisions made in golang make sense in isolation, but in concert they lead to confusion, subtle bugs, and copy-pasted code everywhere.
- nortiero 10y agoI feel the exact opposite... Go is a bold design, if not an elegant one, yet powerful. Rust is a design-by-committee language, built from accretion and removal. Its origins as a managed language, pivoted and is now a second system C++ replacement -- the only one, to be fair.
- thatswrong0 10y agoElegant is.. not the first word I'd use to describe Go. Maybe the core of the language is, but in practice it is anything but, between the error handling, PRY (please repeat yourself), relative inability to create abstractions, and neutered type system.
- jasonwatkinspdx 10y ago> Go is a bold design What do you find bold about Go's design? (Curious, not looking to start a pointless debate)
- int_19h 10y agoGo is an opinionated design. It is very strongly focused on one particular approach of doing things. If you happen to like that approach, you'll find Go smooth and natural. If you don't, you'll find Go annoying and pointless.