A new framework for understanding a coherent set of principles spanning technologies, domains, algorithms, architectures, and designs. Computing is usually viewed as a technology field that advances at the breakneck speed of Moore's Law. If we turn away even for a moment, we might miss a game-changing technological breakthrough or an earthshaking theoretical development. This book takes a different perspective, presenting computing as a science governed by fundamental principles that span all technologies. Computer science is a science of information processes. We need a new language to describe the science, and in this book Peter Denning and Craig Martell offer the great principles framework as just such a language. This is a book about the whole of computing—its algorithms, architectures, and designs. Denning and Martell divide the great principles of computing into six communication, computation, coordination, recollection, evaluation, and design. They begin with an introduction to computing, its history, its many interactions with other fields, its domains of practice, and the structure of the great principles framework. They go on to examine the great principles in different information, machines, programming, computation, memory, parallelism, queueing, and design. Finally, they apply the great principles to networking, the Internet in particular. Great Principles of Computing will be essential reading for professionals in science and engineering fields with a “computational� branch, for practitioners in computing who want overviews of less familiar areas of computer science, and for non-computer science majors who want an accessible entry way to the field.
Peter J. Denning is Distinguished Professor of Computer Science at the Naval Postgraduate School, Monterey, California. He is the coauthor of The Innovator's Way: Essential Practices for Successful Innovation and Great Principles of Computing, both published by the MIT Press.
TODO review: +++ anything written on computing by , who spent decades helping define and defend computing/computer science/informatics, during a period also as President of the ACM, deserves a first and even a second reading. (This is my first of this book, so perhaps I should wait until my second to fully understand the content.) +++ idea of identifying the great principles of computing +++ idea that computing cannot (and should not) be defined as in a dictionary, because this traditional approach does not match how computing is used today by practice. Instead, computing should be defined through narratives about what computing can do, and how, and with which stakeholders, in specific application domains. The framework proposed by the authors does this. + The framework seems useful, although the dimensions seem arbitrary and not always suitable. ++ Good actual content on the principles of computing, and on describing the application domains. -- The glorification of some non-functional requirements over others, e.g., reliability over elasticity, performance over maintainability, reflects the traditional goals of designers in the 1950s and the 1960s, and not the views beyond the 2000s. --- Weak content in many of the parts dedicated to material more modern than the 1980s. This means the authors miss much of the core elements of parallelism and distribution (not covered at all), embedded systems, service-oriented architecture, etc. -- Weak content on design, perhaps triggered by the previous point: although the mention of and the summary of the work of are good, the rest of the material suffers from the same issues as other descriptions of design in computing: lack of understanding of the evolution of the field in the last few decades, culminating with the complete separation of design from engineering (see 's and 's ).