3 ms·
Real life engineering is object oriented. We arrange objects with state and functions all the time. UI design is object oriented. We manipulate objects. We cli
by eternityforest 5y ago
Real life engineering is object oriented. We arrange objects with state and functions all the time.
UI design is object oriented. We manipulate objects. We click them and get pages of things we can do with them. Sometimes it's a bit more functional, often it's pretty directly an OOP experience.
What other paradigm can we use to directly model the actual application domain, without some constant need for mental translation?
If one accepts the constant translation, we already have functional programming.
If one doesn't... IS there any alternative to OOP, except domain specific visual languages like Excel, reactive bindings(Is that it's own paradigm), and declarative programming?
Declarative seems like the closest thing, but it doesn't seem like anyone has ever fully done away with the need for instructions in the general case.
Systemd is a marvel, because it's so declarative.
Perhaps instead of the next big paradigm, we should look for large classes of problems to unify under one declarative tool the way Excel and Systemd handle data and processes.
- ssivark 5y agoMultiple dispatch (it can be thought of as OOP on steroids) is particularly helpful for generic programming. It helps write really elegant Code with maximum reuse. I think Julia is the only contemporary language built around this. Some Lisp variants support this idea to different extents, with bolted-on features.
- karmakaze 5y agoIt's funny how OOP these days is taken to mean class-based with the popularity of C++ and Java. The proper/original OOP was all runtime and object based, rather than compile-time/type-based.
- watersb 5y agoObjective-C is an attempt to bring SmallTalk/Actor to C programming. https://news.ycombinator.com/item?id=21833331 https://news.ycombinator.com/item?id=21833331 I haven't yet tried to tweak a Swift macOS program, but in OS X era you could inject extra message handlers (object "methods") to a binary executable at runtime. So I don't know how well this year's Swift relates to a SmallTalk model.