“Great Principles of Computing”
By Peter J. Denning, Craig H. Martell
MIT Press, 320pp | Buy on Amazon
Is computer science really a science or just a tool for analyzing data, churning and crunching numbers? During its brief history, computer science has had a lot to endure, but it's only recently being appreciated for its potential as an agent of discovery and thought. At first, computing looked like only the applied technology of math, electrical engineering or science, depending on the observer. In fact, during its youth, computing was regarded as the mechanical steps one needs to follow to solve a mathematical function, while computers were the people that did the computation. What you and me call a computer today actually stands for automatic computer, but along the way the distinction blurred.
Ultimately, computer science is a science of information processes, no different from biology in many respects. Not if we heed the words of Nobel laureate David Baltimore or cognitive scientist Douglas Hofstadter who first proposed biology had become an information science and DNA translation is a natural information process. Following this line of reasoning, computer science studies both natural and artificial information processes. Like all sciences, it follows that computer science is also guided by some great principles framework - something that Denning and Martell try to expose in their book, "Great Principles of Computing."
Denning and Martell divide the great principles of computing into six categories: communication, computation, coordination, recollection, evaluation, and design. Each serves to provide a perspective on computing, but they're not mutually exclusive. For instance, the internet can be seen at once as a communication system, a coordination system or a storage system. During each chapter, the authors expose and explain what each principle means and how it relates to different areas: information, machines, programming, computation, memory, parallelism, queueing, and design. Of course, principles are fairly static, so their relation to one another is also discussed at length.
The great-principles framework reveals a rich set of rules on which all computation is based. These principles interact with the domains of the physical, life and social sciences, as well as with computing technology itself. As such, professionals in science and engineering might find this book particularly useful, yet that's not to say laymen won't have a lot to learn. But while the concepts or principles outlined in the book are very thoroughly explained, be warned at the same time that this is a technical book. With this out of the way, if you're not afraid of a lot of schematics and a few equations here and there, "Great Principles of Computing" is definitely a winner.