April 8, 2009

Masterminds of Programming

Today my copy of Masterminds of Programming arrived in the mail from O'Reilly; a small reward for giving a lightning talk at ILC.

The book is a series of interviews with programming language designers. Along with some expected atrocities like Stroustrup on C++ and Gosling on Java, and bizarre ones such as a 50-page interview with Jacobson, Rumbaugh and Booch on UML, there are interviews with Adin Falkoff on APL, Moore on Forth, Wall on Perl, and a few others. The functional camp is well-represented with SPJ, Hudak, Wadler, and Hughes interviewed about Haskell, and Milner giving an interview about ML.

It is telling that right at the preface the book starts off with an urban legend: "children can learn foreign languages much more easily than adults."

Some of the interviews are very revealing. The discussions present an entertaining window on the cavalier attitudes and biases of many programming language designers, which helps explain some of the dysfunction of the software world today. I don't think this is what the editors intended, but it makes for hilarious reading material.

Some of the interviews can be frustrating to read (every third question in Falkoff's APL interview seems to boil down to "lolz funny syntax"); thankfully this is balanced out by absolutely delightful ones such as Moore on Forth (IMO, the highlight of the book), and the Objective-C interview with Brad Cox and Tom Love. Overall the quality of the interviews varies widely, but not surprisingly mostly seems to correspond to the quality of the language being discussed.

Ultimately Masterminds of Programming is worthwhile not for its insights into programming language design (most of which unsurprisingly boil down to "oops I made a bunch of mistakes because I didn't start with a good model/think/know any better/know enough math"), but into programming and computing history in general.

To finish this review where it started off, here is another unintentionally amusing bit of insight from the preface:

Imagine that you are studying a foreign language and you don't know the name of an object. You can describe it with the words that you know, hoping someone will understand what you mean. Isn't this what we do every day with software?

It comes as no surprise that there is not a single entry for either "macro" or "metaprogramming" in the book's index (although Wadler does make a passing mention of Lisp macros in the Haskell interview).

5 comments:

Anonymous said...

"children can learn foreign languages much more easily than adults."

This is not an urban legend. If you grow up with parents that speaks 2 different languages you will learn them even if you live in a country where one of those languages is not spoken at all.

Your link about "urban legends" is related to *teaching a language*, and it's obvious that kids don't care. A motivated adults might learn much more quickly.

aaronla said...

@Vlad

Thx for the keen review -- my amazon order is on the way. I definitely would like to get more insight on ML and Haskell and see how the mindset of their authors compare to other languages such as C++, Java, Python.

Evolution of programming languages seems to be linked more the experience and preferences of their authors than to the state of the art.

@Anonymous,

"If you grow up with parents that speaks 2 different languages you will learn them". Not sure how that's related. The myth is that children's minds are somehow different in a way that language is accepted more readily, other things being equal. You just posed a situation of other things not being equal. I suspect I too would learn a second natural language more quickly when I was offered no other alternative for communication.

My personal experience may be biased in the realm of programming languages though. My first PL was around age 10: Logo. This was followed by VB in middle school; C and Java in high school; Java, C, C#, and VHDL in university; and now C# and C++ professionally as well as Python, Scheme, Common Lisp, Ruby, bash and Haskell (in decreasing proficiency and frequency order) on the side.

In that regard, I doubt I'm typical.

Ray said...

"The discussions present an entertaining window on the cavalier attitudes and biases of many programming language designers, which helps explain some of the dysfunction of the software world today. I don't think this is what the editors intended, but it makes for hilarious reading material."

My copy is on the way thanks to this paragraph- you should set up an affiliate marketing relationship with them!!

Anonymous said...

I came to this review from Google. I don't understand how you were able to receive the book, read it, write a review, post the review, all in the same day.

Considering that this book is quite large (more than 400 pages), I wish I could read as fast as you.

Vladimir Sedach said...

It helps if you have the whole day to do this (I took the day off to read the book and write a review).

Speed reading is essential (I first learned some techniques after reading Tim Ferriss' blog: http://www.fourhourworkweek.com/blog/2009/07/30/speed-reading-and-accelerated-learning/). I skimmed large parts of the book.

I don't know how the interviews were conducted (by phone or email; I suspect email), but most of the interviewees were not at all concise with their answers. This made skimming easier, but it would have been better if the text was edited down. IMO the book could have been a lot shorter than 400 pages.