Here's an illustration. What you see here on the left is the first instance of
the pop-up menu. This is in Smalltalk in the early 70s. What you see on the
right is the first commercialization of the menu.
These two objects have completely different purposes. These two objects have
nothing to do with each other. But they look alike. And because we've grown up
with descendants of that thing on the right, we can't actually see the thing on
the left for what it actually is.
To understand the thing on the left, you have to understand that Alan Kay was
trying to create a medium in which all people would be literate in modeling and
simulating the complex systems of the world. And he thought a good way of
organizing those models might be as these computational objects that are sending
messages to each other. So that's where "object-oriented" came from.
And so, how do you send a message to an object? Well, one way is to write it
out. You can give the name of the object and give the message. And that was the
Smalltalk programming language. And that's a powerful context because you can
send many messages, you can abstract over them, you can define your own
messages.
But Alan Kay was trying to create a new form of literacy, which meant that it
had to extend down to the world of young children. Young children had to grow up
immersed in this computational medium in the same way that children today grow
up immersed in a world of written text. And young children aren't particularly
fluent in abstract language. But they are good at using their hands. Well, is
there a way to send a message to an object using your hands? Well, maybe. You
use this mouse thing to click on the object, and the object then reveals its
vocabulary to you. "Here are the messages that I know how to deal with." And
these are the exact same messages you can then use in the programming language.
They're the same vocabulary, whether you choose from the menu or whether you
write it out. And so when a child clicks on that menu on the left, they're doing
two things. One is that they're actually invoking that action. But the second
thing is that they're learning this vocabulary. They're learning how to
communicate with this object, and they can then use that vocabulary later, when
they're ready, in the programming context, to make things of their own, to go
beyond what's on the menu.
So that thing on the left is educational scaffolding. The thing on the left is
designed to teach children to program. The thing on the right is access to
functionality. You click on the thing on the right, it runs an assembly language
subroutine written by a priesthood of programmers who have decided what you can
and cannot do. And if you want to do something that's not on the menu, you buy
another computer.
So that thing on the left is designed to expand your world, expand your
possibilities. The thing on the right constricts your possibilities. The thing
on the left is designed to teach you to become self-sufficient, to go beyond the
menu. The thing on the right teaches you to be dependent on a corporation for
all your needs. And that ideology on the right has become so ubiquitous and so
widespread that we do live in a world where, if you want to do anything on a
computer, you use an app to do it. And the idea on the left, this amazing idea
that, the purpose of a user interface is to teach you to go beyond the
interface, that idea has been buried.