skip to main content
10.1145/3191697.3214337acmotherconferencesArticle/Chapter ViewAbstractPublication PagesprogrammingConference Proceedingsconference-collections
research-article

Reactive programming experience with REScala

Published:09 April 2018Publication History

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle Scholar
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. Gregory H. Cooper and Shriram Krishnamurthi. 2006. Embedding Dynamic Dataflow in a Call-by-Value Language. In Lecture Notes in Computer Science. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Antony Courtney. 2001. Frappé: Functional Reactive Programming in Java. In PADL ’01 Proc. Third Int. Symp. Pract. Asp. Declar. Lang. 29–44. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Evan Czaplicki and Stephen Chong. 2013. Asynchronous Functional Reactive Programming for GUIs (PLDI ’13). ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 2660240Google ScholarGoogle Scholar
  11. Conal Elliott. 2009. Push-pull functional reactive programming. Proc. 2nd ACM SIGPLAN Symp. Haskell - Haskell ’09 (2009), 25. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 1596643Google ScholarGoogle Scholar
  13. Conal Elliott and Paul Hudak. 1997. Functional reactive animation, Vol. 32. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 2034812Google ScholarGoogle Scholar
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle Scholar
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle Scholar
  21. programming-journal.org/2018/2/5Google ScholarGoogle Scholar
  22. Jesse Liberty and Paul Betts. 2011. Programming Reactive Extensions and LINQ. Apress. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Ingo Maier and Martin Odersky. 2013. Higher-Order Reactive Programming with Incremental Lists (ECOOP’13). Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Alessandro Margara and Guido Salvaneschi. 2014. We Have a DREAM: Distributed Reactive Programming with Consistency Guarantees (DEBS ’14). ACM, New York, NY, USA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle Scholar
  27. 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 ScholarGoogle Scholar
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle Scholar
  35. Stefan Ramson and Robert Hirschfeld. 2017. Active Expressions: Basic Building Blocks for Reactive Programming. CoRR abs/1703.10859 (2017). arXiv: 1703.10859Google ScholarGoogle Scholar
  36. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  38. Guido Salvaneschi, Gerold Hintz, and Mira Mezini. 2014. REScala: Bridging Between Object-oriented and Functional Style in Reactive Applications (MODULARITY ’14). ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  40. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  41. <Programming’18> Companion, April 9–12, 2018, Nice, France Ragnar Mogk, Guido Salvaneschi, and Mira MeziniGoogle ScholarGoogle Scholar
  42. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  43. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  44. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  45. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  46. Zhanyong Wan and Paul Hudak. 2000. Functional reactive programming from first principles. ACM SIGPLAN Notices 35 (2000). Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. 349331Google ScholarGoogle Scholar

Index Terms

  1. Reactive programming experience with REScala

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Other conferences
      Programming '18: Companion Proceedings of the 2nd International Conference on the Art, Science, and Engineering of Programming
      April 2018
      244 pages
      ISBN:9781450355131
      DOI:10.1145/3191697

      Copyright © 2018 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 9 April 2018

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader