There is an excitement in reading what everyone else is afraid to say---and the software world is full of taboos.
I passed up "Patterns of Software" a million times in the stores; because of the title, I thought it was yet another book on software Patterns (capital P) in the vein of "Design Patterns" and other recent missives on high-level design.
Then I read Richard Gabriel's essay "Worse is Better," available on the web. Though the tone can be bitter and depressing at times, I was immediately hooked on this rare find: a hardcore Lisp person making honest criticisms of both the philosophy and practice of the Lisp world (i.e. academe and the AI industry.)
His book is even more rewarding than the essay, because in it Gabriel offers a social theory of software. He explains the overwhelming success and enduring popularity of the C language, but, refreshingly, he does this without taking the easy way out and simply insulting the intelligence of everyone who is not a Lisp user. Gabriel's lessons come from the real world---documented in this semi-autobiographical book---and he didn't always like the answer.
While it does discuss Patterns (more deeply and more critically than almost anything else, in my opinion) it is primarily about some common patterns (lowercase p) in the software industry.
Such as: why does the "best product" often fail miserably in the marketplace? After the enormous success of UNIX in the 70's and 80's (and the failure of almost everything else) this became an important question. Especially for those who wished to succeed UNIX.
Gabriel's answer turns on what has been perhaps been said best by writer Virginia Postrel: "Quality is not one-dimensional." Sadly, Gabriel's book does not include the aforementioned essay on the LISP vs. C dialectic. In it, he opposes two philosophies of software design, which he calls "Worse is Better", and "The Right Thing." The former is a perhaps bitter acknowledgement that the market does not usually reward the perfect product, if for no other reason that what works for some often does not work for others. In line with Postrel's remark, there simply is no single "right thing."
The author's writing is deeply conflicted, which makes for an interesting read. The two philosophies cancel each other out, and the software world chose the other one.
It's not hard to see why this is so bad for the Lisp community. In the world at large, Lisp has largely lost its special status as "not just another programming language." And when Lisp is seen to have advantages and drawbacks just like everything else, the one-size-fits-all Lisp enterprise itself is thrown into serious doubt.
As the author acknowledges, Lisp's mindshare has all but vanished. Faced with the reality of "worse is better", the Lisp world had no answers---and everyone else knew it.
I think it is a very honest thing for someone who truly believes in Lisp to question whether its unpopularity is due to something other than aversion to Lisp's pervasive parentheses, or perhaps to hacker-ish ignorance of "higher-level" concepts in programming. Gabriel has put his finger on what may be remembered as the philosophical "Great Schism" of computer science.
The one point of light in Gabriel's honest-but-pessimistic world comes from what this book doesn't include: his Worse is Better essay. After the discussion of worse-is-better, he says that C is *still* not the language for artificial intelligence, despite its success. He is correct, of course. But he's got a real point here: if Lisp is going to succeed, Lisp-the-language must free itself from the shackles of Lisp-the-philosophy, whose broken promises and disappointments led to the near-demise of the AI industry.
Excellent book.