History of Object Oriented Programing, by Casey Muratori (2025)
The Real History, of the Object Oriented Programing (a inheritance hierarchy of domain model. The worst damage to programing.)
Key figures:
- Douglass T Ross. (created Automatically Programmed Tool. 1960).
- Ivan Sutherland (Sketchpad. 1963. (Origin of Computer Aided Design System and Graphical User Interface))
- Tony Hoare (computer scientist)
- Ole-Johan Dahl and Kristen Nygaard (Simula. 1962)
- Alan Kay (Smalltalk. 1972)
- Bjarne Stroustrup (Cpp. 1985).
The primary culprit, that made an idea into cancer, is Bjarne Stroustrup with his C++ aka C with Classes.
Secondary crackpot, is Alan Kay.
Casey Muratori on the History of Object Oriented Programing
- https://youtu.be/wo84LFzx5nI
- Casey Muratori – The Big OOPs: Anatomy of a Thirty-five-year Mistake – BSC 2025
- Better Software Conference
- Jul 17, 2025
- Casey Muratori's talk at BSC 2025
Video Summary (Generated by AI.)
- Casey Muratori's talk, "The Big OOPs: Anatomy of a Thirty-five-year Mistake," critically examines the historical development and widespread adoption of object-oriented programming (OOP), specifically its emphasis on compile-time hierarchies that directly mirror real-world domain models.
- He begins by introducing Looking Glass Studios and their game Thief: The Dark Project (1:22).
- In 1998, Looking Glass developed what Muratori identifies as the first commercially released Entity Component System (ECS) (4:16).
- This approach diverged from traditional OOP by organizing encapsulation boundaries around systems (like physics or combat) rather than around entities or objects themselves (5:11).
- This highlights a fundamental difference in architectural thinking.
- Muratori then frames what he considers the "big mistake" in OOP: the pervasive idea that software hierarchies should directly map to real-world domain models (10:05-11:12).
- He presents historical evidence, citing Bjarne Stroustrup's early papers on C++ (11:47) and Alan Kay's work with Smalltalk (14:10), to demonstrate that this hierarchical, inheritance-heavy approach was indeed a core tenet of OOP's early promotion.
- Both creators, he argues, initially advocated for deep inheritance structures that mimicked real-world classifications (12:29-13:01, 14:46-14:51).
- He dives into Bjarne Stroustrup's personal journey, explaining that Stroustrup's motivation for creating C with Classes (later C++) stemmed from his experience simulating distributed systems in Simula (17:44).
- While Simula's class concept initially seemed beneficial for direct domain mapping, Stroustrup faced significant practical issues like slow compile times and inefficient garbage collection (22:50-24:12).
- This led him to rewrite his simulations in BCPL, a language with minimal type checking (24:27-24:41).
- Muratori emphasizes that Stroustrup's subsequent design of C++ was driven by his personal need for type protection, error checking, and runtime efficiency (25:56-27:59), not initially for large-team collaboration (25:01-25:56).
- He also notes that Stroustrup used inheritance for code reuse early on, a practice he later advised against in favor of templates (29:00-30:35).
- Finally, Muratori traces the origin of the class concept back to Simula, developed by Ole-Johan Dahl and Kristen Nygaard at the Norwegian Computing Center in 1962 (32:06-33:14).
- Simula was designed as a simulation language for "operations research" (33:28), which involves optimizing system behaviors.
- The class concept was a natural fit for modeling discrete processes in simulations.
Object Oriented Programing
- Object Oriented Programing Jargons and Complexities (Explained as Functional Programing)
- History of Object Oriented Programing, by Casey Muratori (2025)
- Object Oriented Programing, Origin of Inheritance (Simula)
- Alan Kay on Object Oriented Programing
- Comp Lang: Iterator, Enumerator, Abstraction Went Wrong (2016)
- Iterators: Signs of Weakness in Object-Oriented Languages (By Henry G Baker, 1992)
- Jargon: Polymorphism and Dispatch (2015)
- Meaning of Object in Computer Languages