This is a kind of follow-on from Elements of Programming , though this book has much more of a cultural feel to it. It’s a kind of History of Art for Mathematics, Algorithms and Programming. The early chapters cover mathematics from the Ancient Greeks to the Middle Ages. As well as descriptions and examples of the mathematical concepts being introduced, there are short profiles of the men and women that discovered them. Some of these are fascinating – I didn’t realise that Lagrange was born in Italy, I knew little of Peano and I’d never heard of Simon Stevin.
The maths is mixed with examples in C++, more numerical earlier in the book and then more abstract later as the notions of group theory are introduced. One theme running through the book is the Greatest Common Divisor (GCD) which takes us from Euclid to Chapter 13 which covers cryptology. I found the explanations to be clear and in some cases (like cyclic groups) I understood properly for the first time in my life. This isn’t a book to learn any programming skills from, but it does show that some of the ideas that underlie C++ and programming in general go back over thousands of years.
I enjoyed reading this book so much that I’m tempted to search for a more compendious book on the history of mathematics.