&gt; The Big Idea of Object Oriented Programming is &quot;Messaging&quot; and encapsulation, i.e. how objects encapsulate their internal complexity and expose their capabilities for maximum re-use and minimal knowledge and coupling of internals.<p>Encapsulation is what people have done since the dawn of time. Mathematics is essentially a system for &quot;encapsulating internal complexity&quot;. In programming, the core abstraction mechanism is the function, which is essentially a device for &quot;encapsulating internal complexity&quot;. OOP is a step in the wrong direction, silently exposing internal complexity via mutable state. Remove mutable state and OOP reduces to &quot;partially applied functions&quot; in the mathematical sense, i.e. zero original content.