Hacker News new | ask | show | jobs
by sl1ck731 2620 days ago
Go is a systems language. The term isn't confined to device drivers. It includes platform/backend software such as web servers and things like message queues or the Docker ecosystem.

The term is nebulous though.

2 comments

That's wrong! Those fall squarely in the application domain.

By your argument Ruby and Python are also systems languages because they can be used to write servers and job queues.

You're not doing real time programming with Go. Don't make systems programming lose its meaning by promulgating this myth.

Real-time programming can be done in any language, Java for example.

I think you're conflating writing device drivers/kernels with systems programming, which includes those things but is not limited by them.

Regardless, the term's meaning can't be lost if its apparently this hazy.

I don't think you understand what real time programming is.
Real time programming requires you to be able to make hard guarantees about how long a certain piece of code can run and what resources it uses.

This is literally impossible with a GC because you can only bound one resource (time or memory) at a time.

The best RTS languages are a pain in the ass to use because the compiler will complain about every single thing - cases that could go wrong with your code

They are used in mission critical (in all sense of the word) systems like spaceships - where a tiny bit of lag will send it thousands of miles in the wrong direction.

Those links you provided, one is a draft for a spec, it's not even implemented yet - and the other has nothing to do with real time languages.

This is swapping out the JVM. It's not even the same language at that point.
Maybe it would be easier for both of us if you wrote the definition for real-time or systems programming, rather than just saying something isn't one or the other.
Wrong. A system language should at least build shared objects for other languages. Nim can, Go cannot.