2025-03-14 –, Talks B
Language: English
I'm a functional programmer at heart, and believe that the declarative semantics of functional programming are vastly superior to the kind of OOP we've been doing for the past 30 years. In most cases, that means based on imperative concepts, with some class, inheritance and subtyping structure added. And, as we will see in this talk: Subtyping polymorphism is not very good at avoiding
unsafe type conversions, inheritance is not very good ad code reuse, and classes are not very good at being extensible.
When it comes to building larger systems, however, we can get back to the ideas and concepts that drove the invention of Object Orientation: Independent entities that encapsulate and hide their own state, that communicate via message passing, and that can be exchanged at runtime without having to replace the entire system. And I'd argue that most of the systems we build today actually follow these concepts – in a good way! And in that sense, I believe that Object Orientation is actually a good and successful concept – just not on code level, but on a system and infrastructure level.
In this talk, we’re going to explore the history of the term “Object-Oriented”, how that concept evolved, where it went wrong, and how to redeem it.
When we think of OOP, we usually think of the unholy trifecta of "inheritance, (subtyping) polymorphism and (class) encapsulation", which comes with all kinds of problems: Subtyping polymorphism is notoriously bad at avoiding unsafe type conversions, inheritance is notoriously bad ad code reuse, and classes are notoriously bad at being extensible.
But when we go back to the original idea behind OOP, none of these were actually included. Instead, the idea was: Independent entities that encapsulate and hide their own state, that communicate via message passing, and that can be exchanged at runtime without having to replace the entire system.
Sounds familiar? Yes: Every microservice landscape is effectively an implementation of the original object-oriented paradigm. The take-home message is that Object Orientation is actually a good and successful concept – just not on code level, but on a system and infrastructure level.
Consultant at TNG Technology Consulting in Munich, Software Engineer and Product Owner (not simultaneously). Functional Programming and Haskell enthusiast. Playing around with compilers and domain specific languages both on the job and as a hobby. Interested in building and shaping software architecture, products and organizations.