By Chris Douce
The issue of programmer performance has always interested me ever since reading Weinbergs the Psychology of Programming and stumbling across an old paper by Bill Curtis published in an IEEE journal back in 1981 entitled Substantiating Programmer Variability.
Software superheroes attracted me since being a 'competent' programmer, I felt that potentially I could learn some 'programming pearls' (or perls?) from programmers who the author considers to be 'cosmic'.
Software superheroes paints and an intriguing picture of the actions and individuals behind the conception of a number of fantastic software inventions, focusing significantly on the design and creation of programming languages. Software superheroes fills the gaps that Fire in the Valley and a number of other modern histories of computing fail to cover.
Lohr traces the well-known route from wires, to assembly language from binary numbers, bootstrapping the book with an illuminating description of the development of Fortran. Fortran is naturally followed with a discussion of Cobol, where a number of my long held historical misconceptions were clarified. Other languages include the development of the 'latin' of computer languages, Algol and its descendants, Pascal and C, leading gradually towards innovations in C++ and Java.
Due to my own sense of aesthetics I felt the inclusion of BASIC and Visual Basic a little surprising, but I was to be persuaded. I learnt a little too: before BASIC made its force felt, a small number of related languages were developed, one was called DOPE, entitled Dartmouth Oversimplified Programming Experiment. Lohr continued with a brief, well worn discussion as to how Microsoft began, followed with a description of how Visual Basic became the popular programming tool that it is today.
Leading into more modern times, approximately ten years ago, Java was introduced to the reader. Java could be considered a language with no sharp edges, aimed at 'average' programmers, where simple rules can 'free' the programmer to focus on problems. This relates to the earlier development of Cobol, where the use of verbs rather than symbols sparked intense debate.
The design and evolution of programming languages is one of the central themes of the book, but is not the main one. The development, use and acceptance of operating systems is also described, notably IBM's famous OS/360 and Unix. Different development philosophies behind these two systems are compared and contrasted. The first being developed by teams of programmers, the second being developed by only two key talented programmers. Both intended to serve different ends.
On top of operating systems, lie applications. The origins of the Word wordprocessor and Lotus spreadsheets are provided along with, interestingly, SQL. Databases are perceived by so many as to be the unfashionable underbelly of software and incredibly easy to forget about. The inclusion of such an important software artifact, and one that has to be programmed, is admirable.
Tantalisingly, Lohr writes that '[Charles] Simonyi [of Microsoft] is working on a technology that he hopes will free the human intelligence', who wishes to liberate abstractions from closed programming languages. It has been said that cosmic programmers can outperform average programmers at rates of ten to one, a fantasic figure considering many other forms of human endeavour.
There is a commonality between these superheroes: an interest in invention, patience and wanting to know how things work. Designers of fantastic software, it is hypothesised, are motivated by pragmatism and the need to solve real-world problems, hence the creation of the tools of Fortran, Stroustrup's C++ and, more recently, Java.
The final chapter concludes with a discussion regarding open-source software, with an outline as to what the open-source moment is, a brief description of the development of the Apache web-server and an introduction into some of the movement's most famous characters.
I feel that there is something missing from this book. I agree with Lohr's selection of superheroes and I very much doubt that I could have chosen better. I feel that there are many more superheroes out there, unfamous work-a-day superheroes who do not receive glamour, credit or acclaim. superheroes who keep organisations working and products shipping. I feel the inclusion of the chapter on open source software is a firm nod in this direction.
From my own interest in what makes programmers tick and trying to understand what I do everyday, working in a 'curious blend of art, science and engineering', Software superheroes hits the spot. Perhaps Lohr could write another book about other unseen digital superheroes who remain hidden from us all.
I will not reveal the final sentence, but I must say, I do agree with Knuth. There is something musical about programming!
Goto: Software superheroes from Fortran to the Internet Age
by Steve Lohr
Profile Books, 2002
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
Basic Books, 2001
If you have read any interesting books or would like to review a book for PPIG, please send it in.