Book Review: Masterminds of Programming
My review for the impatient reader:
Why I picked it up: It promised insight from a collection of programming language inventors.
Why I finished it: Although there was less depth than I expected, it was interesting to see how divergent the interviewees’ opinions are on some topics.
I’d give it to: A serious programmer who has been working for a few years and is ready to grow beyond the usual “how to” books and is looking for a more contemplative book.
Masterminds of Programming is a collection of interviews with “Creators of Major Programming Languages.” It is edited by Federico Biancuzzi and Shane Warden, and was published by O’Reilly and Associates in 2009. It is organized based on the language, with each of the 17 chapters containing an interview with the creator, or creators in some cases. It covers a wide variety of languages, including compiled languages like C++ and Objective C, interpreted languages like Python and Perl, and even UML.
Although it was interesting to learn a little about the backgrounds of languages I had heard of but never used, it was more enlightening to read about the broader topics the interviewees discussed. I found it especially fascinating to see the conflicting opinions many of them hold on some topics.
“Whenever I hear people boasting of millions of lines of code, I know they have grievously misunderstood their problem. There are no contemporary problems requiring millions of lines of code.” – Chuck Moore, Forth
Although the questions are not the same in each interview, a few common themes stand out. For example, opinions vary on the importance of working on a team vs. individually. It is not entirely surprising that the academics tended to favor individual work, or at least not have extensive experience working on teams.
“The whole business of optimizing and coding is absolutely wrong. You don’t do that. You optimize only if you have to and you do it later. Higher level languages optimize computer time automatically because you make fewer errors.” – Tom Kurtz, BASIC
The misguided use of object orientation is brought up several times, and not just by designers of functional languages. Concurrency and its relationship with OOP and functional programming is also discussed in a few places. There is a general consensus in the interviews that concurrency is one of the important issues yet to be resolved in computing, but there is little agreement about the solution.
There is more agreement on the need to keep languages, and programs, simple. Several interviews include or refer to the quote from Einstein, “Everything should be made as simple as possible, but no simpler.” I also was surprised to see how many times older languages such as Algol-60 and Simula were brought up as influences on more “modern” languages, although perhaps I should not have been.
I recommend this book for serious programmers looking to move beyond the usual “how to” books to find a more contemplative book. The interviews have been put together with obvious care. They cover similar topics without simply repeating the same question to each participant. The result is easy to read, while still encouraging the reader to go slowly and consider what is being said.