I'm looking to dive into low-level programming but I'm not sure where to begin. I have a good grasp of command line tools and Linux, and I've developed a Maven-based CLI tool in Java called JNote. I'm interested in what languages or resources you would recommend for someone transitioning from Java to low-level programming. Should I start with C, Rust, or even Assembly? Any tips or guidance would be really appreciated!
6 Answers
As someone who loves strong type systems, I'd say give Rust a shot if you feel adventurous. It does introduce some complex concepts that could be tricky for beginners, so sticking with C or C++ might be a safer bet initially.
C is definitely the way to go! Even if it isn't strictly low-level, it will help you get accustomed to programming with less memory abstraction. It’s a solid foundation before moving on to more advanced topics.
You might want to check out Raspberry Pi or Arduino projects using C or C++. They’re great for getting hands-on experience while learning low-level programming.
It's worth noting that while a true low-level language is one that maps directly to machine code, like Assembly, C is still an excellent starting point. It'll help you grasp memory management and processing better before you dive into more complicated languages or concepts.
Thanks for the clarification! I find that distinction really interesting and something worth sharing.
Starting with C would be a good idea, even if it's not technically low-level. Try building some user-land programs and utilize your ESP32s or other microcontrollers. Once you're comfortable, you could explore Assembly for deeper understanding, especially for specific hardware features.
Consider learning C and then try building an emulator, like for Chip-8, NES, or C64. It’s a fun way to get into low-level concepts!

I actually have a couple of ESP32s laying around that I haven’t used yet, but I think they’d be perfect for something like that!