this post was submitted on 11 Sep 2023
185 points (96.0% liked)
Asklemmy
43781 readers
877 users here now
A loosely moderated place to ask open-ended questions
Search asklemmy ๐
If your post meets the following criteria, it's welcome here!
- Open-ended question
- Not offensive: at this point, we do not have the bandwidth to moderate overtly political discussions. Assume best intent and be excellent to each other.
- Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
- Not ad nauseam inducing: please make sure it is a question that would be new to most members
- An actual topic of discussion
Looking for support?
Looking for a community?
- Lemmyverse: community search
- sub.rehab: maps old subreddits to fediverse options, marks official as such
- [email protected]: a community for finding communities
~Icon~ ~by~ ~@Double_[email protected]~
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
A thing that complicated opinions and statements about OO is that it is not a clear cut thing. It is a collection of features that have become associated together but which don't have to be, and not everyone agrees on which are required for something to be OO, or how important or useful (or harmful) each is.
What is most fad-like about it, IMO, is the conception that it is a coherent "paradigm".
Please forgive the meandering reply.
As far as I'm concerned, OO is a mental model for how to handle any noun. Linux is a good example for OOP, in that, "Everything is a file." Linux does this amazingly well; even interfaces that read data from USB ports are "files."
However, this comes with some limitations. Kernel threads are not very accessible. If you tried to set up a single operating system over multiple computers, you would need some very severe modifications to Linux, and the implementation would likely have many sharp corners to snag on. (Where is this file? What hardware "owns/runs" it? How does Computer 2's hardware take over, or modify a value currently in Computer 1's CPU? Etc. As a side note, last I checked, the most common method of distributed computation with Linux is to install an OS on each computer, and have them report to a master or scheduling computer. Which, while functional, is reliant on separate components functioning on their own, independently of the scheduler.)
I'm stepping well out of my wheelhouse to give a contrasting example. Please be gentle with corrections. Kubernetes, designed to handle multiple pieces of hardware, is written ~~decoratively~~ declaratively without OOP, I believe. Each piece of hardware becomes a node run by a control plane, which is much the same thing as an OS, but lighter, with less capabilities and independence. (?)
This is not to say you can't do the same thing with a custom Linux distro, but using an entirely OO pattern will create sharper corners.
Each paradigm has its own strengths and use-cases; and each their own weaknesses and limitations.