Abstract: David Parnas' 1972 seminal paper, "On the criteria to be used in decomposing systems into modules", set a milestone in our collective understanding of how complex programs should be divided into more manageable parts. Over forty years later, I have reimplemented in D the example programs presented in the paper and came away with insights that are not obvious from a more casual reading of that text.
In this talk I will 1) present the original insight of the paper, using more modern language; 2) relate it to current design best practices and 3) argue, with the help of my implementation, that D best fulfilled the paper's original vision, even surpassing it.
I am a generalist programmer, with a good grasp of computer architecture and distributed systems. I started using D around 2003, and became even more enamored with the language when ranges and range-based algorithms were introduced. I am currently pursuing my PhD, which aims to provide probabilistic timeliness guarantees in wireless networks operating in uncertain environments, such as wireless sensor networks. In my free time you might find me doing embedded systems development, creating my own CPU, or trying to come up with a generic algorithm to neatly solve a problem. Whenever possible I choose D for the task -- even for hardware design.