- Dec 2023
-
cuis-smalltalk.github.io cuis-smalltalk.github.io
-
But just what is an object? At its simplest, an object has two components: Internal state. This is embodied by variables known only to the object. A variable only visible within the object is called a private variable. As a consequence, it is impossible – if the object decides so – to know the internal state of the object from another object. A repertoire of behaviors. These are the messages an object instance responds to. When the object receives a message it understands, it gets its behavior from a method with that name known by its class or superclass.
Reductionistic vs other definitions
Is the annotated paragraph describing what is an object or how is an object? This same criticism is also present in Dave West's Object Thinking.
Other perspectives:
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. Philosophically, Smalltalk's objects have much in common with the monads of Leibniz and the notions of 20th century physics and biology. Its way of making objects is quite Platonic in that some of them act as idealizations of concepts—Ideas—from which manifestations can be created. That the Ideas are themselves manifestations (of the Idea-Idea) and that the Idea-Idea is a-kind-of Manifestation-Idea—which is a-kind-of itself, so that the system is completely self-describing— would have been appreciated by Plato as an extremely practical joke.
—Alan Kay Early History of Smalltalk (1972)
So objects have something resembling agency, see the actor model.
OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them.
—Alan Kay Clarification of "object-oriented", email reply to Stefan Ram
I also like the complementary view that Gerald Sussman teaches on his video lecture 5A that informs chapter 2 and 3 of SICP; objects are a cheap way of modelling the world.
-