The Science of Programming
This is the very first book to discuss the theory and principles of computer programming on the basis of the idea that a proof of correctness and a program should be developed hand in hand. It is built around the method first proposed by Dijkstra in his monograph The Discipline of Programming (1976), involving a "calculus for the derivation of programs." Directing his materials to the computer programmer with at least one year of experience, Gries presents explicit principles behind program development, and then leads the reader through example programs using those principles. Propositions and predicate calculus are presented as a took for the programmer, rather than simply an object of study. The reader should come away with a fresh outlook on programming theory and practice, and the assurance to develop correct programs effectively.
What people are saying - Write a review
Excellent book. I am carrying this book around for the last 30 years or so. Used at the Groningen university as the introduction for programming course. As the foreword -from Edgser Dijkstra- this book could only be written by David Gries, luckily he did.
Practical course in getting a sound understanding of the logic behind programming structures which should be baked into a programmers mind. That would save the (computer) world of a lot of "out of index bound" errors for a start.
Anyone, no matter if your 'programming' spreadsheets, maps or graphics, should get him/herself acquainted with terms of weakest pre-condition and derived program statements to get to the wanted post-conditions. The used programming language is simple enough to be understood by anyone who does have an understanding of logic. (Logic as in mathematical logic, not political logic)
A beautiful book that explains how to write a program, that not only convinces its correctness to the programmer himself, but also to all others who come across that program. The science behind this kind of program development is based on the concept of weakest pre-condition and calculational approach to derive a program. With the traditional approaches for developing a program such as ad-hoc methods, trial-and-error and guess works, it is very hard to show whether the developed program is correct and satisfies its specifications. The science developed in this book not only explains how to show the correctness of a program (with respect to its specification) being developed, but also explains how to construct the program in stepwise manner with the final goal -the specification- in mind. In summary, this book answers two simple but most important questions in computing field. 1. How to develop a program? 2. How to know/show the program is correct? Read this book, and write to me, if you didn't get answers to these questions! Happy reading.