this post was submitted on 11 Sep 2023
186 points (96.0% liked)

Asklemmy

43857 readers
1747 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!

  1. Open-ended question
  2. 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.
  3. Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
  4. Not ad nauseam inducing: please make sure it is a question that would be new to most members
  5. An actual topic of discussion

Looking for support?

Looking for a community?

~Icon~ ~by~ ~@Double_[email protected]~

founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[โ€“] [email protected] 2 points 1 year ago (1 children)

I appreciate your willingness to stand your ground and find your argument partially defensible.

There exist problems where OOP is a useful, convenient, and simple solution. Some of the zeal surrounding OOP is diminishing due to the inherent limitations concerning access and mutability, though that doesn't make the tool less useful when it solves a class of problems simply.

OOP is not the ultimate solution many touted it as, however, it is likely to remain as a major paradigm. The fad will continue to ebb and flow, as its shortcomings are not apparent until you reach a certain level of complexity. (Such as multi-threading interactions.) That level of complexity is not required until you reach expert/researcher programming capability on problems that don't have band-aid solutions or until you are forced to reconcile such issues by stricter compilers. Further, new programmers may not be aware of OOP until they need to solve a problem, re-introducing OOP as a cure-all.

As an unfortunate reminder, OOP has existed for 40 years, and a significant portion of advanced and capable programmers will call you a lunatic when you refuse to agree OOP is the ultimate solution. The class of problems the paradigm solves encompasses their entire career. Take the idealist or fanatic opinions with a grain of salt, thank them for their input, and let it slide off your shoulders.

[โ€“] [email protected] 2 points 1 year ago (1 children)

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".

[โ€“] [email protected] 2 points 1 year ago* (last edited 1 year ago)

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.