Hacker News new | ask | show | jobs
by akmittal 2220 days ago
Defination of systems programming language is really contradicting. Go was sold as systems programming language in beginning.
2 comments

Kubernetes is written in Go; I would consider that a "systems" project. I think of "systems" as "software whose purpose is to underpin other software", excluding same-language libraries and frameworks. This rough definition does a good job of covering most of the things people mean when they say "systems programming".
That sounds like a pretty useless definition and needlessly confusing, because systems programming have always meant something closer to the metal. System as in Operating System. Sounds like Go people decided to repurpose the term for whatever reason.

If Kubernetes were written in JavaScript would you call it a systems programming language as well?

It wouldn't be written in JavaScript because JavaScript wouldn't serve a systems use-case very effectively. That's exactly my point.

Assuming Microsoft isn't talking about solely using Rust in Windows The Operating System and Linux The Operating System, they agree with my definition.

Kubernetes could have been written in Typescript, for instance. Pulumi is for writing infrastructure as code in Typescript. Is Javascript a systems language, them?

Keyword being "closer" to the operating system, of course it doesn't mean just syscalls and Assembly. If you define "system" in "systems programming" in this broad sense of "something that other things call" you dilute the meaning of the term. Any program becomes "systems programming" then.

I'm sure that most people didn't use the term in this sense before Go's creators did and till this day I see only the Go community re-purposing the expression. I'd be happy to be proven wrong, though.

Kubernetes is an application that manages virtual machine configurations. While it's a system in the sense of a collection of parts that work together, it is not a system in the sense of the original meaning of systems programming.

That tended to mean a language designed to compile down to processor instruction sets the way C, C++, or now, Rust do.

Go was intended to replace C++ and C for many of the things that Google programmers did, but it wasn't intended to aim at "bare metal" if I recall Rob Pike's design talks correctly.

That's not a systems language, that's a native language. There's a lot of overlap but they're unrelated concepts. Also, Go does compile to native processor code.
go is not system programming language because they have GC.
https://en.wikipedia.org/wiki/Oberon_(operating_system)

Every now and then this misconception is found on HN.