Ranter
Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Comments
-
gollark291yIn the sense that they're good and you should use them, yes. Except Go, which you shouldn't.
-
I use neither, btw.
But I respect Rust users.
Go users are just Java lovers who have discovered that concurrency is sexy. -
@Xamenyap You would feel right at home with Java, as it has a similar philosophy about pragmatism, compromises, boilerplate and "simplicity", which means that all the good stuff from other modern languages is missing because it would supposedly confuse code monkeys.
-
@Lensflare which good stuff from other languages that Go doesn't have?
I'm not sarcastic btw, just want to learn -
gollark291y@Xamenyap It's an unpleasantly simplistic language. Not simple (like Lua, Lisps, base Haskell), simplistic: it lacks a lot of features but still has a lot of weird unnecessary complexity in ones it does have. For years it lacked generics (which people continued to insist was fine right up until it got them), except it sort of had them for three builtin data types anyway, the general replacement being interface{} (dynamic typing) or CODE GENERATION. It has weird special-casing all over the place (e.g. make, for) and won't let you abstract and generalize things. The error handling is simply deeply ugly. Channels aren't a nice concurrency primitive and goroutines are ugly (by default, you probably don't want to just spin off a separate task which runs forever).
-
@Xamenyap generics were missing for a long time. Now it does have generics but it‘s always suboptimal when stuff gets added as an afterthought instead of being part of the original design.
It lacks algebraic types.
It doesn’t have non-nullable types, repeating the same mistake about null as so many other languages.
I think it doesn’t have value types (except for primitive types), only reference types. Similar to Java.
The default error mechanism is throwing and catching. This is probably because there is no real alternative due to the lack of algebraic types.
There’s probably more that I forgot about.
"I use Go/Rust" is the new "I use arch btw"
rant