New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify the differences between Functional Reactive Programming and Reactive Extensions #130

Closed
bontoJR opened this Issue Jul 22, 2015 · 6 comments

Comments

Projects
None yet
4 participants
@bontoJR
Copy link

bontoJR commented Jul 22, 2015

The general level of confusion about the differences (that are huge) between Reactive Extensions and Functional Reactive Programming is big.

I found many talks/presentation about Functional Reactive Programming where the topic is about Reactive Extensions and the Rx world in general, this is just a source of general confusion.

Example: one of the most watched talks on Youtube about RxJava is titled "Functional Reactive Programming with RxJava".

I would suggest to add a small paragraph to explain why they are different in the Introduction section, just to make things clear, what's your opinion about it?

@bontoJR bontoJR changed the title Clarify the difference with Functional Reactive Programming and Reactive Extensions Clarify the differences between Functional Reactive Programming and Reactive Extensions Jul 22, 2015

@DavidMGross

This comment has been minimized.

Copy link
Collaborator

DavidMGross commented Jul 22, 2015

We used to have a section on the old RxJava wiki that read:

"We sometimes call this approach Functional Reactive Programming because it
applies functions (lambdas/closures) in a reactive (asynchronous/push)
manner to asynchronous sequences of data. (This is not meant to be an
implementation of the similar but more restrictive “functional reactive
programming” model used in languages like Fran.)"

I didn't add any mentions of FRP when I restructured the documentation on
reactivex.io mostly because I was worried that even bringing the topic up
might muddy the waters. But perhaps it would be better to put in some
mention of the differences between Rx & FRP. How would you phrase it?

On Wed, Jul 22, 2015 at 7:46 AM, Junior B. notifications@github.com wrote:

The general level of confusion about the differences (that are huge)
between Reactive Extensions and Functional Reactive Programming is big.

I found many talks/presentation about Functional Reactive Programming
where the topic is about Reactive Extensions and the Rx world in general,
this is just a source of general confusion.

Example: one of the most watched talks on Youtube about RxJava is titled
"Functional Reactive Programming with RxJava".

I would suggest to add a small paragraph to explain why they are different
in the Introduction section, just to make things clear, what's you opinion
about it?


Reply to this email directly or view it on GitHub
#130.

David M. Gross
PLP Consulting

@DavidMGross DavidMGross self-assigned this Jul 22, 2015

@headinthebox

This comment has been minimized.

Copy link
Contributor

headinthebox commented Jul 22, 2015

Let's keep "FRP" for what it really stands for in honor of it's inventor (http://conal.net/talks/). Rx is not FRP and was explicitly designed as a discrete collection API on purpose (as opposed to continuous time varying values).

(Rx is also not functional programming either according to some https://queue.acm.org/detail.cfm?id=2611829. Lambdas in Java are just (sweet) syntactic sugar for anonymous inner classes and do not suddenly morph Java into a completely different beast. And with the introduction of back pressure, Rx is not not even truly reactive anymore according to the letter of the law. But those are different topics).

Plug your ears with wax to not get distracted by the siren song of buzzwords, it does not really matter in the end as long as the library provides the features you need to do your job. Just keep hacking on real world problems using Rx!

@bontoJR

This comment has been minimized.

Copy link
Author

bontoJR commented Jul 22, 2015

I can't say I am opposed to the fact that what matters is the final result I can achieve with a library during my daily work, at the end of the day is what it makes the difference.

On the other side I think that just this line could save newcomers from a hard day in googling about FRP when discovering Rx for the first time:

Let's keep "FRP" for what it really stands for in honor of it's inventor (http://conal.net/talks/). Rx is not FRP and was explicitly designed as a discrete collection API on purpose (as opposed to continuous time varying values).

My proposal was mostly driven by the rising number of people searching about these topics on the web (RxJava seems rising very fast).
screen shot 2015-07-22 at 22 38 23

The initial misconception is very common and drives newcomers into searching about Rx.NET, RxJava, RxJs, RxSwift, etc... as a Functional Reactive Programming implementation, ending reading about Behaviours/Signals and Events (like on ReactiveCocoa or Elm), but then discovering Observer, Observables, Subscriptions (or Disposables) instead of the expected former definitions. I think a single line can save a lot of troubles, but as I said before, this is just a personal opinion.

@bontoJR

This comment has been minimized.

Copy link
Author

bontoJR commented Aug 4, 2015

After 2 weeks of no interaction, I think I can close this.

@bontoJR bontoJR closed this Aug 4, 2015

@DavidMGross

This comment has been minimized.

Copy link
Collaborator

DavidMGross commented Aug 24, 2015

see also: #136

@nguyendat

This comment has been minimized.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment