To summarize, my previous post on Key-Value Observing (KVO) and Cocoa Bindings sparked significant discussion and influenced my ongoing work on Objective-Smalltalk. The ideas I presented, particularly regarding talks on software architecture, have led to promising early results which I’ve been able to present.
However, my statement that object-oriented programming (OOP) is inherently reactive, unlike functional programming which requires something additional to become interactive, was met with some pushback. Some, including members of the ReactiveCocoa community, interpreted my statement as a dismissal of Functional Reactive Programming (FRP)’s relevance.
This reaction was unexpected, as my point was primarily about the confusing overload of the term “reactive.” My intention was to highlight the inherent reactivity of objects responding to messages, a concept so fundamental that I didn’t delve into it deeply. This viewpoint is further supported by Conal Elliott, the originator of FRP, who has stated that frameworks like ReactiveCocoa and Elm do not actually constitute FRP.
To clarify, I’ll elaborate on the terminological confusion surrounding “reactive” in future posts. It’s worth noting that Conal Elliott himself has expressed concern over the misapplication of the term “Functional Reactive Programming” to systems deviating from its original definition. He emphasizes the continuous time aspect and precise mathematical meaning inherent in true FRP.
Let’s examine how “reactive” applies to objects. A 1995 article in Communication of the ACM “Special issue on object-oriented experiences and future trends” states that leading experts recognized the need for objects to become more proactive, contrasting with their existing reactive nature where they respond to messages.
Furthermore, the 1983 Blue Book defines objects as entities that respond to messages through their interface, highlighting this interaction as crucial to their nature. The definition of “respond” aligns closely with “react,” reinforcing the notion of objects being inherently reactive.
This understanding of objects as reactive entities is not limited to these sources. Numerous examples from various computer science literature, documentation, and lectures over the past few decades consistently describe objects as responding to messages. This concept is prevalent even within Apple’s Cocoa/Objective-C documentation.
In conclusion, traditional OOP is inherently reactive, while FRP, as defined by its creator, is not. The classification of frameworks like ReactiveCocoa and Elm remains unclear, but they do not fit the criteria of true FRP.
Stay tuned for a deeper dive into the true meaning of “Reactive Programming.”
Feel free to share your thoughts and comments here or on HN.
[..] Adding reactivity to an object-oriented language is, at first blush
[
The promise and the cost of object technology: a five-year forecast
Smalltalk 80, The Language and It’s Implementation
Design Principles Behind Smalltalk
Foundation of Object-Oriented Languages
The Be Book - System Overview - The Application Kit
Advances in Object-Oriented Graphics I
Object-Oriented Programming with Objective-C
Object-Oriented Information Engineering: Analysis, Design, and Implementation
CLIPS - object-oriented programming
Design Concepts in Programming Languages
