ABSTRACT
Reactive programming is a recent programming paradigm that specifically targets reactive applications. Over the years, a number of reactive languages have been proposed, with different combinations of features, and various target domains.
Unfortunately, there is a lack of knowledge about the experience of developing software applications with reactive languages. As a result, a number of design choices in reactive programming languages remain disconnected from experience and the applicability of reactive programming to various domains remains unclear.
To bridge this gap, we report on our experience of developing reactive applications as well as teaching reactive programming in REScala, which we collected over several years of research and practice.
- Alexander Alexandrov, Rico Bergmann, Stephan Ewen, Johann-Christoph Freytag, Fabian Hueske, Arvid Heise, Odej Kao, Marcus Leich, Ulf Leser, Volker Markl, Felix Naumann, Mathias Peters, Astrid Rheinländer, Matthias Sax, Sebastian Schelter, Mareike Höger, Kostas Tzoumas, and Daniel Warneke. 2014. The Stratosphere platform for big data analytics. VLDB 23 (2014). Google ScholarDigital Library
- Herman Banken, Erik Meijer, and Georgios Gousios. 2018. Debugging Data-Flows in Reactive Programs. In Proceedings of the 39th International Conference on Software Engineering (ICSE ’18). ACM, New York, NY, USA. Google ScholarDigital Library
- Elisa Gonzalez Boix, Kevin Pinte, and Wolfgang De Meuter. 2013. Object-oriented Reactive Programming is Not Reactive Object-oriented Programming. (2013). http://soft.vub.ac.be/Publications/2013/vub-soft-tr-13-16.pdfGoogle Scholar
- Ben Calus, Bob Reynders, Dominique Devriese, Job Noorman, and Frank Piessens. 2017. FRP IoT Modules as a Scala DSL. In Proceedings of the 4th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems (REBLS 2017). ACM, New York, NY, USA, 15–20. Google ScholarDigital Library
- Andoni Lombide Carreton, Stijn Mostinckx, Tom Van Cutsem, and Wolfgang De Meuter. 2010. Loosely-coupled Distributed Reactive Programming in Mobile Ad Hoc Networks. In Proceedings of the 48th International Conference on Objects, Models, Components, Patterns (TOOLS’10). Springer-Verlag, Berlin, Heidelberg, 41–60. http://dl.acm.org/citation.cfm?id=1894386.1894389 Google ScholarDigital Library
- Gregory H. Cooper and Shriram Krishnamurthi. 2006. Embedding Dynamic Dataflow in a Call-by-Value Language. In Lecture Notes in Computer Science. Google ScholarDigital Library
- Antony Courtney. 2001. Frappé: Functional Reactive Programming in Java. In PADL ’01 Proc. Third Int. Symp. Pract. Asp. Declar. Lang. 29–44. Google ScholarDigital Library
- Evan Czaplicki and Stephen Chong. 2013. Asynchronous Functional Reactive Programming for GUIs (PLDI ’13). ACM. Google ScholarDigital Library
- Joscha Drechsler, Guido Salvaneschi, Ragnar Mogk, and Mira Mezini. 2014. Distributed REScala: An Update Algorithm for Distributed Reactive Programming (OOPSLA ’14). ACM, New York, NY, USA. Google ScholarDigital Library
- 2660240Google Scholar
- Conal Elliott. 2009. Push-pull functional reactive programming. Proc. 2nd ACM SIGPLAN Symp. Haskell - Haskell ’09 (2009), 25. Google ScholarDigital Library
- 1596643Google Scholar
- Conal Elliott and Paul Hudak. 1997. Functional reactive animation, Vol. 32. ACM. Google ScholarDigital Library
- Bernd Finkbeiner, Felix Klein, Ruzica Piskac, and Mark Santolucito. 2017. Vehicle Platooning Simulations with Functional Reactive Programming. In Proceedings of the 1st International Workshop on Safe Control of Connected and Autonomous Vehicles (SCAV’17). ACM, New York, NY, USA, 43–47. Google ScholarDigital Library
- Nate Foster, Rob Harrison, Michael J. Freedman, Christopher Monsanto, Jennifer Rexford, Alec Story, and David Walker. 2011. Frenetic: A Network Programming Language. SIGPLAN Not. 46, 9 (Sept. 2011). Google ScholarDigital Library
- 2034812Google Scholar
- Nate Foster, Rob Harrison, Michael J. Freedman, Christopher Monsanto, Jennifer Rexford, Alec Story, and David Walker. 2011. Frenetic: a network programming language. In Proceedings of the 16th ACM SIGPLAN international conference on Functional programming (ICFP ’11). ACM, New York, NY, USA, 279–291. Google ScholarDigital Library
- Paul Hudak, Antony Courtney, Henrik Nilsson, and John Peterson. 2003. Arrows, Robots, and Functional Reactive Programming. In Summer School on Advanced Functional Programming 2002, Oxford University (Lecture Notes in Computer Science), Vol. 2638. Springer-Verlag, 159–187.Google Scholar
- Alan Jeffrey. 2012. LTL Types FRP: Linear-time Temporal Logic Propositions As Types, Proofs As Functional Reactive Programs. In Proceedings of the Sixth Workshop on Programming Languages Meets Program Verification (PLPV ’12). ACM, New York, NY, USA, 49–60. Google ScholarDigital Library
- Tetsuo Kamina and Tomoyuki Aotani. 2018. Harmonizing Signals and Events with a Lightweight Extension to Java. The Art, Science, and Engineering of Programming, 2018, Vol. 2, Issue 3, Article 5. (2018).Google Scholar
- programming-journal.org/2018/2/5Google Scholar
- Jesse Liberty and Paul Betts. 2011. Programming Reactive Extensions and LINQ. Apress. Google ScholarDigital Library
- Ingo Maier and Martin Odersky. 2013. Higher-Order Reactive Programming with Incremental Lists (ECOOP’13). Google ScholarDigital Library
- Alessandro Margara and Guido Salvaneschi. 2014. We Have a DREAM: Distributed Reactive Programming with Consistency Guarantees (DEBS ’14). ACM, New York, NY, USA. Google ScholarDigital Library
- Leo A. Meyerovich, Arjun Guha, Jacob Baskin, Gregory H. Cooper, Michael Greenberg, Aleks Bromfield, and Shriram Krishnamurthi. 2009. Flapjax: A Programming Language for Ajax Applications, Vol. 44. ACM Press. Google ScholarDigital Library
- Ragnar Mogk, Lars Baumgärtner, Guido Salvaneschi, Bernd Freisleben, and Mira Mezini. 2018. Fault Tolerance in Interactive Applications. In European Conference on Object-Oriented Programming (ECOOP 2018). Dagstuhl, Germany.Google Scholar
- Florian Myter, Tim Coppieters, Christophe Scholliers, and Wolfgang De Meuter. 2016. I now pronounce you reactive and consistent: handling distributed and replicated state in reactive programming. New York, New York, USA.Google Scholar
- Florian Myter, Tim Coppieters, Christophe Scholliers, and Wolfgang De Meuter. 2016. I Now Pronounce You Reactive and Consistent: Handling Distributed and Replicated State in Reactive Programming. In Proceedings of the 3rd International Workshop on Reactive and Event-Based Languages and Systems (REBLS 2016). ACM, New York, NY, USA, 1–8. Google ScholarDigital Library
- Florian Myter, Christophe Scholliers, and Wolfgang De Meuter. 2017. Handling Partial Failures in Distributed Reactive Programming. 4th Workshop on Reactive and Event-based Languages & Systems (2017). Google ScholarDigital Library
- Florian Myter, Christophe Scholliers, and Wolfgang De Meuter. 2017. Handling Partial Failures in Distributed Reactive Programming. In Proceedings of the 4th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems (REBLS 2017). ACM, New York, NY, USA, 1–7. Google ScholarDigital Library
- Ryan Newton, Greg Morrisett, and Matt Welsh. 2007. The Regiment Macroprogramming System. In 2007 6th International Symposium on Information Processing in Sensor Networks. IEEE. Google ScholarDigital Library
- Henrik Nilsson, Antony Courtney, and John Peterson. 2002. Functional reactive programming, continued. In Proc. ACM SIGPLAN Work. Haskell - Haskell ’02. ACM Press, 51–64. Google ScholarDigital Library
- John Peterson, Valery Trifonov, and Andrei Serjantov. 2000. Parallel functional reactive programming. 16–31. http://link.springer.com/chapter/10.1007/ 3-540-46584-7_2 Google ScholarDigital Library
- José Proença and Carlos Baquero. 2017. Quality-Aware Reactive Programming for the Internet of Things. In Fundamentals of Software Engineering - 7th International Conference, FSEN 2017, Tehran, Iran, April 26-28, 2017, Revised Selected Papers (Lecture Notes in Computer Science), Mehdi Dastani and Marjan Sirjani (Eds.), Vol. 10522. Springer, 180–195.Google Scholar
- Stefan Ramson and Robert Hirschfeld. 2017. Active Expressions: Basic Building Blocks for Reactive Programming. CoRR abs/1703.10859 (2017). arXiv: 1703.10859Google Scholar
- Bob Reynders, Dominique Devriese, and Frank Piessens. 2014. Multi-Tier Functional Reactive Programming for the Web. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (Onward! 2014). ACM, New York, NY, USA, 55–68. Google ScholarDigital Library
- Guido Salvaneschi, Sven Amann, Sebastian Proksch, and Mira Mezini. 2014. An Empirical Study on Program Comprehension with Reactive Programming (FSE 2014). ACM, 564–575. Google ScholarDigital Library
- Guido Salvaneschi, Gerold Hintz, and Mira Mezini. 2014. REScala: Bridging Between Object-oriented and Functional Style in Reactive Applications (MODULARITY ’14). ACM. Google ScholarDigital Library
- Guido Salvaneschi and Mira Mezini. 2016. Debugging for Reactive Programming. In Proceedings of the 38th International Conference on Software Engineering (ICSE ’16). ACM, New York, NY, USA, 796–807. Google ScholarDigital Library
- Guido Salvaneschi, Sebastian Proksch, Sven Amann, Sarah Nadi, and Mira Mezini. 2017. On the Positive Effect of Reactive Programming on Software Comprehension: An Empirical Study. IEEE Trans. Softw. Eng. 43, 12 (Dec. 2017), 1125–1143. Google ScholarDigital Library
- <Programming’18> Companion, April 9–12, 2018, Nice, France Ragnar Mogk, Guido Salvaneschi, and Mira MeziniGoogle Scholar
- Kensuke Sawada and Takuo Watanabe. 2016. Emfrp: A Functional Reactive Programming Language for Small-scale Embedded Systems. In Companion Proceedings of the 15th International Conference on Modularity (MODULARITY Companion 2016). ACM, New York, NY, USA, 36–44. Google ScholarDigital Library
- Neil Sculthorpe and Henrik Nilsson. 2009. Safe functional reactive programming through dependent types. ACM Sigplan Not. 44, 9 (2009), 23–34. http://dl.acm. org/citation.cfm?id=1596558 Google ScholarDigital Library
- Tom Van Cutsem, Elisa Gonzalez Boix, Christophe Scholliers, Andoni Lombide Carreton, Dries Harnie, Kevin Pinte, and Wolfgang De Meuter. 2014. AmbientTalk: programming responsive mobile peer-to-peer applications with actors. Computer Languages, Systems & Structures 40, 3-4 (Oct. 2014). 2014.05.002 Google ScholarDigital Library
- Atze van der Ploeg and Koen Claessen. 2015. Practical principled FRP: forget the past, change the future, FRPNow! ACM, 302–314. http://dl.acm.org/citation. cfm?id=2784752 Google ScholarDigital Library
- Zhanyong Wan and Paul Hudak. 2000. Functional reactive programming from first principles. ACM SIGPLAN Notices 35 (2000). Google ScholarDigital Library
- 349331Google Scholar
Index Terms
- Reactive programming experience with REScala
Recommendations
REScala: bridging between object-oriented and functional style in reactive applications
MODULARITY '14: Proceedings of the 13th international conference on ModularityTraditionally, object-oriented software adopts the Observer pattern to implement reactive behavior. Its drawbacks are well-documented and two families of alternative approaches have been proposed, extending object-oriented languages with concepts from ...
What Is Object-Oriented Programming?
The meaning of the term 'object oriented' is examined in the context of the general-purpose programming language C++. This choice is made partly to introduce C++ and partly because C++ is one of the few languages that supports data abstraction, object-...
An empirical study on program comprehension with reactive programming
FSE 2014: Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software EngineeringStarting from the first investigations with strictly functional languages, reactive programming has been proposed as THE programming paradigm for reactive applications. The advantages of designs based on this style over designs based on the Observer ...
Comments