3 ms·
I don't think any interpretation of OOP comes close to being a full solution to software architecture. That being said I'll just copy a previous comment that br
by CyberDildonics 6y ago
I don't think any interpretation of OOP comes close to being a full solution to software architecture. That being said I'll just copy a previous comment that breaks down why I think 'OOP' get debated in a circle without any resolution:
"OOP" is really three different things that people conflate together.
1. Making data structures as tiny databases with an interface that simplifies storing and retrieving data correctly (no transformations in the class itself to other data types hopefully to minimize dependencies!)
2. The school taught java/old C++ debacle of inheritance. This is where things fall apart. Inheritance means not only dependencies but opaque dependencies. It almost always means pointer chasing and lots of allocations. It used to be necessary because it was the only way to get generic containers. The speed hit to use a chain of pointers was also much smaller. In modern times this destroys performance and is not needed due to templates.
3. Message passing - 'at a certain scale, everything becomes a network problem'. I think the flexibility in having this integrated into the core of a language like smalltalk is not a good trade off, but I do think message passing at a courser architectural level offers large benefits without limiting the speed of more granular and fundamental data structures and functions.
I think OOP will always be debated in a circle because people conflate these three aspects. The first I think is extremely useful and vital. The second I think is obsolete. The third I think should be treated as a higher level architecture approach with large chunks of data passed around to large non-trivial modules/libraries/nodes/plugins etc. The higher level can be more dynamic and flexible because the overhead for a flexible structure is much smaller if it is done with large chunks of data and not integrated into a language and used for vectors / hash maps / one line math functions, etc.
- agumonkey 6y agoHonestly the 3rd point is cute but message passing seems like level zero of networking approach for large scale systems. I wish to find more thorough models.
- CyberDildonics 6y agoI'm not sure what you mean exactly. Once you have a system of software running over multiple computers on a network you will have to copy data to other computers and treat everything as not just an asynchronous node, but a somewhat unreliable node as well. I think this is a given, but I don't think software architecture is very well solidified on how to scale large programs even within the same process.
- agumonkey 6y agoI mean at the software level I never saw design taking into account flow of message across the whole 'network', capacity, errors, redundancy, measure / optimizations. At best the message passing was a decoupling analogy.