3 ms·
I think the author does characterize a primary distinguishing feature of OOP. That said, the post is a windy road with some dead-ends. Lots of statements that
by thrmsforbfast 8y ago
I think the author does characterize a primary distinguishing feature of OOP.
That said, the post is a windy road with some dead-ends. Lots of statements that are highly contestable (see other top-level comments for examples).
So here is, IMO, the important take-away from the post on what's novel/unique/significant about the combination of abstraction/program design/programming techniques we call oop:
> In most software systems when one function calls another, the runtime dependency and the source code dependency point in the same direction. The calling module depends on the called module. However, when polymorphism is injected between the two there is an inversion of the source code dependency. The calling module still depends on the called module at run time. However, the source code of the calling module does not depend upon the source code of the called module. Rather both modules depend upon a polymorphic interface. This inversion allows the called module to act like a plugin.
This is a particular programming style. The author calls it "polymorphism", but that's far too large a label. The paragraph above is specific way of using polymorphism. This sort of programming style can be done in functional languages, but I think it's fair to say that 1) OOP did it first, and 2) OOP provides the most natural setting for thinking about what's going on in these sort of "plugin architectures".
- jpochtar 8y agoCan you help me understand the pullqoute? I didn’t understand what he’s talking about at all. Is it about not having to recompile?
- thrmsforbfast 8y agoSee https://en.wikipedia.org/wiki/Inversion_of_control https://en.wikipedia.org/wiki/Inversion_of_control and https://en.wikipedia.org/wiki/Dependency_inversion_principle https://en.wikipedia.org/wiki/Dependency_inversion_principle And don't overthink it. You've probably seen this a million times in your work life. The description is indeed not great. It's not always about not having to recompile, but can be (see eg dependency injection)