Þ   briarpig  » quotes  » gabriel


Richard Gabriel (dreamsongs) is rather famous in programming circles for his (html) Worse Is Better (context: Worse Is Better) essay. But I started this page to begin citing passages from his much longer (1.2MB pdf) 1996 book: Patterns of Software.

good documentation

Richard Gabriel in Patterns of Software, page 4:

Third, there must be good documentation of what each piece of code in the repository does. This includes not only the interface and its purpose but also enough about the innards of the code — its performance and resource use — to enable a developer to use it wisely. A developer must know these other things, for example, in order to meet performance goals. In many cases such documentation is just the code itself, but this information could be better provided by ordinary documentation; but again, a development manager would prefer to hire a developer than a documentation person. [bold emphasis added]

This quote comes from a section emphasizing the significance of good documentation to the success of code re-use as a goal.

maintenance and locality

Richard Gabriel in Patterns of Software:

Maintaining compressed code requires understanding its context, which can be difficult. The primary feature for easy maintenance is locality. Locality is that characteristic of source code that enables a programmer to understand that source by looking at only a small percentage of it. Compressed code doesn't have this property, unless you are using a very fancy programming environment. [bold emphasis added]

One main purpose of naming conventions (eg the sort of prefix that in front front of member variable names) is to reduce the total scope of various places a programmer might look to find the meaning of a symbol.

notation system

R.D. Tennent (quoted by Gabriel), 1981:

A programming language is a system of notation for describing computations. A useful programming language must therefore be suited for both describing (i.e., for human writers and readers of programs) and for computation (i.e., for efficient implementation on computers). But human beings and computers are so different that is is difficult to find notational devices that are well suited to the capabilities of both. Languages that favor humans are termed high-level, and those oriented toward machines low-level. [bold emphasis added]

Note þ does not define a new programming language, and the dynamic languages on top are not new languages either. But one still might consider a set of apis, used by one layer or another, to be a system of notation.

zawinski

Richard Gabriel in Worse Is Better:

About a year later we hired a young kid from Pittsburgh named Jamie Zawinski. He was not much more than 20 years old and came highly recommended by Scott Fahlman. [...] He found the EuroPAL paper, and found the part about worse is better. He connected these ideas to those of Richard Stallman, whom I knew fairly well since I had been a spokesman for the League for Programming Freedom for a number of years. JWZ excerpted the worse-is-better sections and sent them to his friends at CMU, who sent them to their friends at Bell Labs, who sent them to their friends everywhere. [bold emphasis added]

Oddly, jwz seemed to dislike me, though we've never met, as someone he viewed as yet another face of C++ invading Netscape after the start. Maybe I seemed an enemy of Lisp? Thwarting his wishes once was enough to get me labeled a lunatic. I shoulda bought him a beer. (Ironically, his version of the design was more worse-is-better than mine.)