Remix.run Logo
binary132 7 months ago

What do you mean when you say “Go’s usecases did not exist”? It was invented to write concurrent servers in that would have readable, performant implementations suitable for use across teams, to make code review faster and better, to displace C++, and to prove that certain design principles from Dis / Plan9 were superior to those in Java. I’m not really clear how those usecases did not exist at the time. If you mean “Go is for scheduling containers”, you are wrong, but just because one popular application exists that doesn’t imply that is “what it’s for”.

glonq 7 months ago | parent [-]

I inherited a project that uses Go for an industrial control system. It needs to manage valves and pumps and sensors in a performant and accurate and reliable manner, and that's what the developer (an electrical engineer) chose. FWIW the system has been in production for a couple years and works splendidly.

The me of yesteryear probably would have developed such a thing in C++. In an alternate universe, there's a version of me that learned Rust 5-10 years ago and would have chosen that.

zozbot234 7 months ago | parent [-]

> an industrial control system. It needs to manage valves and pumps and sensors in a performant and accurate and reliable manner

How does it deal with GC pauses? Wouldn't they introduce unacceptable jitter for this kind of application?

Anyway, it's relatively straightforward to rewrite from Go to Rust if you aren't doing things that essentially rely on GC (which is quite rare).

glonq 7 months ago | parent | next [-]

A PLC controller deals with anything that requires tight timing, so the Go portion is mostly higher-level control of the system and states.

AstralStorm 7 months ago | parent [-]

So only high level non-safety-critical code, I see.

I hope someone properly checked that no safety properties depend on Go there. I bet nobody actually did so...

binary132 7 months ago | parent | prev [-]

Go’s GC is pretty snappy these days, but I don’t think it’s that snappy. :)