Book Review: Masterminds of Programming

Quick Review

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.

Review

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.

Conclusions

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.