On the surface, Smalltalk is an object-oriented, dynamically typed, reflective programming language. In his paper “The Early History of Smalltalk,” creator Alan C. Kay divided programming languages into two groups: those that are an “agglutination of features” and those which have become a “crystallization of style.”
“COBOL, PL/1, Ada, etc., belong to the first kind; LISP, APL – and Smalltalk – are the second kind…Smalltalk’s design – and existence – is due to the insight that everything we can describe can be represented by the recursive composition of a single kind of behavioral building block that hides its combination of state and process inside itself and can be dealt with only through the exchange of messages.”
It is these “building blocks” that are the “objects” in object-oriented programming. Kay continues:
“In computer terms, Smalltalk is a recursion on the notion of the computer itself. Instead of dividing ‘computer stuff’ into things each less strong than the whole – like data structures, procedures, and functions…Each Smalltalk object is a recursion on the entire possibilities of the computer. Thus, its semantics are a bit like having thousands and thousands of computers all hooked together by a very fast network…”
Kay saw Smalltalk as “a new design paradigm” that allows professional programmers to more easily resolve large problems, while also enabling novice users to tackle small problems. “Object-oriented design,” Kay wrote, “is a successful attempt to qualitatively improve the efficiency of modeling the ever more complex dynamic systems and user relationships made possible by the silicon explosion.” In other words, Smalltalk’s development in the 1970s was more than the creation of just another programming language. Smalltalk ushered in the era of object-oriented programming (OOP) and introduced a series of innovations that changed the face of modern computing and helped spark the beginning of the personal computer.
The language was first generally released as Smalltalk-80 and has been widely used since. Smalltalk – and with it OOP – were introduced to a wider audience by the August 1981 issue of Byte magazine. To this day, Smalltalk and Smalltalk-like languages are in continuing active development by companies like Cincom, and have gathered loyal communities of users around them. ANSI Smalltalk was ratified in 1998 and represents the standard version of Smalltalk. With the acquisition of VisualWorks in 1999, Cincom unveiled Cincom’s Smalltalk, a product line that included VisualWorks from ObjectShare, as well as Cincom’s existing ObjectStudio application development environment for the Smalltalk Market.
Not bad for a language for which the original code was written on a dare and fit on one sheet of paper…
“The Dawn of the Computer Age”
In the middle of 1970, the Xerox Corporation opened the door of its brand new research center in Palo Alto, California. The Xerox Palo Alto Research Center — or PARC, as it has become known — was established as a research lab for a computer subsidiary that Xerox had acquired. What PARC became was no less than the birthplace of the personal computer, among other innovations of modern computing.
Most of the elements of the now-ubiquitous personal computer were included in the Smalltalk-powered Alto, which introduced and unified most aspects we now take for granted:
- the mouse
- computer-generated color graphics
- a graphical user interface (GUI) featuring windows and icons
- the WYSIWYG text editor
- InterPress (a resolution-independent graphical page description language and the precursor to PostScript)
- fully formed object-oriented programming in the Smalltalk programming language and integrated development environment
Other PARC innovations include the laser printer and Superpaint, a precursor to modern computer graphics animation software. (Alvy Ray Smith, one of the developers of Superpaint, ended up co-founding Pixar.)
Michael A. Hiltzik, author of Dealers of Lightning: Xerox PARC and the Dawn of the Computer Age, called PARC “one of the most unusual and prolific research facilities in history,” and “a national resource.” In his book, he identifies four factors that contributed to “PARC’s explosive creativity”:
- Money: Xerox was able to pump a seemingly limitless stream of cash into PARC, thanks to its near-monopoly on the office copier.
- Talent: Thanks to the political climate at the time, it was a buyer’s market for high-caliber research talent. “Xerox was one of the rare enterprises in a position to bid for the best scientists and engineers around,” Hiltzik wrote.
- The state of computer technology: “Never before or since would computer science be poised to take such great leaps of understanding in so short a period. The intellectual hothouse of PARC was one of the few places on earth employing the creative brainpower to realize them.”
- Management: PARC’s management knew that the only way to get the best research was to hire the best researchers they could find and then leave them alone. “For the most part, the computer engineers of PARC were exempt from corporate imperatives to improve Xerox’s existing products. They had a different charge: to lead the company into new and uncharted territory.”
Among the high-caliber research talent were Alan Kay, Dan Ingalls, Adele Goldberg, Ted Kaehler, and Scott Wallace — the designers and developers of Smalltalk.
Alan Kay: The Father of Smalltalk
In 1969, when computers were so large that they took up ntire rooms, Alan Kay had a vision for an interactive, notebook-shaped computer that you could carry around with you. He called it the “Dynabook,” and despite being mocked and thought crazy by his peers, Kay would pursue his vision for years to come.
In Dealers in Lightning, Hiltzik devoted an entire chapter to Kay called “Not Your Normal Person.” In it, he describes Kay thus:
“Alan Kay might have been the role model for the modern computer nerd, a Chuck Yeager for the generation that got engaged by the new technology of the 1970s. If you lived within that era’s insular community of students and electronics nuts you knew his name, perhaps because you had read his lucid explications of microelectronics and software in Scientific American, or read an article featuring him in (of all places) Rolling Stone. You had been socially conditioned to feel ungainly and isolated by your devotion to machines and math; Alan Kay positively reveled in it, swaggered with it, declared in the pages of the counterculture bible itself that you and your awkward pals in all your nebbishy glory were the prophets of a new world in which computers and their unparalleled power would belong to the masses.”
Kay got into computer programming in 1961, after taking a standardized test on a whim while he was in the Air Force. In 1966, he headed to the University of Utah to pursue a doctorate in computer science. It was there that he encountered Sketchpad, a “man-machine graphical communications system.” Kay saw Sketchpad as “a light that was sort of showing us the way” to realizing all that computing promised.
Kay was soon exposed to simple programming language called LOGO, which Seymour Papert had developed in order to teach children about computers. Several elements from LOGO would find their way into Kay’s Smalltalk: its visual feedback, its accessibility to novices, and its orientation to the wonder and creativity of childhood.
It was Kay’s doctoral dissertation outlining an idealized interactive computer called the FLEX machine that attracted the attention of Bob Taylor, associate manager of PARC’s Computer Science Lab (CSL). Taylor knew he needed Kay’s vision on the PARC team, and recruited him to join PARC’s System Sciences Lab (SSL).
Kay was working alongside Chuck Thacker and Butler Lampson, two of the luminaries in the field of computer engineering. When Thacker made a bet that he could build a new computer in just three months, they came to Kay. They knew that Kay had money in his budget to fund the project, and more importantly, they knew he had a burning desire to create his “Dynabook.” Kay agreed to the deal, but it was a chance exchange later that led him to write a new programming language for the new machine — Smalltalk.
Kay’s Big Dare
Early one morning at PARC, Kay ran into Ted Kaehler and Dan Ingalls discussing how a programming language would have to be large in order to have great power. Kay quickly asserted that he could define the most powerful computer language in the world in just a page of code. Kaehler and Ingalls told him to “put up or shut up.”
Kay put up, working from 4 A.M. to 8 A.M. for eight straight days in response to his colleagues’ challenge. Understanding that the hallmark of a great system is its simplicity, Kay set a goal to create a language that enabled the programmer to arrive at a simple result via a simple path, regardless of the complex operations taking place beneath the surface. He called it “hiding the details.”
Kay drew upon his experiences with Papert’s LOGO, as well as his dissertation on the FLEX machine and his earlier work with Sketchpad and Simula to lay the foundations for this new language. At the end of his eight-day marathon, he had completed the blueprint for his new programming language, which he called “Smalltalk.” Sure enough, all the code for it fit on one page.
Explaining the name of the language he created, Kay wrote in his paper “The Early History of Smalltalk” that most programming systems “were named Zeus, Odin, and Thor and hardly did anything. I figured that ‘Smalltalk’ was so innocuous a label that if it ever did anything nice, people would be pleasantly surprised.”
After winning the bet, however, Kay thought it was over. “This had been an interesting holiday from our official “iconic programming” pursuits, and I thought that would be the end of it,” he wrote. “Much to my surprise, only a few days later, Dan Ingalls showed me the scheme working on the Nova [an early commercial minicomputer produced by Xerox].” Later, Kay said, “Nobody would ever have heard of me if it wasn’t for Dan Ingalls.”
A Real Smalltalk
This first version of Smalltalk became known as Smalltalk-71, and most of its schemes were sorted into six main ideas:
- Everything is an object
- Objects communicate by sending and receiving messages (in terms of objects)
- Objects have their own memory (in terms of objects)
- Every object is an instance of a class (which must be an object)
- The class holds the shared behavior for its instances (in the form of objects in a program list)
- To evaluate a program list, control is passed to the first object and the remainder is treated as its message
The first three principles have remained the same throughout the various versions of Smalltalk. The last three, according to Kay, have changed with each version.
The Many Versions of Smalltalk
Smalltalk-71 was implemented on the groundbreaking Xerox Alto — or as Kay calls it, the “Interim Dynabook” — that Chuck Thacker built in three months to win his bet. Smalltalk-71, however, isn’t considered a “real Smalltalk.” The first real Smalltalk, Kay says, was Smalltalk-72. This “beefed up” version was used for research work and influenced the development of the Actor model. Its syntax and execution model were very different from modern Smalltalk variants.
After significant revisions, Smalltalk-76 was created. This system had a development environment featuring most of the now-familiar tools, including a class library code browser/editor. Smalltalk-80 added metaclasses, to help maintain the “everything is an object” (except variables) paradigm by associating properties and behavior with individual classes, and even primitives such as integer and boolean values.
Smalltalk-80 was the first version of the language to be made available outside of PARC. In 1983, a general availability implementation, known as Smalltalk-80 Version 2, was released as an image (platform-independent file with object definitions) and a virtual machine specification. ANSI Smalltalk has been the standard language reference since 1998.
Two of the currently popular Smalltalk implementation variants are descendants of those original Smalltalk-80 images. Squeak is an open source implementation derived from Smalltalk-80 Version 1 by way of Apple Smalltalk. VisualWorks® is derived from Smalltalk-80 Version 2 by way of Smalltalk-80 2.5 and ObjectWorks.
The Cincom Years
During the late 1980s to mid-1990s, Smalltalk environments — including support, training and add-ons — were sold by two competing companies: ParcPlace Systems and Digitalk. ParcPlace Systems focused on the Unix/Sun Microsystems market, while Digitalk emphasized Intel-based PCs running either Microsoft Windows or IBM’s OS/2.
Enfin Software was another commercial Smalltalk provider in the late 80’s. Like Digitalk’s offering, Enfin ran on Windows and OS/2, but in contrast to the others, it was very commercially focused. Enfin had great database and mainframe connectivity and GUI design abilities, but did not have the polished class library and virtual machine of ParcPlace or Digitalk.
IBM, having initially supported the Digitalk product, entered the market with a Smalltalk product in 1995 called VisualAge/Smalltalk. Later, IBM would develop its own version of Smalltalk, which would in turn become VisualAge.
In 1995, ParcPlace and Digitalk merged into ParcPlace-Digitalk and then rebranded in 1997 as ObjectShare. The merged company struggled to respond to the introduction of a new competitor, Java, and never succeeded. By 1999, ObjectShare sold VisualWorks to Cincom.
In 1992, Easel acquired Enfin Smalltalk, added object modeling and relational mapping capability and renamed it ObjectStudio®. In 1994, Cincom announced a partnership with Easel to market/service/support ObjectStudio as part of Total FrameWork. By 1999, Cincom took over ObjectStudio development entirely, after first creating a joint venture to develop it with VMARK, the company that acquired Easel.
Cincom immediately recognized the value of the Smalltalk technology, which is why it pursued VisualWorks and ObjectStudio. As a result, Cincom put VisualWorks together with ObjectStudio in a product line called Cincom Smalltalk. Cincom has placed a lot of muscle behind Smalltalk, putting out multiple new releases of VisualWorks and ObjectStudio each year since 1999.