One of my relatives gave me a copy of this book for my birthday. As it was first published in 2011, I am saddened that I had not come across it before. It is the 8th volume of 9 of his collected papers published by Stanford University’s Center for the Study of Language and Information.
It is not primarily a book on programming but its contents are selected from the writings of one of the all-time greats who should have multiple entries in the Guinness book of records (The Art of Computer Programming is arguably one of the longest unfinished works ever written, it now has a volume (4) split into 4 parts and one chapter spans two parts. That breaks the normal hierarchy where chapters are parts of a book. I think we can say with confidence that the whole work will never be finished, even completion of vol 4 of the 7 originally planned is doubtful. Overall I think the work is a grand example of perfection being the enemy of the good).
Along the way Donald Knuth has written many other things. One of those is Surreal Numbers which if you have not read it you should immediately place on your reading list. Along with Edwin Abbot’s Flatland, it should be required reading for anyone aspiring to mathematical literacy.
Selected Papers reveals Knuth as so much more than just a programming guru. The book contains 49 papers ranging in length for a couple of pages to a 160 page mammoth that is Crowther and Woods ‘Adventure’ rendered as a literate program using C (for an electronic copy of that chapter type ‘Knuth Advent’ into your favourite search engine.
The book is a rich source of ideas and fun tasks. Some are purely mathematical such as the paper on supernatural numbers. Some like the paper on representing numbers with a single 4 and unary mathematical operators (obviously with only one 4 as a starter binary operators are out) respond to long term puzzles. Then there are the papers that reveal the sheer breadth of DK’s interests and skills such as ‘The Orchestra Song’ and several other musical papers.
There are humorous papers such as ‘Mathematical Vanity Plates’. Then there is the chapter on implementing TPK in INTERCAL. If that means nothing to you, your programming education is deficient.
The book concludes with a truly magnificent April Fool where he pokes fun at both himself and much of modern (in 2011) technology.
This book is, in my opinion, an excellent source of mental exercise and fun for long winter evenings and sunny summer beaches. Some items will help you entertain the family on long drives, other items will stretch your imagination and creativity.
Add this book to your list of must have sources. You may have to look around to find a copy at an acceptable price but you need to be willing to fork out £50. That may seem a lot, but you will get a lot for your money and I seriously doubt that you will regret it.
That reminds me, I think ACCU needs to have a section in its github wiki that lists books that a well-rounded programmers should read. I am not sure I would put this book in that section but I am very sure that books such as Surreal Numbers and Flatland along with more general programming texts such as The Mythical Man Month, Programming Pearls and More Programming Pearls. Yes, I do think they are essential, perhaps more so than the language specific ones.