Kids and Us: the Story of Smalltalk
The same kinds of simplification that made for the modeless editor were also applied to programming languages and environments at PARC. Seeking a language that children could use, Kay could regularly be seen testing his work with kindergarten and elementary-school pupils.
What Kay aimed for was the Dynabook: a simple, portable personal computer that would cater to a person's information needs and provide an outlet for creativity-writing, drawing, and music composition. Smalltalk was to be the language of the Dynabook. It was based on the concepts of classes pioneered in the programming language Simula, and on the idea of interacting objects communicating by means of messages requesting actions, rather than by programs performing operations directly on data. The first version of Smalltalk was written as the result of a chance conversation between Kay, Ingalls, and Ted Kaehler, another PARC researcher. Ingalls and Kaehler were thinking about writing a language, and Kay said, You can do one on just one page."
What Kay aimed for was the Dynabook: a simple, portable personal computer.
He explained, If you look at a Lisp interpreter written in itself, the kernel of these things is incredibly small. Smalltalk could be even smaller than Lisp."
The problem with this approach, Kay recalled, is that Smalltalk is doubly recursive: you're in the function before you ever do anything with the arguments." In Smalltalk-72, the first version of the language, control was passed to the object as soon as possible. Thus writing a concise definition of Smalltalk-in Small talk-was very difficult.
It took about two weeks to write 10 lines of code," Kay said, and it was very hard to see whether those 10 lines of code would work.''
Kay spent the two weeks thinking from 4:00 to 8:00 a.m. each day and then discussing his ideas with Ingalls. When Kay was done, Ingalls coded the first Smalltalk in Basic on the Nova 800, because that was the only language available at the time with decent debugging facilities.
Smalltalk was of a scale that you could go out and have a pitcher of beer or two and come back, and then two people would egg each other on and do an entire system in an afternoon."-Alan Kay
Because the language was so small and simple, developing programs and even entire systems was also quite fast. Smalltalk was of a scale that you could go out and have a pitcher of beer or two and come back, and then two people would egg each other on and do an entire system in an afternoon," Kay said. From one of those afternoon sessions came overlapping windows.
The concept of windows had originated in Sketchpad, an interactive graphics program developed by Ivan Sutherland at MIT in the early 1960s; the Evans & Sutherland Corp. had implemented multiple windows on a graphics machine in the mid-1960s. But the first multiple overlapping windows were implemented on the Alto by PARC's Diana Merry in 1973.
All of us thought that the Alto display was incredibly small," said Kay, and it's clear that you've got to have overlapping windows if you don't have a large display."
After windows came the concept of Bitblt-block transfers of data from one portion of memory to another, with no restrictions about alignment on word boundaries. Thacker, the main designer of the Alto computer, had implemented a function called CharacterOp to write characters to the Alto's bit-mapped screen, and Ingalls extended that work to make a general graphic utility. Bitblt made overlapping windows much simpler, and it also made possible all kinds of graphics and animation tricks.
I gave a demo in early 1975 to all of PARC of the Smalltalk system using Bitblt for menus and overlapping windows and things," Ingalls recalled. A bunch of people came to me after wards, saying How do you do all these things? Can I get the code for Bitblt?' and within two months those things were being used throughout PARC."
Flashy and impressive as it was, Smalltalk-72 was a dead end," Tesler said. It was ambiguous. You could read a piece of code and not be able to tell which were the nouns and which were the verbs. You couldn't make it fast, and it couldn't be compiled."
The first compiled version of Smalltalk, written in 1976, marked the end of the emphasis on a language that children could use. The language was now a mature programming environment," Ingalls said. We got interested in exporting it and making it widely available."
It's terrible that Smalltalk-80 can't be used by children, since that's who Smalltalk was intended for. It fell back into data-structure-type programming instead of simulation-type programming."-Alan Kay
The next major revision of Smalltalk was Smalltalk-8O. Kay was no longer on the scene to argue that any language should be simple enough for a child to use. Smalltalk-8O, says Tesler, went too far in the opposite direction from the earliest versions of Smalltalk: It went to such an extreme to make it compilable, uniform, and readable, that it actually became hard to read, and you definitely wouldn't want to teach it to children."
Kay, looking at Smalltalk-80, said, It's terrible that it can't be used by children, since that's who Smalltalk was intended for. It fell back into data-structure-type programming instead of simulation-type programming."
While Kay's group was developing a language for children of all ages, a group of artificial-intelligence researchers within PARC were improving Lisp. Lisp was brought to PARC by Warren Teitelman and Daniel G. Bobrow from Bolt, Beranek, and Newman in Cambridge, Mass., where it was being developed as a service to the ARPA community. At PARC, it was renamed Interlisp, a window system called VLISP was added, and a powerful set of programmer's tools was developed.
In PARC's Computer Science Laboratory, researchers were developing a powerful language for systems programming. After going through several iterations, the language emerged as Mesa-a modular language, which allowed several programmers to work on a large project at the same time. The key to this is the concept of an interface-what a module in a program does, rather than how it does it. Each programmer knows what the other modules are chartered to do and can call on them to perform their particular functions.
Another dominant feature was Mesa's strong type-checking, which prevented programmers from using integer variables where they needed real numbers, or real numbers where they needed character strings-and prevented bugs from spreading from one module of a program to another.
These concepts have since been widely adopted as the basis of modular programming languages. A lot of the ideas in Ada [the standard programming language of the U.S. Department of Defense] and Modula-2 came out of the programming language research done at PARC," said Chuck Geschke, now executive vice president of Adobe Systems Inc. Modula-2, in fact, was written by computer scientist Niklaus Wirth after he spent a sabbatical at PARC.