Systems Programming - Programming at the low level

1 readers
1 users here now

For discussion, news, questions and more related to systems programming.

What is systems programming?

Systems programming covers the development of software that rather than supplying the user with services directly, supplies services to other software. Think of it like the underlying gears that make all other software work.

Examples of software that fall under this category include Operating Systems, Game Engines, and Industrial Automation Applications.

Often systems programming takes place in the low level, with direct or close to direct access to the hardware of a machine, and little boiler plate to work on top of.

What sort of languages are used in systems programming?

Languages often used in systems programming include:

founded 1 year ago
MODERATORS
1
 
 

Hello partakers (and lurkers) of the Systems Programming community, in order to keep discussions constructive and engaging, this community will be enforcing three main expectations.

The 3 main expectations of this community are:

  • Be Responsible
  • Be Respectful
  • Be a Learner

Be Responsible

Just because your real life identity is shielded behind an online account, it does not give you an excuse to be irresponsible on the internet. Users are expected to properly vet and fact check their sources before using and citing them, own up to mistakes they make without trying to deflect, and always contribute to the discussion when replying to a post .

Be Respectful

One should always act in a respectful manner towards other users in this community. This is a place for discussion and education, not a place to win arbitrary one ups on one another. Users are expected to not call each other names, debunk arguments in an open and positively critical matter (no matter how silly the argument may seem), and always put themselves in the feet of the other person before responding to them to gain their perspective.

Be a Learner

Whenever you join or create a discussion, always enter with an open mind and ready to change your opinions. While you might closely value some ideas and be unwilling to back down on them, curiosity and the willingness and learn is a trait that makes people become the best possible version of themselves. Users are expected to engage in discussions ready to have their ideas challenged, and ready to change them should evidence or discussion compel them to do so.

2
 
 

Since this community has yet to have it's first proper post, I thought this question would be a good one to start off with. Personally, I mainly use C. I find it's simplicity and decades of usage provides itself as easy to use and very well documented. With that being said, memory management can become a bit tricky in C when you get into the realm of optimising and hacking things together. As such I have started to explore Rust and Zig as alternatives to try out.

Currently I am experimenting with a little Rust kernel. So far, it has a terrible VGA driver implementation and a lot of it needs refactoring before I can even think about getting a keyboard driver up and running to take input. The design, if any at all, is monolithic at the moment with everything running at ring 0 considering there are no rings at all. With that being said, Rust seems pretty robust so far, and the memory borrowing systems has allowed freed me up in the memory management department quite a bit. It's a bit of a learning curve, but I am getting there!

As for Zig, I recently got the language installed on my Debian machine, but I am not sure what to write to try it out, feel free to leave suggestions for me :)