This essay was first presented by Richard P. Gabriel at the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications on October 19, 2000, in Minneapolis, Minnesota, USA. Musical interspersions are from the collection of Ron Goldman.
One of the better known pieces I wrote is affectionately called "Worse is Better." Rather than a single download for this work, there is an entire page dedicated to the worse-is-better saga.
In the 1980's I wrote a column for AI Expert, and one of the more popular columns was a sort-of hacker's view of where the applicative order fixed-point function came from.
This is the introduction to "Pattern Languages of Program Design, 2," Vlissides, John M., Coplien, James O., and Kerth, Norman L. (eds), Addison-Wesley, 1996.
These are three presentations I have given over the years. The first is a fairly comprehensive look at all of Christopher Alexander’s work aside from "Notes on the Synthesis of Form" (which I regard as juvenalia) covering both pattern languages and his most recent work called, "The Nature of Order." The second talk is the parts of the first talk that deal only with "The Nature of Order." The third is a comprehensive look at "The Nature of Order," but it's a very large file.
I have done some work to adapt the ideas in "The Nature of Order" to poetry, and some stuff I wrote about that can be found on this page.
In my book of essays. "Patterns of Software," and in some other publications, I have published a list of nine pieces of advice for scientific and technical writers. Usually they are printed in a larger essay, but I’ve seen it posted on doors at some schools.
In 1999, Spencer Reiss, one of the senior editors for Wired magazine, asked me to write a short essay having to do with the then-coming millennium. I wrote this essay for him - and he liked it - but he moved onto another job before he could publish it. See what you think of it.
This is a version of a paper I wrote called "Ten Ideas for Programming Language Design." This revised version appeared in a book commemorating the career of John McCarthy.
HOPL Version [pdf]
Uncut Version [pdf]
In 1992, Guy Steele Jr. and I were invited to write a paper on the history of Lisp for the ACM Conference on the History of Programming Languages II. This is a copy of the paper we submitted, which was published in a book called "History of Programming Languages II," edited by Thomas J. Bergin, Jr., Richard G. Gibson, Jr., and Peter S. Gordon.
The conference was run under the stern but expert control of Jean Sammet, who wished nothing to go wrong to the extent that all questions to be asked at the conference needed to be submitted and approved beforehand. Steele and I did our darnedest to work within the rules, which included working with a historian to make sure we didn't violate accepted methodology. But we fell down when it came to the presentation. We were supposed to submit that for approval long before the conference, but we were too busy to even write the presentation until the night before. The next day we told Jean Sammet that we didn't think she would have approved our presentation, which was a tag team between Steele and myself where he told the technical story of what features were added when, and I told the human story which included political intrigue. We used a particularly unusual set of slides derived from a single diagram we drew which showed time, geography, influences, implementation s, and people. Jean Sammet told us that it was the best presentation she had seen in years, and she was glad we didn't submit our slides, since she would have rejected them.
Steele and I set out to write a much more ambitious paper, in which we tried to understand how languages evolved through a combination of technical, social, commercial, and psychological forces. We felt that a programming language in a dynamic world would be subject to a variety of forces, and not simply the design skills of a single person or group with a vision of its applications. We wrote a draft of that paper, but conference historian Michael S. Mahoney felt we were not on solid enough scholarly footing with the time we had left to validate what, to him, were speculations. We commented out the portions he found unacceptable and pushed forward with the paper, and the HOPL version above is the result. However, 32 pages of material were cut. I've cranked up Tex and turned off the conditionals that removed that material, and the result is the Uncut version. Because we stopped writing this version in the middle and then polished only the remaining parts of it, the result is likely quite rough, and I know many references are left out. We had intended to produce a book based on the version here, but we never did. I hope you enjoy it even in this work-in-progress form.
In October 2008, Steele and I reprised the talk with gave at HOPL II, and for the proceedings, we took the material on language evolution and put it into a separate paper, "A Pattern of Language Evolution." This is the pdf of that paper.
In 1998, Ron Goldman and I were given the task of creating the Jini Community. We wanted to create a community that would self-organize in the manner of a chaord. We decided to write a pattern language which would enable members of the community to create Jini services, either by themselves or in conjunction with others. This is that pattern language.
This is a keynote address I gave on October 10, 2001 at the Product Development and Management Association Conference in Santa Clara, California.
This speaks for itself.
These two old papers are about my thesis system which achieved simple planning and writing tasks using a sort of self-organization.
At the 1984 Symposium on Lisp and Functional Programming, Rod Brooks and Gabriel broke rank and delivered the stunning opening paper, "A Critique of Common Lisp." This was all the more stunning because Gabriel and Brooks were founders of a company whose business plan was to become the premier Common Lisp company. Fahlman, on hearing the speech delivered by Gabriel, called it traitorous.
This paper was only the first in a string of critiques of Common Lisp, and many of those critiques quoted this paper. The high points of the paper reveal a series of problems that proved to plague Common Lisp throughout the decade.
This paper, written with Kent Pitman, talks about the issues surrounding a Lisp-1 versus a Lisp-2. In a Lisp-1, variables and functions share the same namespace, and in a Lisp-2, they don't.
Parallel Lisp research from the 1980s and early 1990s, wih John McCarthy and others.
Lucid's C/C++ Programming Environment and an editorial about Lucid's demise with my response.
An early (circa 1986) Junkyard Wars view of reuse - a little before "reuse" became a household word.
Wild Version [pdf]
Mild Version [pdf]
An early (circa 1986) essay on the limitations of computers.This was written as an editorial for the journal Lisp and Symbolic Computation (LASC) with Guy L. Steele Jr. for Volume 1, Numbers 3-4.
These are the slides for a talk I gave on March 11, 2002, at the Santa Fe Institute Business Network Topical Meeting: Whither Technology? An extended version ("The Road Not Taken") was presented as a Keynote at JAOO 2002.
Nickieben Bourbaki's response to John R. Searle's 1990 essay, "Is the Brain's Mind a Computer Program?"
I presented this keynote at XP/Agile Universe 2002 in Chicago, Illinois. The thrust of the talk is that it is possible to teach creative activities through an MFA process and to get better by practicing, but computer science and software engineering education on one hand and software practices on the other do not begin to match up to the discipline the arts demonstrate. Get to work.
These are some thoughts I had about pattern writing, which I presented as a special session at PLoP 2002.
We need to act more like teachers when we lead technical writers' workshops. These slides contain tips for workshop leaders.
I participated in a debate on the question "Objects Have Failed" at OOPSLA 2002 in Seattle, Washington. My teammate was Brian Foote, and our opponents were Guy L. Steele Jr. and James Noble. My opening remarks were scripted, as were Guy Steele's, and my rebuttals were drawn from an extensive set of notes.
My friend Leonard Zubkoff died in the Summer of 2002, and on March 29, 2003, a memorial was held for him. I wrote this for his memorial and read it there.
The Computer History Museum under the leadership of Grady Booch held a workshop from October 1617, 2003, on the topic of preserving historically interesting software source code and artifacts. This was my presentation.
NSF sponsored a workshop at Airlie House in Virginia from November 24, 2003, on the topic of "Science of Design: Software Intensive Systems." This was my presentation.
The Santa Fe Institute and Collegium Budapest held a workshop from Novermber 1619, 2003, in Budapest. I was invited to give a presentation, and prepared the one here, but when I got there I saw that my presentation was not appropriate, so I withdrew it.
I wrote this around 1993 as part of my duties at ParcPlace Systems, which was a SmallTalk company. In it I argued for dynamic languages, a debate that I lost.
In the late 1980s, a group of us designed CLOS, which became part of Common Lisp.
In April 2004, I attended a DARPA workshop on Self-Aware Systems. While there I led a breakout session on systems engineering, focused a bit on self-sustaining systems engineering. Here are my workshop position statement (pdf) and the presentation (pdf) I made reporting on the breakout session on systems engineering.
In Vancouver, October 2004, I ran a workshop on Art and Science, attended a workshop, and presented on 3 panels. These are the position papers and slides I used for them:
In 2003 I wrote a foreword for "Successful Lisp: How to Understand and Use Common Lisp," by David B. Lamkins. This is that foreword.
In 2005 I wrote a short response to an essay by Frederick Turner ("Creating a Culture of Gift"), both of which were published in Conversations on Philanthropy: An Interdisciplinary Series of Reflections and Research, Volume II, New Paradigms. This is that response.
This paper appeared in Onward! 2006. This is the version before it was submitted for publication.
This essay was written over Labor Day weekend in 2004 in response to an urgent request by the Lab director (of the Lab we were working for at the time) for Ron Goldman and me to write a "Labs whitepaper" on why governments should favor open source over proprietary software. The whitepaper was to be given to some California legislator staffers the following Wednesday. We were given no direction regarding the tone, style, or content, so we put together what we thought was a good argument in a light academic style. The paper was rejected by the Lab director and president of the company because it was not perky enoughthey preferred it to be in the style of a light and incisive blog entry. But, perhaps it contains some useful arguments.
In December of 2003 I was intervewied by a writer at Sun Microsystems for a piece that appeared on the Java web page. Over the years that interview has been popular. In fact, when it came out on the Java page, it quickly gathered the most hits (by far) of any interview to appear there. Now that I am no longer at Sun, I don't know how long they will keep it on the site, so I've moved it over here. Enjoy.
This is a position paper I wrote for an open source workshop at ICSE 2007. The abstract starts like this: "Suppose the entire social and commercial fabric supporting the creation of software is changingchanging by becoming completely a commons and thereby dropping dramatically in cost. How would the world change and how would we recognize the changes?"
This is a short paper I was invited to submit to a special issue of IEEE Software by the guest editors, but they decided to reject it. It's nothing special, but the editor-in-chief of IEEE Software told me she would consider it for one of their regular issues. I didn't take her up on it.
On November 16, 2007, I presented a talk on Design as my Wei Lun Public Lecture at the Chinese University of Hong Kong. This is a revised and reimagined transcript of that talk. I have given a similar talk to this several time since Spring 2006.
[Note: to make this file of managable size, I downsampled the slides quite a bit.]
"This paper describes the techniques used to develop the Lucid Portable Common Lisp compiler. The major focus of this paper is on the problems and techniques relating to the goals of producing a compiler which is retargetable and, at the same time, capable of producing highly tailored code for each target architecture. The compiler that resulted from this effort is not only retargetable, but dynamically retargetable in the sense that multiple target descriptions may reside in the same runtime environment, and the desired target is passed as an optional argument to the compiler."
I posted this paper because some researchers have written about similar approaches but seem not to know about this work. It was presented at the 1986 ACM Conference on Lisp and Functional Programming.
This is a paper Rod Brooks, Guy Steele, and I wrote for Lisp and Functional Programming conference in 1982, about S-1 Lisp.
Another paper by Rod Brooks, Guy Steele, and me on S-1 Lisp, for IJCAI 1983.
This little position paper was submitted to an NSF workshop on revising the undergraduate programming language curriculum. It was judged off topic, which is right, but I thought they wouldn't notice.
This paper was written in 1 day by 7 of us at ChiliPLoP in Carefree, Arizona, in the Winter of 2008. We came up with the idea for it on a Monday, wrote it beginning Tuesday afternoon, and submitted it just before the deadline for Onward! on Wednesday. It was rejected (not enough subtantiation and review of prior educational approaches etc - perhaps the committee wasn't sure what Onward! is about).
An essay on design and artand where creativity comes from.
This is a talk I gave at the Software Product Line Conference in August 2009. It is in two parts: the script and the slides. The slides PDF is 6.8mb.
In 1988 I was part of a DARPA study group looking at the idea of a Common Prototyping Language. The group included Robert Balzer, Frank Belz, Robert Dewar, David Fisher, John Guttag, Paul Hudak, and Mitchell Wand. We didn't agree on a prototyping language, but instead thought about a prototyping system. This is the group's final report. I was its editor.
In 1989 I worked on combining work on the Common Prototyping System with work on Qlisp for a workshop at OOPSLA 1989. This paper is what I wrote, and it's like the stuff in "The Design of Parallel Programming Languages."
I wrote a review of this book in 1993 for the journal Artificial Intelligence. This is that review.
An essay on how artists, engineers, and scientists perform their professions, arguing that they all use the same techniques.
An essay on how art can be made using flawed tools, and the beginning of the theory of why it works.
An essay on engineering intermixing with science, and an exploration of incommensurabilty in programming language research. An Onward! Essay.
I was sent what seemed to be a call for position papers for a Dagstuhl on publication culture being put on by someone at ACM to study the future of computer science publication. I believed that with my experience with journals and conferences, I would be a natural participant. I didn't realize the workshop was for a closed club and I was on the outside. This is the position paper I submittedit's a little braggy about my experiences.
This was the first paper I wrote. It was a lowly Vision Flash at the MIT AI Lab, but it convinced David Waltz to take me with him to the University of Illinois to start an AI Lab. This was the beginning of my career.
An essay on using programming to construct instruments to explore nature and pursue knowledge. This is about programming to discover and understand, not to create something of economic value. An example is the InkWell project, which is to understand how to write in a writerly way.