Smalltalk and Talking Small

Gabriel Chazanov
3 min readDec 21, 2020

The ninties were a golden time.

Pulp Fiction had just come out, I had caught Mewto six months ago, and a promising young programmer named Yukihiro Matsumoto had just released a brand new programming language that would alter the landscape of information technology for years to come. But we all know the story of Ruby.

Today I want to talk about a different time.

A simpler time

One of the main influences for Ruby is a programming language called Smalltalk. It was devised in 1972 by a computer programmer named Alan Kay, and his team of crack computer scientists at the Xerox Research and Development campus California. Because apparently in the early 70s, Xerox was the bleeding edge of technological development.

OBJECT ORIENTED PROGRAMMING

One of the most notable attributes of Smalltalk was its innovation of object-oriented programming. Everything in Smalltalk is an object. Everything. Values are objects. Integers are objects. Booleans are objects! What an object in this specific case means is that it is an instance of its class. So a True value is an object of the truthiness class. So to speak. Even the wider defining scope of a class, falls under the umbrella of being an instance of an even wider scope of metaclasses. Even the lowliest block or line of code is considered an object, or a specific instance of a larger class. The point of making every single thing in Smallta lk a class was to load these objects with predefined behavior. If everything is an object, or an instance of a class, then everything has predetermined behaviors and means of interacting with other objects.

REFLECTION

Another large and influential facet of the Smalltalk programming language is the concept of reflection. All objects know data about themselves and the class to which they belong. For Ruby objects it’s very easy for us to say something as simple as Tree.create or Tree.branches, but in the heady 70s at Xerox headquarters, it was revolutionary for an object to not only know data about itself, but also to be able to create more versions of itself. Every object in Smalltalk is a member of a class, so instantiating a new object, was simply a matter of inheriting behavior from a parent class, and adding some new behavior, like a name or some other attribute.

LET’S TALK ABOUT SYNTAX

The syntax of small talk may also be quite familiar to most rubyists. Alan Kay’s original vision for the language was to be accessible to children, and therefore most of the time it ends up sounding quite conversational. The basic structure is that an instance of a class, or an object, will send a “message” to another object.

While a rubyist might say something like:

jorge.sendpeachpie, anais)

a Smalltalk user would use the even simpler sounding:

jorge sendPeachpieTo Anaïs

The language was, in some respects, so simple that one of the programmers at Xerox, Adele Goldberg was able to teach it to tweens, who were then able to build rudimentary illustration programs.

Alan Kay’s vision for the language that he and his team had created was to make something called a Dynabook. A computing tablet that would be widely available and could be used by anybody, and would have access to a winder network of machines that were all interconnected. Unfortuntely Xerox saw this as an unrealistic notion, and ultimately sold its interest in the Smalltalk technology.

Today Alan Kay and Adele Goldberg’s vision of easy to read, object oriented programming has been realized in a number of programming languages that are still in active development, and will continue to influence software engineers for generations to come.

--

--

Gabriel Chazanov

He/Him; Full Stack software developer who’s always striving to learn