Book Review - Masterminds of Programming: Conversations with the Creators of Major Programming Languages by Federico Biancuzzi and Shane Warden
So you don't get to be a mastermind behind a widely used programming language without having a pretty deep knowledge of computer science (and quite a few other things). But you *certainly* don't have to agree with other masterminds on what works and what doesn't. This shows very clearly in the book Masterminds of Programming: Conversations with the Creators of Major Programming Languages by Federico Biancuzzi and Shane Warden. They interview a number of the people behind some of the popular and influential computer languages and record those interviews for the reader. I think what I found most interesting is that there's no "right" answer about what works and what doesn't, and much depends on what niche the language will end up covering.
C++ - Bjarne Stroustrup; Python - Guido von Rossum; APL - Adin D. Falkoff; FORTH - Charles D. Moore; BASIC - Thomas E. Kurtz; AWK - Alfred Aho, Peter Weinberger, and Brian Kernighan; LUA - Luiz Henrique de Figueiredo and Roberto Ierusalimschy; Haskell - Simon Peyton Jones, Paul Hudak, Philip Wadler, and John Hughes; ML - Robin Milner; SQL - Don Chamberlin; Objective-C - Brad Cox and Tom Love; Java - James Gosling; C# - Anders Hejlsberg; UML - Ivar Jacobson, James Rumbaugh, and Grady Booch; Perl - Larry Wall; Postscript - Charles Geschke and John Warnock; Eiffel - Bertrand Meyer; Afterword; Contributors; Index
I found this wasn't the easiest book to read, as it got deep into some very esoteric topics, and the interviews were likely to go off in many different directions. As such, it wasn't as if there were a set of questions that everyone answered so that you could directly compare and constrast topics and background. Still, I found a couple of ways in which the book worked for the reader. If you're into language design, Masterminds gives you some of the inner thoughts of people who have successfully built and rolled out a computer language that has been adopted for use by others. One of the most revealing topics is how they all have dealt with the issue of upgrading and enhancing the language without breaking stuff that has been previously built. As a language ages, it has more and more "cruft" from older features that are kept around for backwards compatibility. The language developers are always walking that fine line between adding new features and making sure it will be supportable going forward. You don't really get a chance to start over and correct your mistakes once they are part of a published version.
The second way you can read the book is to use it as a personality study of a language designer. Geeks are not always known for being the most socially adept or "normal" of humans, and language designers seem to take that a step beyond. These individuals appear to be totally consumed with their computer passions, and as such have very definitive personalities and viewpoints. One designer might state that object-oriented programming is without a doubt the biggest scam pushed on developers in the last decade. Others might state with equal conviction that OOP has been the revolutionary turning point in computer science. And what one designer finds as the "must-have" concept in a language, another designer will brush off as hubris. You'd think after all these years, there'd be some points of truth that just aren't arguable. But at least in language design, that certainly doesn't seem to be the case...
Obviously, it's not possible to cover every single language that's ever been written, and I'm sure many will quibble over why a certain language was included or excluded. Regardless of that, Masterminds is still a good read if the topic is one of interest to you. You may not agree with some of the views expressed by the designers (hey, they don't agree with each other!), but at least you'll have a better understanding of why a certain path was followed.