I've been delving back into "systems programming". The reason for quotes is the term is ambiguous. See the footer of this post if being a pedant about words is to your liking.
So, what do I mean by "systems programming"? I mean that I'm writing Zig programs which make calls to operating system API's (i.e., sigaction). A joyous part of this journey is rediscovering man pages and their sage wisdom.
Man pages are invaluable, party because they are searchable via man -k "my term", and party because they -- usually -- don't require the internet. One does not need to switch between a bunch of browser tabs, remember urls, etc... man pages are close at hand, linked, and while some concepts may have scant information, they necessitate playing with the system in order to grasp the docs.
Since I'm currently at a company which builds systems delivered via web browser user interfaces, and I've need to slog through the React bog more than once, I've often wished I could type man js/Object.array to refresh on the is on MDN, but in my terminal. If my desire is try and find a browser API which I have a hunch exists but am fuzzy on I could reference an index via man mdn-apis.
Some efforts like this exist, but... I don't want to git clone then risk some sort of js malware infecting my machine. I'd much rather apt install, but alas, those debian gatekeepers of old. 😉
On a side note: hat's off to the linux package maintainers for their tireless work. Y'all are heroes!
In sum: man pages are a wealth of knowledge and wisdom for getting to know ones tools and operating system. I'm a confused as to why man pages were a forgotten tool of mine, but I'm glad I found my way back.
A "system" is defined in the first sense as:
a regularly interacting or interdependent group of items forming a unified whole
In the vein of the first sense, the term "systems programming" is synonymous with "programming", at least in practice. Such an assertion can be made, due to a program (again in practice) necessitating some operating environment to run on. Even if a neck-bearded wizard whipped up a binary file, where would it be leveraged for its utility?
My pedantic point: all programming is orchestrating some system. OS, web, you name it. It is all a system, serving a purpose, and knowing of what the system entails is paramount.
A nascent conviction of mine is that the programming/engineering discipline is severely lacking a systems perspective. Such is the curse of specialization (e.g., "I'm only the frontend guy" or "I'm only the backend gal"), but also of incentive. If I only need to be the "frontend person" or the "backend person" or the "database person", there is little to no incentive to see how the portion of the system being worked on is composed with others. One can assert, "That is why we have an API! I shouldn't need, and don't want, to know about your ~AssScript~JavaScript." Its a pity. I have a hunch -- and yes, big hunch -- some systems thinking and becoming acquainted with the unfamiliar would have outsized benefits.