How To Design Programs

alex 25th May 2024 at 3:51pm

By “good programming,” we mean an approach to the creation of software that relies on systematic thought, planning, and understanding from the very beginning, at every stage, and for every step.

from the Preface

Very early on, the basic steps to program design are established, and are expanded and worked upon throughout the book.

Good programming is far more than the mechanics of acquiring a language. Most importantly, it is about keeping in mind that programmers create programs for other people to read them in the future. A good program reflects the problem statements and its important concepts. It comes with a concise self-description. Examples illustrate this description and relate it back to the problem. The examples make sure that the future reader knows why and how your code works. In short, good programming is about solving problems systematically and conveying the system within the code. Best of all, this approach to programming actually makes programming accessible to everyone—so it serves two masters at once.

from the Prologue: How to Program

The book is based in the Racket language, which is a dialect of Lisp. There are some very good moments in the book (I liked the rigour of data definitions). It was good to see I was already following most of the design guidelines in the abstraction chapter.

I might come back later for the fifth and sixth chapters on generative recursion and accumulators.

notes on HTDP chapters

I - Fixed-Size Data (HTDP)
III - Abstraction (HTDP)

TitleHow To Design Programs
AuthorRobert Bruce Findler, Matthias Felleisen, Matthew Flatt, Shriram Krishnamurthi
PublisherMIT Press