Many problems in software systems cannot be properly understood without a good understanding of the low-level details of the machines we work on, says George Neville-Neil in a recent “Kode Vicious” column for ACM Queue.
“The lessons I learned by interacting directly with the hardware—without even the cushion of C (a.k.a. assembly with for loops)—remain with me to this day and have allowed me to track down difficult bugs, as well as significant performance problems,” Neville-Neil states.
“What does it take to understand the nether regions of computer systems?” he asks. His advice is offered in three parts: “Start small. Start small. Start small.”
- Start at the small end of processor and computer hardware, such as an Atmel AVR chip (not a Raspberry Pi).
- Read small programs, such as a beginning Arduino tutorial that blinks an LED.
- Write small pieces of low-level code—small enough that you can hold the entire program in your head if possible.
Developing these skills, Neville-Neil says, will help you “optimize systems for power and performance, as well as understand the ramifications of low-level security attacks.”
Read the complete article at ACM Queue.