Verdict: Highly Recommended.
This book, subtitled Conversations with the Creators of Major Programming Languages, is an ideal book to read over a long period of time. Each chapter covers a different language so I was able to read a bit, put the book down, and resume later on.
Seventeen languages are covered: C++ (Stroustrup), Python (von Rossum), APL (Falkoff), Forth (Moore), BASIC (Kurtz), AWK (Aho, Weinberger, Kernighan), Lua (de Figueiredo, Lerusalimschy), Haskell (Peyton Jones, Hudak, Wadler, Hughes), ML (Milner), SQL (Chamberlin), Objective-C (Cox, Love), Java (Gosling), C# (Hejlsberg). UML (Jacobson, Rumbaugh, Booch), Perl (Wall), Postscript (Geschke, Warnock), Eiffel (Meyer) and the foreword was written by Sir Tony Hoare. Unfortunately, the C Programming Language (designed by Dennis M Ritchie) was not covered. Each language, on average, is dealt with in nearly 26 pages, giving the interviewer a chance to get to grips with the subject. At the end of the book, 15 pages are spent listing biographical information on the Interviewees.
I liked all of the interviews in this book but would have liked to have seen Jan Jones being interviewed – she created the Sinclair QL’s SuperBASIC which also acted as the systems job control language (especially with SuperToolkit II installed). My favourite interviews were for AWK, C++, and UML. AWK because it is the first Unix scripting language I encountered, C++ because of its flexibility, and UML for standardising diagrams. The AWK interview tackled three interesting characters – (Aho, Weinberg, and Kernighan). The C++ interview was with Bjarne Stroustrup. Given that C++ is a joint effort, a whole book could have been written about contributions to C++.
I’ll dig a bit deeper into the AWK interviews. Of all the topics of Al Aho’s answers, I particularly liked his comments on the topic ‘Unix and its Culture’.
He was asked:
...At which point do you decide it’s the right approach to create a language to solve a specific problem instead of a program in another language?
To which he replied:
Virtually every area of human endeavour has its own jargon… It’s not unnatural for people to say “Let’s create a language around these notations for solving problems arising in a given area”.
Brian Kernighan’s answer to “What hooked you on programming?” was interesting, documenting how he got into programming at project MAC at MIT (a groundbreaking research project [1]).
Peter Weinberger, the final part of the AWK triumvirate, was asked “What are your suggestions to become a better programmer?”, answering “...it is important to learn new techniques and algorithms”.
The UML interviews were particularly interesting to me as it interviewed another trio: Grady Booch (OOD), Ivar Jacobson (OOSE), and James Rumbaugh (OOA). I’ve attempted the difficult task of finding favourite questions answered by all of the Three Amigos.
To paraphrase Ivar Jacobson’s response to “What would you change in the future? What might change in UML?” he replied that the language is too complex, and that he would love to restructure UML as a set of domain-specific languages (DSLs).
On being asked “What does a language need to be usable by multiple teams of developers?”, James Rumbaugh replied that he felt that lots of academic languages make the same mistake: they solve the interesting mathematical issues, but overlook the pragmatic issues of how a language will be used in context because the pragmatic issues aren’t theoretically interesting. He said that it’s these small things that determine the usability of a language.
Grady Booch, when asked “How can we transmit experience in the software field?” said that in the Middle Ages, guilds served as a primary mechanism for the transmission of tribal memory… He also said that a considerable amount of experience is transmitted by the Web (consider Slashdot, for example), books, blogs, and technical meetings.
I’d like to point out that the paraphrased responses are no substitute for reading the book. They were added to this review to try to evoke the flavour of the book.
Published in 2009, this is not a new book but it still makes for interesting reading. I learnt more about software development projects – in particular programming language development projects and it gave good background information on these projects as well. You don’t need to know the languages involved and it is well worth reading.
Reference
[1] ‘MIT Computer Science and Artificial Intelligence Laboratory’, Wikipedia, available at https://en.wikipedia.org/wiki/MIT_Computer_Science_and_Artificial_Intelligence_Laboratory
Website: https://www.oreilly.com/library/view/masterminds-of-programming/9780596801670/