OOP: (Complex Systems)-Oriented Programming

Click for: original source

This article explores the original idea of OOP, as it has been invented by Alan Kay. OOP was invented as a “systems-oriented approach” to programming, a way to build complex systems. Unfortunately, the name “object-oriented” created confusion and deemphasized this meaning. By Eugene Naumenko.

Complex systems usually expose “liveness” property, among others - they evolve continuously, without shut downs, since the first moment they emerge, or are started. Complex systems development happens while running, it is undesirable, or even not possible to built them ahead of time and start/stop at random moments in time.

Let’s see what properties are required to build complex, evolving, live systems. These would be:

  • Universal modularity
  • Late binding
  • Runtime
  • Messaging
  • Internal state

We can see that all these properties have abstraction property. Remember, abstraction is not a vague undefined idea, but a simplification which creates a new level of meaning, new semantic objects (see Dijkstra’s definition, and also Wikipedia’s one). That that all the essential properties of OOP have the abstraction property is not a coincidence. Abstraction is a way to handle entropy, and managing entropy is the way to build complex systems, both from human comprehension and structural nature of such systems points of view. Interesting read!

[Read More]

Tags web-development oop app-development agile teams