4 ms·
I love go, we couldn't have built out our current software without it. Channels are .. not great. They are too slow for many use cases. That said, I'm buildin
by vessenes 11y ago
I love go, we couldn't have built out our current software without it.
Channels are .. not great. They are too slow for many use cases.
That said, I'm building out a tool right now that uses channels in a nice way; it takes input from a bunch of spots, and the channels magically force it into an orderly queue which is operated on. That's quite a lot of code I don't have to write.
If the channel messages went up past a certain amount, mutex contention and throughput worries would push me onto a different angle of attack though.
Anyway, push go all you want. It compiles fast to a wide variety of statically linked binaries and is performant and easy to deal with. Most of the complainers about go are coming at it from what I would call a craftsman approach: go is a modern Java, not a Haskell with C friendly syntax. It doesn't want to be Haskell or Lisp, those languages can be very hard to use and maintain for junior developers in large teams.
- mtanski 11y ago> It compiles fast It compiled fast
- vessenes 11y agoI have compiled two codebases this week; the first is an ios app that loads a screen and some sprites, and lets the user touch the sprites, then plays a sound. The second loads over 100GB of data and uses 60+ go libraries. The ios app takes over 5 minutes to compile from scratch, the go program takes 16 seconds. Actually, I've also compiled haskell from scratch (oh wow, that's like https://xkcd.com/303/ https://xkcd.com/303/ slow). At least 30 minutes. And, I compiled the go compiler from scratch today to try out something on go tip. Compiling a separate compiler for something like 20 different cross compilation targets was under 5 minutes, total. It's snarky to complain; while the compiler is slower than it was, it adds significant features and performance. It's emphatically not 'slow' in my opinion.
- TheHydroImpulse 11y agoIt's not a modern Java, it's an antiquated Java. It might aim to be modern, but Go is far from being a modern programming language, even if it was implemented in modern times.
- vessenes 11y agoI disagree; it's modern in its sensibilities about which features to restrict in order to fulfill its design goals, and it is informed by experience distilled from millions of developer hours at large companies since Java was designed. Go will never have functions (well, this is a class in Java) like RequestProcessorFactoryFactory.RequestSpecificProcessorFactoryFactory, an actual apache xmlrpc server class name.
- grey-area 11y agoThere is some irony to your use of the term modern here, as the original modernists coined the phrase less is more which nicely sums up the Go authors' approach. Go is a modern language, in every sense of the word. You may not like it, other languages might work better for you or for certain situations (which is great, it really is), but don't pretend it is antiquated or created in ignorance.
- koloron 11y ago> It doesn't want to be Haskell or Lisp, those languages can be very hard to use and maintain for junior developers in large teams. Can you expand a bit on the difficulties that these junior developers had with Haskell?