History of T

tosh1 pts0 comments

History of T -->

(T was one of the best Lisp implementations, and set a standard for clean design<br>that few newer dialects have been able to meet. Here Olin Shivers recounts T's<br>history.)

Around 1981-1982, the Yale CS dept., which had a strong AI group led by Roger<br>Schank, hired undergraduate<br>Jonathan Rees<br>to implement a new Lisp for their<br>research programming. Jonathan, I and Dan Weld (now a prof. at U Washington)<br>were the three people at Yale that had discovered the early Sussman/Steele<br>"lambda" papers, including Guy's seminal master's thesis on Rabbit, the first<br>Scheme compiler. Dan was a college senior; Jonathan & I were juniors. Alan<br>Perlis, the soul of the department, had just discovered functional<br>programming, and was running a graduate seminar covering early FP languages<br>such as Hope & Miranda & Scheme. The three of us managed to sleaze our way<br>into this grad class, where we met each other.

Some context: Common Lisp did not exist (the effort was just getting<br>underway). MIT Scheme did not exist. Scheme was a couple of AI Lab tech<br>reports and a master's thesis. We're talking the tiniest seed crystal<br>imaginable, here. There was immense experience in the Lisp community on<br>optimising compiled implementations of dynamically-scoped languages — this,<br>to such an extent, that it was a widely held opinion at the time that "lexical<br>scope is interesting, theoretically, but it's inefficient to implement;<br>dynamic scope is the fast choice." I'm not kidding. To name two examples, I<br>heard this, on different occasions, from Richard Stallman (designer &<br>implementor of Emacs Lisp) and Richard Fateman (prof. at Berkeley, and the<br>principal force behind Franz Lisp, undoubtedly the most important Lisp<br>implementation built in the early Vax era — important because it was<br>delivered and it worked). I asked RMS when he was implementing Emacs Lisp why<br>it was dynamically scoped and his exact reply was that lexical scope was too<br>inefficient. So my point here is that even to people who were experts in the<br>area of Lisp implementation, in 1982 (and for years afterward, actually),<br>Scheme was a radical, not-at-all-accepted notion. And outside the Lisp/AI<br>community... well, languages with GC were definitely not acceptable. (Contrast<br>with the perl & Java era in which we live. It is no exaggeration, thanks to<br>perl, to say in 2001 that billions of dollars of services have been rolled<br>out to the world on top of GC'd languages.)

Jonathan had spent the previous year on leave from Yale working at MIT. The<br>important thing that was happening was that 32-bit machines were coming out,<br>with 32-bit address spaces — big address spaces. A lot of the existing<br>language technology in the AI community had been developed for the PDP-11<br>(16-bit machine) and, more importantly, the workhorse PDP-10 and -20. I loved<br>the "ten," may I add. It had an instruction set that fit onto a single page of<br>large type, and was just cool. That ISA was a hacker's dream; you could play<br>all kinds of fun games with it. For example, there was a famous hack that<br>provided a means of (1) removing a cons cell from a freelist, (2) updating the<br>freelist, and (3) branching if the freelist was exhausted to the GC... in one<br>instruction. The PDP-10 was a 36-bit machine, with an 18-bit word-addressed<br>address space. Note what this means: a cons cell fit into a single word. There<br>are many who claim that the -10 was the world's first Lisp machine. I agree<br>with them.

There were two extremely good, mature, highly optimised Lisp implementations<br>for the -10, one "East Coast" (Maclisp, from MIT) and one "West coast"<br>(Interlisp, from Stanford & Xerox PARC). You could also program the -10 in<br>a beautiful, roughly-C-level language from CMU, called Bliss. I see C and I<br>remember Bliss, and I could weep.

The problem was the limited, 18-bit address spaces of the -10's. Programmers<br>were blowing them out. When DEC shipped the Vax & Motorola 68000s began to<br>show up in Sun & Apollo workstations, people realised that the 32-bit address<br>space of these architectures was a discontinuous shift in technology, and that<br>language implementation on these machines was going to be similarly<br>discontinuous. For example, with a really big address space, you wanted to<br>fundamentally change your GC technology and data representations.

Berkeley was a big player making the Vax happen in universities, by getting<br>the ARPA contract to build Berkeley Unix for the Vax (which effort<br>subsequently spun off into Sun, courtesy Bill Joy). Part of this effort was a<br>Lisp for the Vax, Franz Lisp, built under Fateman's guidance. Franz was a<br>design more in the vein of Maclisp than Interlisp, enough so as to allow the<br>porting of Macsyma (Fateman's interest) to the Vax. Franz also showed<br>fundamental influences from a little-known Lisp done at Harvard.

MIT responded to the Vax by kicking off the NIL project. NIL stood for "New<br>Implementation of Lisp." Jonathan was part of this project during his year<br>away from Yale. It was a really, really...

lisp from address jonathan scheme yale

Related Articles