Is Go a Systems Programming Language?
With automatic garbage collection, is Go really suitable as a systems programming language?
A topic that arises from time to time is whether Go is a systems programming language. The creators of Go have characterized it as such but many object to that label.
With automatic garbage collection, it does not seem to fit the bill. You would not, for example, want to write an operating system kernel with a language using a garbage collector.
However, it helps to clarify by looking at Wikipedia’s definition of systems programming:
Systems programming, or system programming, is the activity of programming computer system software.
The primary distinguishing characteristic of systems programming when compared to application programming is that application programming aims to produce software which provides services to the user directly (e.g. word processor),
whereas systems programming aims to produce software and software platforms which provide services to other software, are performance constrained, or both (e.g. operating systems, computational science applications, game engines, industrial automation, and software as a service applications).
In this regard, I think it is indeed fair to label Go a systems programming language. We can also see this reflected in the types of software built using Go:
- Docker — A container technology. Apps
Bcan run on the same OS in different containers. One container can make it look as if
Ais running on Red Hat Linux while the container for
Bmakes it look as if it is running on Ubuntu Linux.
- Kubernetes — A system for managing multiple containers across multiple computers.
- InfluxDB — A database system for storing time series data to be analyzed in realtime.
- Traefik — Is used for load balancing. Meaning it takes network requests from clients and try to route it to a server which has available capacity.
- CockroachDB — Distributed database.
- Geth — Implementation of an Ethereum crypto currency node. Can parse and verify the blockchain and its smart contracts.