Seibel: Was the domain of speech recognition not that interesting or was itsomething about the programming involved?

Ingalls: Oh, it was interesting—it was fascinating. I ended up building up awhole personal-computing environment on this Sigma 3 minicomputer. Itused card decks and Fortran was the main thing I had to work with. Out ofthat I built an interactive environment. I wrote a text editor in Fortran andthen something so we could start submitting stuff remotely from a terminal.It wound up being a nice little computing environment, just done in this sortof strange way.

Seibel: This desire for an interactive environment is a theme that’s comeup a bunch of times in your career. For example, you wrote the firstSmalltalk in BASIC because that was the interactive environment you had athand. Where did you get that idea that given a problem to solve, the firstthing you need is an interactive programming environment?

Ingalls: That’s a good question. I think anything where you get immediategratification feeds on itself by definition.

Seibel: So what was that first place that you had that immediategratification?

Ingalls: There were a couple of experiences. I had a chance to work with asemi-interactive PL/I. And a friend of mine was working at an IBM wherethey had an interactive APL environment. I can’t remember which of thosewas first. I really remember the APL one. That affected me in a number ofways because of both the immediacy of interaction—seeing your resultscome back—and the expression evaluation, which is really different fromFortran’s statement-oriented programming.

You still see that now, it’s amazing—the whole C/C++/Java tradition,although it goes in an object-oriented direction, is still statement-oriented.But if it’s convenient to make expressions, it really makes the experiencedifferent. To me it brings the mathematics to life more. Anyway, it was oneof those two. When I got to Xerox there wasn’t much interactive exceptthe Lisp guys’ stuff. I happened not to be into Lisp. Things would have beendifferent if I were, I expect.

Seibel: How so?

Ingalls: I think I would have gone completely in that direction. And by nothaving gone in that direction, it left me wanting to do that kind of thing in adifferent way. I think what I worked on with Alan had that same kind ofnice, lively, expression feel, but it included the notion of objects andmessages more naturally.

I think if I had been as comfortable in a system like Lisp, I never would havebothered. I would have tried working around it to get objects, but startingwith the notions of objects from the get-go and then making that nice andinteractive and convenient was, I think, a contribution.

Seibel: Alan Kay has said that both Lisp and Smalltalk have the problemthat they’re so good they eat their children. If you had known Lisp, thenSmalltalk would have been the first eaten child.

Ingalls: Maybe so.

Seibel: So that’s a nice example of the advantage of some ignorance; itleaves some room for creativity. But sometimes it feels like ignorance isendemic in this industry—that people are unaware of things and wheels areconstantly being reinvented with pointy corners.

Ingalls: That’s true.

Seibel: Should we be trying to fix that? Is it just a price that we have to payso that people can have room for creativity? Or would we be better off ifpeople were a little more aware of what else is going on?

Ingalls: I’m an embrace-diversity guy. The example we just went through, Ithink, says, “No, let people go whatever way they want.” There will bewaste from ignorance, but natural selection will take care of straighteningthings out. And you will get these occasional sports that take you into thefuture.

I can think of lots of areas where trying to standardize, trying to all go inone direction, has suppressed creativity. I work at a company that’ssupported by Java, so I’m not going to go very far with this, but it is the casethat when Java came out—the easiest way I had of measuring it was lookingat what went on at OOPSLA—when Java came out not only did work slowdown and even maybe come to a halt on other object-orientedprogramming languages but even in dynamic programming in general. I thinkthat was a loss.

But it wasn’t permanent. People finally realized “Oh, wait a minute, Java hasall these great strengths and we’re using it for this and that but we were onto other good things with dynamic programming languages and it’s time toget back to that.” But that’s an example that’s easy for me to see becauseI’m involved in it.

In a much bigger sense I hate to see computer-science departments that feeltheir role is to prepare people to work in an industry and the industry isgoing that way and therefore we have to teach our students that way. It’sexactly the wrong thing to do. What you should be doing with yourstudents is teaching them to think generally—think outside the box and plotthe other courses we should be pursuing.

It’s not a simple problem because there is great value to having that wholestandard out there. Having thousands of programmers who have worked onthousands of routines and they’re very solid—you can get your work donethat way.

It’s a little bit the difference between computer science in the service ofproduction and computer science in the service of moving the intellectualcontent forward. I’ve been having fun with the Lively Kernel, which is, in away, trivial. There’s nothing new about it—I’m using all stuff that was therebefore. It’s built on JavaScript and the graphics you can get in a browser. Butit’s been really fun because it’s another kernel like Squeak. BecauseJavaScript is all there in the browser and the graphics is all there in thebrowser, the work on the kernel is very tiny. It’s just, how do you bring thegraphics to life and how do you build up a little computing environment.

Whenever you do something like that, small enough, then anybody canunderstand it. If you take a few things out of the equation, like the languageand the graphics, then the question is, what is the kernel? And I think that’san interesting question.

I’m hoping that this—not particularly my stuff—but this kind of investigationmight reinspire computer science to do some studies about how do youmake a kernel, what other kernels could we build that are even simpler,even more uniform.

It’s like what math did. Math found by symbolizing things that you couldsimplify a lot of stuff. Then, because of that, you could start to think aboutbigger constructs. That’s my hope.

Seibel: When you say a kernel, you’re talking about a programming kernel.What’s the core of the Lively Kernel?

Ingalls: What I mean by a kernel, typically, is you put together enough stuffthat it can, in some sense, build itself or build other useful things. Squeak isone that really can build itself. The Lively Kernel presumes the existence ofJavaScript and some graphics, but it ends up with the ability to edit thegraphics so that you can make new graphical things and to edit the programsso you can make new programs. So it’s enough to build all the applicationsthat you might want to build in a browser.

I think in playing this game you get to hide layers that you want to. Thequestion is, where is your playing field. In Squeak the whole language is partof the kernel so it’s got its own compiler and byte-code interpreter. And it’sgot its whole graphics system—it’s got BitBlt and all the stuff around that.

It looks like those are an important part of any kernel but you can takethem out. You can say, “Let’s assume that we have a dynamic language; let’sassume that we have graphics.” In my old thinking, I would have thought,“Well, there is nothing else.” But it’s not true. What’s left is, how do youput the graphics together to make an interesting user interfaceenvironment? And how do you bring programs and scripts up to the levelthat you can change them?


Перейти на страницу:
Изменить размер шрифта: