Have any of you experienced wanting to know more about what the machine is doing?

Happy Easter!

I just learned how to use image files in my JUCE C++ framework GUIs, which peeled away a bit of restriction that I’m always talking about with software frameworks and libraries; I’m so glad that I’m becoming more comfortable with high-level environments where most practical, and thinking critically about what is happening under the hood when I have the desire to. I didn’t get into programming to think about every detail of the computing chain, I wanted to build things I most specifically wanted to create, cheat and mod videogames at first, and also manipulate GUIs on the IPod. This was enough, until I felt that understanding the machines in more detail would give me more personal confidence, and flexibility in the future, which in some ways it has; yet time is money. I need to build cute apps, and stable systems that people actually want to use, and I can be proud of having those skills. Yet I still have an itch to play with and learn about lower-level stuff occasionally just for pleasure, is there anything wrong with this?

I’ve always loved the lower-level stuff.
In my computer science degree, we had a module where over the semester, we built a theoretical computer from scratch, the actual “ones and zeros”, otherwise known as logic gates. What’s awesome is that C++ has direct access to that level of computing, where you can send, for example, bitwise operations, performed (in some contexts) “atomically”, or in a single processor cycle.
Pointers were cool when I first learned about them. The fact you are addressing direct memory locations was a new level of interaction I had never experienced in Python or Java.

I gotta say, though, that the bulk of learning in programming is not learning the bottom-level stuff. I spend essentially all my time now “learning how to use other people’s code”, and that’s basically all programming is today. I have to fight my instinct to use the more primitive stuff, like direct pointers, to try and implement things like smart pointers. But I know when someone else uses my code the work will pay off by a mile. Just that if I were designing a computer, I’d do it different. :wink:

Crashcourse has a cool series on computer science, where they go over the very low-level fundamental stuff. If you’re not familiar with it, I’d recommend you take a look.