OOP is a kind of low level programming. At the heart, OOP is a sophisticated way to integrate state machines. The problem that OOP tried to solve was event handling (SIMULA and Smalltalk) The inversion of control aka. "state machine" is the standard solution for this problem.  It is the model that drive web frameworks and GUIs. Whenever there are asynchronous things like HTTP requests, interruptions , mouse events, there are state machines.  

OOP just split the state machine in smaller states machines, encapsulating each small piece of state together with the methods that serve them. So OOP is a more controlled way to deal with the problem of inversion of control. 

But OOP is like integrating chips without a serial bus. the data is in the form of state embedded in each component. This state must be extracted with explicit calls from one element to another ,with one-to-one connections.  With a serial bus the data flows and each element get its data on the fly. If a component need it he just catches it from the bus. Without a serial bus each element must explicitly connect to each other in precise ways, There is no composability. With a serial bus the hardware component can be plugged in a single socket.

OOP is like creating custom hardware everytime for every problem. since there is no composability, everything must be done from scratch. there are no reusable objects beyond basic containers encapsulated in objects. 

The reactive concept is basically an state machine with a single method handler: the reactive expression, which is pure more or less. This expression is called to respond every asynchronous event. This single handler is preceded by an event preprocessor, that is called  before calling  the reactive expression.

But by taming continuations, Monadic programming with the asynchronous effect can provide the software equivalent of the serial bus connector, and can let the programmer to express the flow of an entire application with asynchronous things happening all along the expression, not only on the top, like interruptions or events, that may trigger with multiple threads, all of this within in a single, seamless, monadic expression. And moreover, this application may be composable with others:


https://www.fpcomplete.com/user/agocorona/EDSL-for-hard-working-IT-programmers#the-oop-non-solution-half-solution

2015-05-20 17:42 GMT+02:00 David Kraeutmann <kane@kane.cx>:

OO is OOver.

...SCNR

On May 20, 2015 4:48 PM, "Aaron Levin" <vilevin@gmail.com> wrote:
Marketing is rarely about truth. While you are correct that "Reactive" programming is not specific to Functional Programming, I believe it is being conflated with it by industry and non-FPers.

Anyway, it was just a comment / observation I've had. As Ben said, we should steer clear of anything "Nooooooooooooo" related.

Marketing is hard. People are confusing. Sloganeering is an art. NoOO is doomed to produce too many memes. NotOnlyOO makes me think of YOLO for some reason.

Best,

Aaron Levin

On Wed, May 20, 2015 at 10:30 AM, Bardur Arantsson <spam@scientician.net> wrote:
On 05/20/2015 04:17 PM, Alois Cochard wrote:
> Well, I'm not sure to see how the "Reactive" marketing campaign would
> related to one about NoOO.
>
> If you look at akka source code (or even usage example), it's imo very far
> from the values you can read on the manifesto linked by Lars.
>

I think it's akka-streams[1] that's supposed to be following the
Reactive hype-train.

[1] Which is currently at 1.0-RC2, I think.

Regards,

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe



--
Aaron Levin / Weird Canada

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe




--
Alberto.