Smalltalk is one of the most influential programming languages, inspiring the object-oriented programming paradigm; the world of graphical user interfaces; and live coding, which allows you to modify your code while it’s running and debug it on the fly. Some of the top programming languages of today—including Java and Ruby—as well as languages such as Lisp and Objective-C have elements of Smalltalk in them. While not widely popular today, Smalltalk is still being used to power applications in variousindustries.
IEEE Spectrum: What was the motivation behind creating Smalltalk?
Adele Goldberg: In the early ’70s, Alan Kay proposed that we should all be carrying around the handheld computer which he called the Dynabook. The question was, “What would you do with a handheld computer—something you can carry with you all the time? Would it be relegated to professionals or could anybody create on it?”
We were interested in understanding the kind of software that would allow what Alan liked to call “children of all ages” to create models of their understanding of how the world worked. It was more than applications—it was the development environment, and we called it a modeling environment, not a programming environment. That translated into the initial experiments on the simulation language, and that’s what motivated the particular ideas behind Smalltalk.
What was your role in developing Smalltalk?
Goldberg: In 1973, Alan Kay was putting a group together at Xerox at their new Palo Alto Research Center and invited me to join. I was very involved in experimenting with various language constructs and what we would need as we moved from Smalltalk-72 to Smalltalk-80. By 1978, Allan had taken a sabbatical and did not return to Xerox; I then became the group manager and eventually a research-laboratory manager.
I was running a lab and helping direct what to work on, but I was very focused on getting the results out the door for broader use in the world. So, I worked with the team to get a version of Smalltalk that would run on multiple machines—not just Xerox proprietary workstations, but microprocessor technology that was becoming quite popular and available. Eventually, we got Xerox to let us spin out our own commercial company, and I was the founding CEO.
When Smalltalk was developed, what do you think made it different from the existing programming languages at that time?
Goldberg: When you start thinking about how Smalltalk was different from the type of software that was then available, it was geared up to provide a components-based, reuse-based approach to software development—something that was very iterative and you could prototype and evolve toward an understanding of what it is you wanted to do. And because of the structure, object-oriented technology was a good way to rapidly make changes with predictability in terms of maintaining the reliability or stability of the system.
Would you say during that time it was groundbreaking?
Adele GoldbergComputer History Museum
Goldberg: You always build on the shoulders of other people. The whole approach that was the foundation of objects and message sending comes from Simula. What we were focused on was not language alone, but how the language supports and influences that larger use in the development environment and the ability to just look at something running.
I remember people in the ’80s were arguing about low-level user-interface issues. In particular, when you select text, are you underlining, boxing the selected text, or reversing black and white to white and black? Back then, we had visitors in the lab, and one of my colleagues was doing the demonstrations. I could see that these two gentlemen were not happy, so I asked what’s wrong. They said that’s not the way to show a selection and explained what they wanted. My colleague showed a running text editor as an example of building media on top of the language environment, and he interrupted the active process, found where the highlighting action was, and changed it to do what they wanted. The entire tone of the room changed—you could feel it... These guys were sitting up and then they relaxed.
We had the live flexibility to change things, and we were saying, “How can we empower you to have what you want?” But we got attacked for that too. It meant that people were dealing with a virtual machine and an interpretive system and they assumed it was inherently slow. We had to prove that wasn’t the case and that you could incrementally compile. I remember the days when one of my engineers was quilting and other people were doing other things while they waited for a compile to finish. It took a while, and you lose the immediacy. When you lose the immediacy, you lose the energy that goes into creativity. So, we were excited about the idea—the fun of “It’s always live; it’s always running, and you get what you want.”
How has Smalltalk influenced the world of object-oriented programming?
Goldberg: One original mission of our research lab was education, but the other one was dealing with a new paradigm for software development. So the influence there is in software engineering and proving the case for switching from structured programming to object-oriented programming. That impact in the flow from the programming environment to software engineering meant that lots of work went into methodology. This new approach to software development changed how you organized the team, your planning, and your analysis of the problem.
Then, there have been new programming languages that either took an existing language and added objects or had a whole new approach to their idea of what it meant to have more of a components-based technology.
We get a lot of credit for graphical user interfaces. We were trying to figure out the best way to allow a person to touch that computer and say what they want to do with senses other than a keyboard. We certainly demonstrated a lot of that, and a lot of our applications were initial enablers for new ways of doing text editing or painting or building animations and integrating multimedia and graphics. Those applications were often the first time people would see something like overlapping windows, or the kind of spreadsheets or text editing we did that were objects and embedding objects—again, a components-based approach.
Why does Smalltalk continue to be an influential programming language, even today?
Goldberg: I’m pretty confident that Smalltalk remains the only language system that does a couple of things differently. One is that everything really is an object. When we did Smalltalk-80, we made sure everything’s an object, all activities are done by message sending, all objects are instances of a class. Then, you should be able to build general hierarchies of objects and classes. It’s more consistent in the model of how things work, so it makes it easier for people to learn and take the risk and change.
Another big point is that you learn to write by reading, and it's the same with programming. Smalltalk-80 was specifically orchestrated to be readable—not just by looking at the object descriptions, but there’s the set of tools written in the language itself. People can essentially write whole new worlds in Smalltalk so that the experimentation flows better. You could say, “What are you and what do you do? Show me your definition. Show me who’s calling on you and who you call on.” All that comes out of an object-oriented approach.
It’s a fun place to play but also do serious work, which is why you still see people who are into Smalltalk.
Do you hope Smalltalk will go on to live for another 50 years?
Goldberg: It’s not something I even think about. In the world of computer science, designing languages for specific needs and uses is part of the fun, so whether it’s called Smalltalk or not, I think it’s nice to see the paradigm living on.
This transcript has been edited for brevity and clarity.