I’m tired of hearing myself say “I don’t really know” when I’m asked why I want to work with a particular piece of technology. I say that because even I don’t have a clear answer. Mostly it is just “because it seems interesting” but I rarely put more thought into it. In this post I’ll summarize why I want to learn C++ and what I want to do with that knowledge.

For years I’ve been becoming more and more interested in software that is running in the lower layers of the computing stack. Networking software, operating systems and stuff that is running between the OS and the hardware (one would be surprised to learn how much stuff there is actually, I found it funny when people at oxide said something like “… and high level stuff like the OS kernel”). C/C++ are the typical language of such domains.

First of all, anything running close to the hardware is interesting because I find the hardware itself very interesting. It’s intricate and yet tangible. You can hold a CPU in your hand, the circuitry is there. Yet it is incomprehensible how much it can do an how fast it does it. I also think these kinds of low level software have the longest lineages, they date back to times that I referred to in my earlier post and so they seem a bit magical and invoke a sense of nostalgia in me. Running at the bottom of the stack also means that they have to be very efficient (because many other layers rely on them) which means the negligent and wasteful approach to software development that I’ve been part of all my career is not going to cut it. I’d be more than happy to leave this path.

Besides the low level stuff, C/C++ are used in many areas of software that I find particularly interesting as I wrote in this post. The embedded category in that list is especially important because it connects (by way of running in / controlling machines) to many domains outside of software that I’m very much attracted to:

  • environmental issues / waste management
  • geology, maps, cartography
  • exploration (oceans, marine research, space exploration)
  • agriculture, botany
  • aviation (aerodynamics, aeroplanes)

So becoming proficient in C/C++ is not the goal, the goal is to be able to do interesting and challenging work and do it for something that matters. I found C/C++ to be right at that intersection.

I’m also excited about some modern alternatives to C/C++ that seem to be getting popular like Rust and Zig but without proper C/C++ experience I’d never really understand the significance of the advancements in these languages. For now, they’ll have to wait.