Re:Go’s march to low-latency GC
by DanWaterworth on Wednesday July 06, 2016 @04:05PM
(#12045502)
I consider myself an "advanced coder", whatever that means and so I know that an IRC server is likely to be IO bound. I also know to avoid C, especially multithreaded C. Not because I would be unable to write correct multithreaded C, but because I probably don't have to to solve the problem adequately.
My experience means I know to pick my battles.
Disclaimer: despite all my praises for Go, I don't actually use it for real problems. Would I like to use Go? Definitely! Is there a problem that I'm trying to solve that needs Go? Certainly not. In many cases I'd objectively pick Rust over Go, but when it comes to threading primitives, Go is somewhat unmatched.
> pick my battles
Exactly my point. A good coder will choose the tool that expresses the solution correctly. C is a very good choice, it always will be, there are sometimes better choices. Ultimately it seems as though we are in agreement; cheers!
Re:Go’s march to low-latency GC
by DanWaterworth on Friday July 08, 2016 @03:27AM
(#12054044)
Go's threading primitives are not unmatched. You can do the same in Rust [1], but the gold standard in my eyes is STM in Haskell which allows you to block on arbitrary conditions.
[1] https://doc.rust-lang.org/std/macro.select!.html#examples
Re:Go’s march to low-latency GC
by rantanplan on Wednesday July 06, 2016 @05:52PM
(#12046119)
OT: why is an IRC server I/O bound? That really piqued my interest.
Re:Go’s march to low-latency GC
by Terribledactyl on Wednesday July 06, 2016 @06:58PM
(#12046417)
I've never made an IRC server but I share a similar feel for I/O (Network) being the limiting factor. Have one user write a message and then you need to send out potentially hundreds of thousands of messages. (At twitch scale)
The actual CPU computation going on per event is minimal (process maybe a few kb of text), and if we're only dealing with text, probably not memory (capacity or throughput) bound and certainly not disk bound.
Good code doesn't always mean approachable code, writing a decent socket server in C assumes a ton of advanced knowledge.
If Sally had to write, say, a C logging library it would be a masterpiece of simplicity. These days your code has an audience, and those audiences can vary quite greatly.