Guy Steele
Guy Steele is a true programming polyglot. When I asked him what languages hehas used seriously he came up with this list: COBOL, Fortran, IBM 1130 assembly,PDP-10 machine language, APL, C, C++, Bliss, GNAL, Common Lisp, Scheme,Maclisp, S-1 Lisp, *Lisp, C*, Java, JavaScript, Tcl, Haskell, FOCAL, BASIC, TECO,and TeX. “Those would be the main ones, I guess,” he added.
He had a hand in the creation of both of the major surviving general-purpose Lispdialects: Common Lisp and Scheme. He served on the standards bodies thatdefined Common Lisp, Fortran, C, ECMAScript, and Scheme and was recruited byBill Joy to help write the official language specification for Java. He is now at workdesigning Fortress, a new language for high-performance scientific computing.
Steele’s academic career included an AB from Harvard and an SM and PhD fromMIT. While at MIT he collaborated with Gerald Sussman on a series of papersnow known as “The Lambda Papers,” which included the original definition of theScheme programming language. He has also been a chronicler of hacker cultureas one of the original compilers of the Jargon File and editor of the book version,The Hacker’s Dictionary (subsequently updated and expanded by Eric S. Raymondas The New Hacker’s Dictionary). And he played an important role in the birth ofEmacs and was one of the first programmers to port Donald Knuth’s programTeX.
Steele is a Fellow of the Association for Computing Machinery and the AmericanAcademy of Arts and Sciences and a member of the U.S. National Academy ofEngineering. He won the ACM’s Grace Murray Hopper Award in 1988 and Dr.Dobb’s Excellence in Programming Award in 2005.
In this interview he talks about designing software and the relation between writingand programming, and he gives one of the best explanations I’ve ever heard of thevalue—and limitations—of formal proofs of correctness.
Seibel: How did you get involved in programming?
Steele: Well, when I was in elementary school I remember being fascinated byscience and math and I read books such as Irving Adler’s House of Numbers; itwas one of my favorites. And I liked kiddie science fiction like, say, the DannyDunn series and that kind of thing. So I had this general interest in science andmath. In reading everything I could about science and math, I read a little bitabout these newfangled computers that were coming up as well.
Seibel: And when would that have been?
Steele: I was in elementary school from 1960 through ’66. But I think thereal turning point was when I got to Boston Latin School—it would havebeen in the equivalent of the ninth grade. A friend asked me, “Have youheard about the new computer in the basement?” I thought this was thenewest story after the one about the fourth-floor swimming pool and theschool only has three stories. But he said, “No really, it exists.”
It turns out that T. Vincent Learson had arranged for an IBM 1130minicomputer to be in the basement of the Boston Latin School. He was analum and a very generous one apparently. My friend proceeded to show mea Fortran program of about five lines and I was immediately fascinated.
Then I went to one of our math teachers and asked if I could have somebooks to study. He gave me some books and thought they’d keep me busyfor a month but they actually lasted a weekend. I taught myself Fortran overThanksgiving weekend—so it was a long weekend—of 1968. After that Iwas completely hooked.
My Latin School friends and I had a fascination with IBM because of the IBM1130 and we took to visiting the IBM office downtown every couple ofmonths and talking with the people there and occasionally orderingpublications with what little money we had.
There was also a bookstore downtown that had books about exoticlanguages like PL/I, and we’d occasionally buy books there. So, through LatinSchool we got to know IBM equipment. We just had the 1130 but wedrooled over System 360. We read about it and didn’t really have access toone.
Then I became involved at MIT in the spring of 1969 in the High SchoolStudies Program. This was great—go on Saturday mornings and have collegestudents teach you all this cool stuff. I took courses in group theory andcomputer programming and I forget what all else. I became rather heavilyinvolved and therefore got to feel on very familiar turf at MIT. Through theHigh School Studies Program, we had access to both IBM 1130s and DECPDP-10s. So that’s how we got to know the Digital Equipment line.
As high-school students we became aware of the DEC office in CentralSquare that tended to cater to the MIT students. They didn’t blink whenhigh-school students walked in and asked for reference manuals. It wasgreat. When I was a junior or senior at Latin School, a friend of mine and Ityped up a proposal to DEC to implement an APL for the PDP-8. And theytook the proposal seriously. They looked at it for a week and then theysaid, “Well, we don’t think this is a good idea, but thanks for the offer.”
Seibel: What was the first interesting program you wrote?
Steele: Well, I learned Fortran first so I think things really got interestingwhen I started to learn IBM 1130 assembly language. And I guess the earliestinteresting program I can remember was something that would generatekeyword-in-context indexes. IBM provided these so-called quick indexes fortheir manuals that, given a keyword, you could look it up in the index and itwas alphabetized according to keyword but on either side of the keywordyou would see several other words of context surrounding that word.
Seibel: Context from where the word appeared?
Steele: Where the word had appeared in the original publication. So downthe middle column were the words that had been alphabetized and stickingout on either side would be chunks of context. So I thought I’d tackle thatproblem, doing it on the 1130. And considering that the 1130 had only4,000 words of memory, it was clear that I was going to have to keep therecords on disk. So I took this opportunity to learn about efficient out-of-coresorting techniques. What was interesting about this program was notso much the generation of the KWIC index but implementing a multiwayout-of-core merge sort. And it was reasonably effective. Unfortunately myin-core sort was bubble sort because I wasn’t that sophisticated. I shouldhave also done a merge sort in core but I hadn’t quite figured that out at thetime.
Seibel: How long do you think it was from when you first realized therereally was a computer in the basement to when you were writing thisprogram? Was it months? Weeks?
Steele: It would have been within the first two years. I don’t rememberwhether it was in the first year. I learned Fortran in the fall of ’68. And Iremember that APL was my third language so I must have learned theassembly language somewhere around Christmastime or shortly after. Iknow I learned APL in the spring of ’69 because that’s when the Spring JointComputer Conference came to Boston.
IBM had an exhibit on the show floor touting all manner of IBM productsbut the APL 360 in particular, and I hung around that booth. At the end ofthe trade show they were about to throw the stack of paper away that hadbeen used for demos on the Selectric terminal. At just the right moment Iwalked up and asked, “Are you going to throw that away?” And the ladylooked at me, puzzled, and said, “Here, it’s yours,” as if she was giving methis big Christmas present. Which she was.
Seibel: What was on that paper?
Steele: It was fan-fold paper from a Selectric terminal on which they hadbeen demonstrating APL for the past two days. Just little programmingexamples of whatever they had happened to type in. And from that and thebrochure they had on the trade-show floor, I taught myself APL.