Jeff Shrager's Road to Lisp

Jeff Shrager's responses to The Road to Lisp Survey: "I would leave computing before I would leave Lisp."

What was your Road to Lisp?

I came to Lisp sometime around 1974. In high school I translated Eliza into BASIC. [In 1977 my translation was published in an early volume of Creative Computing Magazine, and reprinted in More Basic Computer Games in 1979]. My translation was, shall we say, "conceptual"; I had the Lisp code in hand, and I think that I vaguely understood it. I probably got it from Steve Smoliar, but I’m getting ahead of myself...

What led me to Eliza was a fascination with AI. As a child I had had a book called something like the "How and Why Book of Computers and Robots"; I used to build (non-working) model robots, and watched "Astro Boy" and "8th Man", Japanese Animes about robots, on TV.

In junior high (~1972) I somehow found my way to the school district's administrative IBM 1130 where I wrote my first AI program (in Fortran!), called "LOGIX". It was a (sort of) natural language interpreter and (sort of) theorem prover: You’d enter statements like: "All men are mortal" and "Socrates is a man", and LOGIX would (sort of) compute the (sort of) consequents and report them back in (sort of) natural language. I recall realizing that I could chain together the results (basically creating an inference engine, even though I had no idea that such a concept existed!) but I didn't implement that part.

Shortly after that (~1973) a friend and I wrote an interpreter (in Fortran!) for a programming language of our own design called MIMIC (the Machine Independent Mathematic Instructional Code), which was similar to BASIC. The key feature of MIMIC was that it was interpreted and interactive (via the 1130 keyboard). The interpreter was thousands of punch-cards (filling several of those old punch-card boxes), and had to be hand-loaded into the 1130, which defeated the convenience angle; I’m sure this is why MIMIC didn’t catch on! :-)

The part of the MIMIC interpreter that I remember the best was the arithmetic expression parser which I worked on for a long time. It worked by an algorithm of my own design that used a stack. I remember thinking that it was the most elegant thing I’d ever written (maybe still is!) At the time I didn't have a name for my lovely algorithm. The name, of course, is "recursive symbolic algebra"!

In the summer between my last year of high school and my first year of college (or maybe it was the summer before that) I worked at the University of Pennsylvania computer science dept. doing the most boring thing I can remember ever doing in my life: tinning the ends of RS232 cabling for a campus-wide network. (This was the early days of the ARPANet, and Wharton, on Penn campus, was one of the early nodes.) This took place across the hall from the remaining parts of the ENIAC, which was cool; but more importantly I got to take a Penn class. By then I was already hooked on computers, and given my interest in AI, I took Steve Smoliar's Lisp programming course, which probably had "AI" in the abstract or something.

Lisp owned me almost immediately! (Or perhaps it was Smoliar, who is in his heart of hearts a musician even more than a computer scientist.) Smoliar wasn’t teaching how to program, he was teaching how to understand domains like music, poetry and science -- even Dance! -- through programming (in Lisp!) It was clear that Lisp was fun for him, and he made it fun for me. The interactivity and recursive symbolic computing were what I was looking for in MIMIC. But more importantly, programming came to be for me (through Smoliar) more than a way of making computers jump through hoops; it became a way of making thought formal and casting it into the machine, just as algebraic notation is a way of making mathematical intuitions formal and casting them into the machinery of algebra. I can almost remember everything coming together for me in a flash sometime in, or shortly after that course: This was what I was searching for when I wrote LOGIX -- which could, of course, have been coded in just a few lines of Lisp! -- and this is what I was searching for when I wrote MIMIC and its stack-based arithmetic analyzer. I was hooked, and have never enjoyed anything in computing nearly so much as Lisp!


Which Lisp did you start on?

Well, the Eliza must have been Lisp 1.5, I’d guess. But the first one I programmed (as opposed to reading) was a dialect out of UDel or UMaryland that ran on the Univac 90x (an IBM 360 clone). Since then I’ve used pretty much every Lisp there is: PLisp (Apple II Lisp, see below), InterLisp, Scheme, MacLisp on Tens, Twens, Vaxen, CADRs, and D-Machines. And of course these days ACL and LispWorks on Windows and Linux boxes.


If you were trying Lisp out of unhappiness with another language, what was it and what did you not like about it, or what about Lisp were you hoping to find different?

I like most of the classical and neo-classical programming languages (Fortran, C, Assembly, even PL/1. I even like Java ... a little anyhow!) I used to teach IBM 360 assembler and APL and loved both! The only languages that I dislike are ones that look like someone pulled them out of their ass, like Tcl and Perl.

The only thing that I have ever been unhappy with about Lisp was that before the mid 80s there was no standard. In the early 80s I posted a flame on Bug-LispM proposing standardization, and was roundly trashed by The Community. This was, one notes, JUST BEFORE they got smart and (under duress!) did a standard, and thank god for that! (And thank god for macros which let you naturally go beyond the standard!)


How far have you gotten in your study of Lisp?

I've written a great deal of software in my time: ranging from lots of various AI to signal processing to statistics to robotics to web gizmos to genome assembly to biocomputing platforms. I've almost never had to use anything but Lisp except in very rare cases where I had to do something way down in the machine; and then I always tried to use Lisp to do the high level control, or cross-compiled from Lisp down to whatever.

As seniors at Penn (~1980), Steve Bagley and I wrote an intro book called "Learning Lisp". Our classmate, Steve Cherry, wrote an Apple II dialect of Lisp called PLisp, and another friend, Stewart Schiffman, formed a little company called Gnosis to sell it. (Some RtLers started on PLisp! I wrote the PLisp code editor (in PLisp, of course); it’s an appendix in the book as well! I don’t know if I should be proud or embarrassed about this?) The book got translated to PLisp and someone (Cherry or Schiffman) managed to get Prentice Hall to publish it! The book is now online [here]. [[I do not recommend it as a useful Lisp text, after all it’s ways out of date and was written by undergrads!]] (Funny story: One of my cousins was working in a computer book store in Paris and came across a book called "Apprendre Lisp" -- which turned out to be our book translated into French!)


What do you think of Lisp so far?

Lisp is a helicopter!

I fly pretty much anything that doesn’t have a jet engine: gliders, tail draggers, trikes, IFR multi/land/sea, aerobatics, even helicopters! Most “normal” planes are just boxes with lawnmowers bolted to the front and a couple of wings stuck on the sides; they’re there to get you there when you need to go, but are hardly elegant at it: There’s a set of things you do to get them to go, and when you do these, they go.

But helicopters and gliders are different; you and the craft are a single unit, and you don’t so much do anything as think it, and the craft responds because it’s a part of you! Flying gliders and helis is a Zen activity, and Lisp is the same: You don't program Lisp so much as think it in the direction you want to go. Airplanes can carry more, and fly faster and farther, but when you need a helicopter you really need a helicopter! And even though they may seem hard to learn to fly, there's just no way that you can do what you need to do with anything but a helicopter! The only thing in flying more sensuous (at least in flying) than "heli-dancing" (i.e., play-hovering) is soaring! Nothing in computing is more sensuous than Lisp!

Flying helicopters is being a dragonfly; Flying gliders is being a hawk; Programming Lisp is being the problem. I would leave computing before I would leave Lisp.


Switch Date 1970s


RtL AI


This page is linked from:

RtL Highlight Film

Other pages sharing this page's categories:

Abhijit Rao Albert Krewinkel's Road to Lisp Alejandro Guillen Road to LISP Alexander Lehmann's Road to Lisp AlexPeake AlexTibbles Andrew Jones-Gonzales's Road to Lisp Andrew Main's Road to Lisp Andrew Philpot's Road to Lisp Artie Gold's Road to LISP Arto Bendiken's Road to Lisp August Sigov's Road to Lisp Ben Holm's Road to Lisp Bill Birch's Road to Lisp Bob Bane's Road to Lisp Bob Bechtel BobHutchison Brad Beveridge - Road to Lisp Bradford W Miller BradMight Brandon Corfman Brendan Van Horn Brian Mastenbrook - Road to Lisp Brian T. Rice Bruce Durling's Road to Lisp Bruce Woodward's Road to Lisp Bulent Murtezaoglu C E C Artime Charlie McMackin Chris Laux's Road to Lisp Chris Smith's Road to Lisp Chris Sonnack's Road to Lisp Chris Van Dusen Chris-Perkins Christian Lynbechs Road to Lisp Christian Nybø Coby Beck Conrad Barski Constantine Vetoshev Damien Sullivan's Road to Lisp Dan Muller Daniel Barlow's Road to Lisp Daniel Pezely's Road to Lisp DARose Dave Fayram's Road to Lisp Dave Pearson Dave Roberts David Douthitt David Golden's Road to Lisp David Mercer David Rush David Thompson's Road to Lisp Denes Cselovszky's Road to Lisp Dirk Gerrits's Road to Lisp DJ Clark's Road to Lisp Donald Fisk's Road to Lisp Donnie Cameron's Road to Lisp Doug Tolton's Road to LIsp Drew Crampsie Drew McDermott Duane Rettig's Road To Lisp Edi Weitz' Road to Lisp Eduardo Muñoz Emre Sevinc Erann Gat's Road to Lisp Eric Hanchrow Erik Enge's Road to Lisp Erik Winkels's Road to Lisp Espen Vestre's Road to Lisp Gabor Melis's Road to Lisp Gareth McCaughan's Road to Lisp Gary King's Road to Lisp Gary Klimowicz's Road to Lisp Geoff Wozniak's Road to Lisp GeoffCant GeoffKnauth George Rogers Road to Lisp Glenn Ehrlich Glenn Ehrlich Road to Lisp Gordon Weakliem Heow's Road to Lisp Hoan Ton-That's Road to Lisp Ivan Toshkov's Road To Lisp Jacek Generowicz James Fleming's Road to Lisp Jimmy Miller's Road to Lisp Jochen Schmidt's Road to Lisp Jock Cooper Joel Ray Holveck John Pallister's road to Lisp John Sturdy John Williams JP Massar Justin Dubs Justin Heyes-Jones's Road To Lisp Kamen Tomov Karl K.'s Road to Lisp Kean Lau's Road to Lisp Kenny Tilton's Road to Lisp KevinZzz Larry Clapp's Road to Lisp Lars Brinkhoff's Road to Lisp Lars Wirzenius Lasse Rasinen Lennart Staflin Louis Theran Mackram Raydan's Road to Lisp Marc Mertens's Road to Lisp Marco Baringer's Road to Lisp Mark Hurd Mark Triggs Mark Wilson MarkBrady Marko Kocic Martin Mikelsons Matthias Benkard's Road to Lisp MattKnox Michael J Forster Michael Naunton's Road to Lisp Mikael Jansson's Road to Lisp Mike Travers Mikel Evins' Road to Lisp Mostafa Razavi's Road to Lisp Myron Wu's Road to LISP Nathan Bloomfield's Road to Lisp Naveen Garg Nick Levine Nicolas Sceaux's Road to Lisp Nikodemus Siivola'a Road to Lisp Nonya B's Road to Lisp Ola Rinta-Koski Ora Lassila's Road to Lisp Pascal Costanza's Road To Lisp Patrick Logan Paul Clevett Paul Foleys Road To Lisp Paul Graham's Road to Lisp Paul Potts Paul Snively PaulKhuong's Road To Lisp Pekka P Pirinen Pete Kirkham Peter Housel's Road to Lisp Peter Lewerin's Road to Lisp Peter Santoro Peter Seibel's Road to Lisp Peter Van Eynde's Road to Lisp Pierre Thierry's Road to Lisp Rainer Joswig's Road to Lisp Ralph Richard Cook Randall Randall's Road to Lisp Reini Urban Robbie Sedgewick's Road to Lisp Robert Marlow Robin Felix's Road to Lisp Robin Kåveland Hansen's Road to Lisp RtL Brian Cully RtL Russell Snow RtLMartinGinkel Sanjay Pande Scott L Burson's Road to Lisp Scott McIntire Scott Michel's Road to Lisp Sean Champ Sebastian Stern's Road to Lisp SimonHeath Sivaram N Slobodan Stephane Belmon's Road To Lisp Steven Harris' Road to Lisp Tage Stabell-Kulø Tayssir John Gabbour's Road to Lisp The Road Jeff Caldwell Took The Road to Lisp Questions Thomas F Burdick's Road to Lisp Thomas M. Hermann's Road to Lisp Thomas Müller Thomas Munro's Road to Lisp Thomas Stenhaug's Road to Lisp Tim Kerchmar TimHaynes Toby Davies' Road to Lisp Tomer Altman tony yelacic VikasGP Vladimir Sedach William Maddox Yuri Niyazov Zach Beane's Road to Lisp Zachery Bir