Seibel: You mentioned that you left industry for a while and then you cameback. Were you tired of computers or was it just other things in life?
Ingalls: It was other things in my life. It was also a nice break, and I picked agood time for it, because when I came back, it didn’t seem to me like thingshad changed that much, except everything was a hundred times faster.
Seibel: Do you have any recommendations for people who want to beprogrammers?
Ingalls: Well, I think a decent course in computer science should be good.The way I would organize that is to learn several different languages thathave various different strengths. Smalltalk’s got a lot of strengths but it’s notthe answer to everything. There’s logic programming. There’s functionalprogramming. Actually, you can do Smalltalk in a functional style, and sothat’s covered there pretty much. But like what I said about Lotus 1-2-3 andtranslating English to pig Latin, I think it’s worth it to take several differentcomputing environments and then pick a problem to solve in them, whicheither reveals the strength of the language or encourages you to somehowescape from it.
Seibel: Do you think programming—and therefore the kind of people whocan succeed as programmers—has changed? Can you be a greatprogrammer operating at a certain high level without ever learningassembly, or C, and maybe without ever learning the algorithms you wouldget from reading Knuth, because these days you’re using some high-levellanguage that includes a lot of those algorithms in libraries?
Ingalls: Different people have different levels that they need to go to to feelgood about what they’re working with. So I think somebody can be entirelyconfident maybe using a collections library without having programmed itthemselves. It just means they’re operating at another level. Lord knows, Iwouldn’t expect anybody who intends to work with graphics to have had towrite BitBlt. You don’t have to do NAND gates; you can use assemblylanguage. I think you can work at any of these levels. If the challenge calls onyou for it, you’re going to have to go deeper, and if your interest is sparked,you will want to go deeper.
Seibel: So do you think most programmers today, who may be working ata fairly high level, in a different environment would have learned assemblyand microcode? Or do you think the kind of talents that people need to besuccessful programmers are changing?
Ingalls: Yes and no. It is in a way the same up and down at any level andhopefully it will come to appear even more so. But there are areas rightnow where I think there’s more putting together according to formula andother areas where there’s dealing with things that are much more primitive.
I was a physicist; I had mathematician friends and I did not feel like I was atall the same kind of brain as they were. But we both did good things. I thinkthat’s going to be the case in computers, too. The people who are workingon program provers are different from the people who are working ongraphics systems, I think. And so people are going to find their strengths andthe place they want to work and the place that they’re not comfortableworking. I think there’s some nature as well as nurture going on here, andthere always will be.
It may be that some of these systems have enough levels and parts to themthat a given person may be mainly comfortable and productive working inone kind of area rather than another, but I think it’s all the same stuff.There’s logical thought and there’s structural thought. And there’s humanstuff and creativity. A given person has a given mix of that from their natureand their nurture, and to me, it hasn’t changed much. People are trying todo presumably bigger, better stuff, but it seems to me to still be prettymuch the same.
Seibel: Related to that, as more and more fields rely on computing in moreand more ad hoc ways, there are folks who want to find a way for“nonprogrammers” to program. Do you think that’ll happen, or will domainexperts, say biologists, always have to team up with programmers to buildcustom software to solve their problems?
Ingalls: I think there will be that kind of collaboration because the biologistisn’t interested in programming it. He’s interested in finding out this or that.Then there’s somebody who understands how this stuff is being worked onon the computers who can help him do that. I think the thing that lets anonprogrammer program is an application.
Seibel: I worked on a project that tried to provide a programmingenvironment for biologists on the theory that the software they would needwould always be ad hoc. You couldn’t build an application and be done withit because the biologists didn’t really know what they needed until they gotdown to some piece of biological data and said, “What I really want toknow is X,” and the only way to extract X from that data was, essentially,to write a program.
Ingalls: Yeah, it would be nice if we could have some computingenvironment with all your information in it so you could somehow figureout how to get to it all just by its self-revealing nature. But I think that thereare people who are going to be interested in that and people who aren’t.
Seibel: Is there anything I haven’t asked about that you thought I might?
Ingalls: Often, reading about famous people, the side of it that I’minterested in is, how do they make their life work? All the things thatweren’t their passion, and how did they deal with that, and with their family,and with their finances, and balancing that. Or did they just hole up and say,“To hell with everything else,” and let it just come crumbling down untilthey had their work done?
Seibel: Do you feel like there were times in your life where your passionfor programming ran amok to the detriment of other parts of your life?
Ingalls: Yeah, there are times when it’s been hard on others because I’mfocused and need to stay focused. It’s a risk with anybody who’s got apassion for what they’re doing. I think either you learn to moderate itsomewhat or the other thing you do is communicate it so that everybodyaround you knows that you’re dealing with this thing, and you’ll probably bedone in a week, but until then Daddy’s somewhat inaccessible.
Seibel: And then you win your “Dad the Determined Debugger” award.
Ingalls: Exactly; right. The other thing is, the more you can reflect thesatisfaction from progress back out to all the people who have dealt withyou during that time, at least they have a sense that Daddy’s doingsomething good, and we’ll all be happy when it’s done.
L Peter Deutsch
A prodigy, L Peter Deutsch started programming in the late ’50s, at age 11, whenhis father brought home a memo about the programming of design calculationsfor the Cambridge Electron Accelerator at Harvard. He was soon hanging out atMIT, implementing Lisp on a PDP-1, and hacking on and improving code writtenby MIT hackers nearly twice his age.
As a sophomore at UC Berkeley, he got involved with Project Genie, one of the firstminicomputer-based timesharing systems, writing most of the operating system’skernel. (Ken Thompson, inventor of Unix and the subject of Chapter 12, wouldalso work on the project while a grad student at Berkeley, influencing his laterwork on Unix.) After participating in a failed attempt to commercialize the ProjectGenie system, Deutsch moved to Xerox PARC, where he worked on the Interlispsystem and on the Smalltalk virtual machine, helping to invent the technique ofjust-in-time compilation.
He served as Chief Scientist at the PARC spin-off, ParcPlace, and was a Fellow atSun Microsystems, where he put to paper the now famous “Seven Fallacies ofDistributed Computing.” He is also the author of Ghostscript, the Postscript viewer.In 1992, he was part of the group that received the Association for ComputingMachinery Software System Award, for their work on Interlisp, and in 1994 hewas elected a Fellow of the ACM.