Reactive Programming

6 thoughts
last posted Aug. 27, 2015, 11:33 a.m.
0
get stream as: markdown or atom
0

Stream about (functional) reactive programming techniques.

Related combined stream: https://thoughtstreams.io/combined/functional-reactive-programming/

0

Coursera course "Principles of Reactive Programming" (since 2013) by Martin Odersky (Scala programming language), Erik Meijer (Reactive Extensions library) and Roland Kuhn (Akka concurrency toolkit).

  • Week 1: Review of Principles of Functional Programming (1h:30)
  • Week 2: Functional programming and mutable state (2h:00).
  • Week 3: Futures (1h:30).
  • Week 4: Reactive stream processing (1h:30).
  • Week 5: Actors (2h:00).
  • Week 6: Supervision (1h:30).
  • Week 7: Conversation Patterns (2h:00).

https://www.coursera.org/course/reactive

0

The goal of Rx is to coordinate and orchestrate event-based and asynchronous computations such as low-latency sensor streams, Twitter and social media status updates, SMS messages, GPS coordinates, mouse moves and other UI events, Web sockets, and high-latency calls to Web services using standard object-oriented programming languages such as Java, C#, or Visual Basic.

via: Erik Meijer (2012): "Your Mouse is a Database", http://queue.acm.org/detail.cfm?id=2169076

0

When it comes to programming, my least favorite thing to work on is GUI back-ends. Traditional GUI programming involves a lot of mutable variables which represent the current state of your program; if at any point you want to modify part of the program, very often you have to take all of the potential states of your program into account. [...]

Reactive Programming aims to solve a lot of these issues. In a nutshell, all user-interaction with the UI can be represented as events; you can write code that responds to events by updating some state and UI. This isn't a new concept: anyone who has written applications in .NET is probably familiar with events. Reactive Programming takes events to the next level by allowing you to generate new events from existing ones: you can take an event that's fired when a Button is clicked, and make a new event that gets fired only when the Button was clicked with the left mouse button. You can take two events and combine them into a single event that's fired when either original event is fired. You can turn an event into a new event that returns the last two results of the original event. This alone can cut down on the complexity of a GUI implementation, but eventually you will still be manipulating state.

via: Stephen Elliott (2014): "Tutorial: Functional Reactive Programming in F# and WPF (Part 1)", http://steellworks.blogspot.com/2014/03/tutorial-functional-reactive.html

0

Wikipedia describes reactive programming as “a programming paradigm oriented around data flows and the propagation of change”. This description already gets to the core of what reactivity in the context of programming means. Now, the additional attribute “functional” in FRP as opposed to just reactive programming can [...] simply refer to a “programming paradigm for reactive programming using the building blocks of functional programming” [...]. We also note that FRP libraries differ from “non-functional” reactive libraries in that the former almost always provide functional combinators to manipulate reactive constructs and strive to be more declarative in general.

[...] We sum up that in this thesis we understand FRP as a paradigm around data flows, change propagation and time-varying values or event-streams using functional building blocks.

via: Eugen Kiss (2014): "Comparison of Object-Oriented and Functional Programming for GUI Development", http://www.eugenkiss.com/projects/thesis.pdf

0

Having seen both a naive use of ReactFX and a more reasonable, we take the opportunity to formulate an advice for profitably using ReactFX. One should try to minimize the use of subscribe as this function is inherently side-effectful. Ideally, subscribe should only be used at the boundary between ReactFX and non-ReactFX code.

via: Eugen Kiss (2014): "Comparison of Object-Oriented and Functional Programming for GUI Development", http://www.eugenkiss.com/projects/thesis.pdf