THE 1980S

Smalltalk-80

By the late 1970s, Xerox PARC already housed several versions of Smalltalk, but these creations remained confined within the laboratory walls. They only ran on Xerox's specialized hardware: the Alto and Dorado, expensive machines inaccessible to ordinary computer scientists. This frustrating situation prompted Adele Goldberg to take charge of an ambitious project: bringing Smalltalk out of its gilded cage so it could flourish on other architectures.

The undertaking proved delicate. First, they needed to formalize with surgical precision the workings of a Smalltalk "virtual machine" that would serve as a universal foundation, much like Java's would many years later. This technical abstraction concealed a novel concept: everything is an object in this new universe. Numbers, characters, and classes behave as autonomous entities capable of receiving and sending messages. This radical uniformity disrupted the habits of programmers accustomed to carefully separating data and procedures.

In this unified world, inheritance weaves invisible links between classes. A hierarchy emerges naturally, where each descendant enriches or specializes the behaviors of its ancestors. Class methods orchestrate shared behaviors while instance methods give each object its own personality. This architecture fostered a form of code reuse previously unknown.

The development environment broke with the traditional cycle that required editing, compiling, then executing. Smalltalk-80 offered a continuous experience where programmers modified their code while the program was running. This fluidity transformed the act of programming into a direct conversation with the machine. The class browser and debugger, themselves written in Smalltalk, were living tools that users shaped according to their needs.

The graphical interface introduced innovative concepts for the time: windows overlapped, menus appeared with right-clicks, objects were manipulated directly on screen. These innovations established a visual language that still influences our daily interactions with computers. Steve Jobs grasped this immediately when he visited PARC in 1979; he understood the potential of these ideas for the general public.

Under the hood, automatic memory management finally freed programmers from a tedious technical chore. The garbage collector tracked abandoned objects to recycle their memory. Peter Deutsch and Allan Schiffman refined these mechanisms until they achieved acceptable performance on standard hardware, proving that conceptual elegance could coexist with practical efficiency.

Implementation across different platforms demanded engineering prowess. The PARC team designed a virtual machine with its own instruction set, leaving integrators to translate these abstract commands into native code. This strategy guaranteed portability while preserving the possibility of specific optimizations. Method caches accelerated searching through the class hierarchy: when an object received a message, the system memorized the association between the selector and the corresponding method for subsequent calls.

The management of execution contexts revealed another facet of the object approach. These contexts, objects manipulable by the program, would enable sophisticated mechanisms like exception handling and reflection to emerge. This conceptual uniformity pushed object logic into the most intimate workings of the system.

With the publication of Smalltalk-80 in a special issue of Byte magazine in 1980, the books by Adele Goldberg and David Robson disseminated these ideas well beyond academic circles. Objective-C, Ruby, Python, and many others drew directly from this source. The influence extended beyond the realm of languages: modern development environments retain traces of this vision where everything is accessible and modifiable in real time.

The Smalltalk-80 interface spread into the commercial world thanks to Jobs's insight. The Lisa and Macintosh popularized these concepts with the general public, creating a de facto standard that endures. The optimization techniques developed for Smalltalk-80 are now standard practices in implementing object-oriented languages.

The exhaustive documentation of the system, including virtual machine specifications and implementation details, constituted an invaluable gift to the computing community. Other teams would thus reinvent the system according to their needs, accelerating the propagation of these pioneering ideas.