Qlisp

In the 1980s, I started working with John McCarthy on a language we called Qlambda. It was a parallel dialect of Lisp that worked off the observation that finding parallelism in Lisp programs would be easy, but controlling excessive parallelism would be hard. We took it as a language design problem. Later, I had a DARPA/ARPA-suported project to implement the parallel constructs in the context of Common Lisp - and we renamed the language Qlisp.

My research group quickly realized that expressing parallel programs was not easy without a radical change in how expressiveness was approached, but the world little noted nor remembers.

Queue-based Multiprocessing Lisp [pdf]: This is the original paper done at Stanford with John McCarthy. While working on Qlambda, I had a brief collaboration (noted in the paper) with Jeff Ullman. He had just come to Stanford from Princeton, and we both had offices on the same floor in Magaret Jacks Hall. We started exchanging email about Qlambda and would spend hours a day doing it. There was a coffee and snack room (with the famous Prancing Pony from SAIL days) on the same floor. We would periodically and coincidentally go there at the same time to get coffee or snacks in the midst of a heated email discussion. Never did Jeff say hello or otherwise acknowledge me when we met there, but after getting our snacks, he and I would resume the heated email discussion. Such are computer scientists.

Qlisp [pdf] was a more complete specification of Qlisp along with some additional ideas for expressing parallel computation. Note that in this paper I coined the term "software pipelining" to mean a particular way to express in code a pipeline-like parallel structure. This led to a generalization to geometry-based control structures that would help programmers write understandable but high-performance code. Jeannette Wing at CMU slightly after this work coined the term to mean a technique for compilers to take advantage of the pipelined architecture of CPUs. I still think my usage more appealing. I think my colleagues and I intended this paper to be the core of a book on Qlisp, but interest in Lisp passed us by.

Qlisp: Parallel Processing in Lisp [pdf]: This is a paper written by Ron Goldman and myself about the theoretical and implementation work we did on Qlisp. You can see that the language took on a more practical look after we faced the rigors of Common Lisp. Also, we started to implement some of the more exotic constructs talked about in The Design of Parallel Programming Languages.