Member-only story
Misconceptions About the Philosophy Behind OOP
Alan Kay coined the term object-oriented programming, but it has since been widely misunderstood.
I tried to explain in more detail with numerous examples about what object-oriented programming was originally about in my story: Go is More Object-Oriented Than Java.
Yet judging by various comments I have gotten, many people really struggle to understand the full scope of the ideas Alan Kay had about object-oriented programming. Thus this is sort of a follow up article to clarify what I see as common misconception.
Let us start with a simplistic definition of object-oriented programming from Alan Kay. He imagined object-oriented programming as taking a networked computer and scaling it down. Each computer has internal state. It has hard drives and ability to perform calculations. It communicates with other computers through a network. This computer is essentially an object in Kay’s thinking. He imagined scaling computers down to smaller virtual entities which you could connect together in similar fashion inside a computer to build larger systems. These objects would have the following key traits:
- Message passing — Communication only through messages. No shared state.
- Isolated — One object crashing would not bring down the whole system. E.g. a computer on the internet crashing does not bring down the whole internet. But in everyday programming that is indeed what…