The Object-Oriented (OO) paradigm revolutionized software engineering by changing how developers reason about systems. Instead of viewing code as a sequential list of instructions (procedural programming), OO treats software as a web of interacting "objects" that bundle both data (state) and behavior. This shift spans six decades, evolving from a solution for computer simulations into the dominant architecture of modern software.
The foundational concepts of OO were invented by Ole-Johan Dahl and Kristen Nygaard at the Norwegian Computing Center.
While Simula invented the mechanics, **Alan Kay , ** Dan Ingalls, and Adele Goldberg at Xerox PARC created the philosophy. Alan Kay coined the term "Object-Oriented Programming" (OOP).
Businesses loved the promise of OO (code reuse and better organization), but Smalltalk was too slow and resource-heavy for the computers of the time.
The Bridge: Bjarne Stroustrup solved this by creating "C with Classes" in 1979, which evolved into C++ in 1983.
The Impact: By adding OO capabilities on top of the ultra-fast, procedural C language, Stroustrup allowed developers to adopt OO design gradually without sacrificing performance. At the same time, Objective-C was developed and later became the foundation for Apple's macOS and iOS.
By the 1990s, the internet arrived, and software complexity exploded. C++ was powerful but notoriously hard to manage due to manual memory management (pointers) and platform-specific compilation.
By the 2010s, the software industry realized that forcing everything into a rigid OO structure could lead to over-engineered, bloated code (often criticized as "Kingdom of Nouns"). Deep inheritance hierarchies proved fragile and hard to modify.
Today, pure functional or pure object-oriented programming languages are rare. Both paradigms have advantages and disadvantages depending on the task. This leads to languages like Java since version 8, which support both approaches, or C#, which combines object-oriented and functional elements. Python is also a good example.
In these multi-paradigm languages, the best of OO (like encapsulation and interfaces) is combined with functional programming (immutability, first-class functions) to handle concurrent data processing efficiently.

Harald Glab-Plhak
Computer Science since 1992
© Harald Glab-Plhak (2026)