To be fair, enums represent a different and incompatible concept in every language I know.
It's possible to support everybody's needs in a single language, but I'm not aware of any language that has done it yet.
bsaul · 1h ago
"enums represent a different and incompatible concept in every language I know."
Enums has always felt very natural in every modern languages i've tried (swift and rust, for example), even with associated values. The underlying "sum type" concept also is very intuitive, and seems very complementary to structs for example.
Can you expand a bit on what you mean ?
__s · 14m ago
Sum types are cool. Many languages implement enums which are not tagged union sum types (even when language has rich sum types)
>The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt.
- Rob Pike
lionkor · 46m ago
So they made it easy to have data races in a language all about concurrency, bravo. Not buying it.
nsingh2 · 1h ago
Go seems like such a strange language to me. I like its simple syntax, but it's strange that they compromised and added generics to the language but balk at basic things like sum types, pattern matching and type safe enums. Their simplicity design philosophy seems a bit incoherent.
lionkor · 48m ago
They might be trying to do another C, that is so simple that it will be ubiquitous? They're failing to understand that C would never take off it invented today. Go is nowhere on my list of languages I would use - there is simply nothing it's great at. Serialization/deserialization? Rust. Multithreading? Rust. Low level high performance stuff? C, Zig. Quick scripts? Bash, python, JavaScript, Rust. Really fast concurrency? C++ or Rust. Web servers and services? Either nodejs, something static on an existing webserver, or rust for backends.
I completely fail to see where Go excels. Large, statically linked binaries that aren't even concurrency safe...? Really? No enums? Odd syntax (I like Rust, C++ and Haskell, I find Go's syntax odd still).
Like so many Google products, it solves a problem that nobody I know has. And I guess they can afford concurrency bugs, who cares, its only a language primarily for concurrency.
tacitusarc · 35m ago
Have you used Go? Most of your criticisms are, in my experience, incorrect. But ultimately there are tradeoffs, and Go seems to be a divisive language.
In my experience, Go excels at pushing you towards solving the problem rather than yak shaving. And in my opinion that is worth it’s relatively minor frustrations.
It's possible to support everybody's needs in a single language, but I'm not aware of any language that has done it yet.
Enums has always felt very natural in every modern languages i've tried (swift and rust, for example), even with associated values. The underlying "sum type" concept also is very intuitive, and seems very complementary to structs for example.
Can you expand a bit on what you mean ?
https://en.cppreference.com/w/c/language/enum
https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...
https://docs.python.org/3/library/enum.html
https://api.rubyonrails.org/v5.2.4.5/classes/ActiveRecord/En... https://sorbet.org/docs/tenum
https://docs.oracle.com/javase/tutorial/java/javaOO/enum.htm...
https://dart.dev/language/enums
https://www.postgresql.org/docs/current/datatype-enum.html
https://dev.mysql.com/doc/refman/8.4/en/enum.html
https://zig.guide/language-basics/enums
https://www.erlang.org/eeps/eep-0013
https://hackage.haskell.org/package/planet-mitchell-0.1.0/do...
https://www.ibm.com/docs/en/openxl-fortran-aix/17.1.1?topic=...
- Rob Pike
I completely fail to see where Go excels. Large, statically linked binaries that aren't even concurrency safe...? Really? No enums? Odd syntax (I like Rust, C++ and Haskell, I find Go's syntax odd still).
Like so many Google products, it solves a problem that nobody I know has. And I guess they can afford concurrency bugs, who cares, its only a language primarily for concurrency.
In my experience, Go excels at pushing you towards solving the problem rather than yak shaving. And in my opinion that is worth it’s relatively minor frustrations.