So he wrote an emulator in Smalltalk, because our Smalltalk was getting fastenough that that was a reasonable thing to do, and produced all thosetraces that would help people debugging.
Seibel: And you wanted to help people write Smalltalk virtual machinesbecause the point of Smalltalk-80 was to be an escape pod so Smalltalkcould go out into the world even if PARC decided not to do anything withit?
Ingalls: That’s right. Then I left the industry and when I came back, Iwanted to do a Smalltalk for a new project. At that time things wererunning so fast that, “Wait a minute; why don’t we just try running theSmalltalk version of it and see what that does?” But the “aha!” was, itshouldn’t be hard to mechanically translate that to C and then it would beas fast as the other engines. If you wanted to change something about thevirtual machine you could change that in Smalltalk—you could try it out inSmalltalk and then push a button, and it would suddenly be in theproduction interpreter.
Seibel: So you took this Smalltalk interpreter written in whatever subset ofSmalltalk it happened to be written in and wrote a special-purpose compilerthat knows how to compile that subset into C?
Ingalls: And the C translator was simply a subset of the Smalltalkcompiler—we just had to make the parse trees print out in C. This wasactually something we had done before at Xerox—Ted Kaehler had writtena virtual memory in Smalltalk, and then we used the same trick to translatethat to BCPL. Same thing.
Seibel: When Smalltalk-80 got out in the world there were Smalltalkcompanies; objects were a big thing; Byte did its issue all about Smalltalk.
The promise was that objects were going to be these reusable componentsand that programmers would just go down to Ye Olde Object Shoppe andbuy some objects and plug them into their program. Has that promise beenkept?
Ingalls: I think yes and no.
Seibel: So in what ways has it happened?
Ingalls: Look at the world of Java—it’s that kind of a world. There are hugebodies of software that work well together because of those kinds ofinterfaces. I think that was all a real step forward. There were several thingsgoing on in Smalltalk that did end up in the world more or less. One ofthem is object-oriented design and interfaces. The other is dynamiclanguages and user interfaces. It didn’t take over and you can look at variouslittle places in history where things could have been done differently and itmight have had a better chance. But I don’t think that’s a big thing lost orgained. The world moves forward slowly. Other things got done that werebetter. Natural selection takes care of it all.
Seibel: But natural selection can also select some pretty grotesqueoutcomes.
Ingalls: Oh yeah, Beta and VHS, it’s true. But ultimately, nothing that’sreally good ever gets really lost.
Seibel: Another aspect of Smalltalk that Alan Kay has particularlyemphasized in recent years is that it wasn’t supposed to be about objects; itwas about message passing. C++ and Java don’t have message passing innearly the same way Smalltalk did. Why is that such a core idea?
Ingalls: Because it gives you real separation. Alan’s latest phrase—which isappropriate, I think—is it should be like the Internet all the way down. Weworry about where we have security and various sorts of securitymechanisms in programs and there are all sorts of things wrong with them.But the Internet-style separation is a real layer that there’s no way around.
So why is message passing such a good thing? That’s the reason: it separatesthe inside from the outside, 100 percent. At least, done right it does. Andthere are other systems that have gone farther with this and I think we’llsee more in that space.
Seibel: So nothing good ever gets really lost. Are there ideas, fromSmalltalk or anywhere else, that you wish had been adopted by themainstream?
Ingalls: I don’t really have wishes for the mainstream—I have things I wantto do or that I would like to be easy. My one wish for the mainstream, inthe context of computer science, is that people would go back to firstprinciples a little bit more about ways to leverage computing in theintellectual space.
We’ve gotten incredibly good with the programming systems and thelanguages we know. What if we were that good with logic programming?And had it integrated well? I think we would be doing extraordinarily morestuff in much more of a human-oriented space. It does go in the direction ofartificial intelligence. You have to know that at some point we’re going tocross a threshold where computers will be doing a better job thinking aboutstuff than we do.
I wonder sometimes if we’re unconsciously holding that off. A lot ofprogress was made, up until 1980, in that area. And the computers areorders of magnitude faster and bigger now. On the latest computer I got, if Irun the Smalltalk music synthesis, in Smalltalk, it can compute the radiosignal for a radio station. This is hard for somebody who, at one point,could watch simple arithmetic being computed.
So you take that and put it against all sorts of possibilities in logicprogramming, in rule-based systems, and artificial intelligence, and you haveto know there’s lots of progress to be made there. I would like to see thekind of thinking that led to the Lively Kernel—what is a kernel apart fromthe language and the user interface? What other kernels are there? What ifyou build a kernel around logic programming and what kinds of things canyou do with that? I don’t think that people are playing around with, tinkeringwith that stuff enough. Because, Lord, the machines we have today—if youhave a minor breakthrough there you could do incredible stuff.
Seibel: Smalltalk was originally envisioned as a platform for use ineducation, right?
Ingalls: It was envisioned as a language for kids—children of all ages—touse Alan’s original phrase. I think one of the things that helped that wholeproject, and it was a long-term project, was that it wasn’t like we were outto do the world’s best programming environment. We were out to buildeducational software, so a lot of the charter was more in the space ofsimplicity and modeling the real world.
Something about having this educational goal made it easy to keep inspiringthe lower-level stuff to be as simple as possible. So there were lots of thingswe did that didn’t run as fast as you might like. The first Smalltalk-72 systemwas really slow—the second revision on it ran about 20, 25 times faster. Butwe had it running, by God, and we were able to use it with kids and learneda huge amount before even trying a second version.
We focused a lot on getting some cool graphics to work, bitmappedgraphics, music, and putting it together in a fairly simple language. What welearned from that did actually make a seriously good language. So afterSmalltalk-72, we did Smalltalk-76, which was essentially Smalltalk-80. And Isaw that that could be a serious programming environment for the industry.There was some tension there with Alan because he wanted to not getscattered in that direction.
It wasn’t too much longer before he left Xerox, and so we pursued thoseseparate paths. But that was because we had discovered some things. Forinstance, our turnaround time for making changes in the system from thebeginning was seconds, and subsecond fairly soon. It was just totally alive.And that’s something which I, and a bunch of the other people, got apassion for. Let’s build a system that’s living like that. That’s what Smalltalkbecame. So that then became a new goal, which then spun Smalltalk-80 off.Squeak was a return to that, but with the doing-it-in-itself bit added.