Radical Object-Orientation #00: The Birth of the Term 'Object'
And how it wasn't even the most important term
The object-oriented paradigm isn't functioning as originally envisioned. It's not delivering on its promises. It hasn't simply made your code more adaptable or easier for others to grasp. Instead, you'll often find yourself uncertain about how best to apply object-oriented principles to solve a problem. And most likely, you won't see a clear path from a problem statement to code; you'll find yourself just "muddling through."
If these statements resonate with you, perhaps you're interested in embarking on a little journey with me. In small steps, I'd like to introduce you to a different approach to object-orientation that can help you overcome uncertainties and arrive at cleaner solutions more easily. Personally, this alternative approach has greatly facilitated my software development efforts over the years. It's part of what I call "Programming with Ease."
From my perspective, this alternative approach represents a radical form of object-orientation. Radical, because it goes to the root of the concept (Latin: radix = root); radical, because it looks quite different from what you've likely heard about object-orientation thus far.
Are you ready for the red pill? Do you want to see how deep the rabbit hole goes?
Then buckle up…
Here's the original "definition" of the term "object":
"I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages" [1]
Coined in the late 1960s by the visionary behind many developments in software development: Alan Kay [2]
Did you know that object-orientation has its roots in biology?
And Alan Kay also stated what he considers the most important aspect of object-orientation:
"The big idea is 'messaging'" [3]
and
"messaging came at the very beginning" [1]
Did you know that messages are at the core of object-orientation and not, for example, classes or inheritance?
"[Object-orientation] is not even about classes. I'm sorry that I long ago coined the term 'objects' for this topic because it gets many people to focus on the lesser idea." [3]
Therefore, it's no wonder to me that attempts to program cleanly with object-orientation since the late 1980s, with languages like C++ and its more or less closely related successors (e.g., Delphi, Java, C#, Ruby, Python), haven't been as successful as hoped. Yes, things have changed since C and Pascal or Fortran, but the potential inherent in Alan Kay's idea hasn't been fully realized.
For Alan Kay, object-orientation is quite simple:
"OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things." [1]
Messages are the brackets ("only messaging," "late-binding") around encapsulated state ("hiding of state-process").
Does your approach to object-orientation align with this conception? Most likely not. I believe that's because Alan Kay himself didn't explain enough about what he meant with his original idea. Even the language he co-developed, Smalltalk, didn't fully address this.
Yet, there's a lot to unpack in his analogy with biological cells. We just need to take a closer look. That's what I aim to do with further postings. Stay tuned if you're interested…
[1] https://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en


