skip to main content
research-article

A survey on reactive programming

Published: 30 August 2013 Publication History

Abstract

Reactive programming has recently gained popularity as a paradigm that is well-suited for developing event-driven and interactive applications. It facilitates the development of such applications by providing abstractions to express time-varying values and automatically managing dependencies between such values. A number of approaches have been recently proposed embedded in various languages such as Haskell, Scheme, JavaScript, Java, .NET, etc. This survey describes and provides a taxonomy of existing reactive programming approaches along six axes: representation of time-varying values, evaluation model, lifting operations, multidirectionality, glitch avoidance, and support for distribution. From this taxonomy, we observe that there are still open challenges in the field of reactive programming. For instance, multidirectionality is supported only by a small number of languages, which do not automatically track dependencies between time-varying values. Similarly, glitch avoidance, which is subtle in reactive programs, cannot be ensured in distributed reactive programs using the current techniques.

References

[1]
Amagbegnon, P., Besnard, L., and Le Guernic, P. 1995. Implementation of the data-flow synchronous language signal. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'95). ACM Press, New York, 163--173.
[2]
Apt, K. R., Brunekreef, J., Partington, V., and Schaerf, A. 1998. Alma-o: An imperative language that supports declarative programming. ACM Trans. Program. Lang. Syst. 20, 1014--1066.
[3]
Benveniste, A., Caspi, P., Edwards, S. A., Halbwachs, N., Guernic, P. L., Robert, and Simone, D. 2003. The synchronous languages 12 years later. Proc. IEEE 91, 1, 64--83.
[4]
Berry, G. and Gonthier, G. 1992. The esterel synchronous programming language: Design, semantics, implementation. Sci. Comput. Program. 19, 2, 87--152.
[5]
Boussinot, F. 2006. FairThreads: Mixing cooperative and preemptive threads in c: Research articles. Concurr. Comput. Pract. Exper. 18, 5, 445--469.
[6]
Carreton, A. L., Mostinckx, S., Van Cutsem, T., and De Meuter, W. 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, 41--60.
[7]
Carzaniga, A., Rosenblum, D. S., and Wolf, A. L. 2000. Achieving scalability and expressiveness in an internet-scale event notification service. In Proceedings of the 19th Annual ACM Symposium on Principles of Distributed Computing (PODC'00). ACM Press, New York, 219--227.
[8]
Cooper, G. H. 2008. Integrating dataflow evaluation into a practical higher-order call-by-value language. Ph.D. thesis, Brown University, Providence, RI, USA. https://repository.library.brown.edu/studio/item/bdr:268/.
[9]
Cooper, G. H. and Krishnamurthi, S. 2006. Embedding dynamic dataflow in a call-by-value language. In Proceedings of the 15th European Conference on Programming Languages and Systems (ESOP'06). Springer, 294--308.
[10]
Courtney, A. 2001. Frappe: Functional reactive programming in java. In Proceedings of the 3rd International Symposium on Practical Aspects of Declarative Languages (PADL'01). Springer, 29--44.
[11]
Cutsem, T. V., Mostinckx, S., Boix, E. G., Dedecker, J., and Meuter, W. D. 2007. AmbientTalk: Object-oriented event-driven programming in mobile ad hoc networks. In Proceedings of the 26th International Conference of the Chilean Society of Computer Science (SCCC'07). IEEE Computer Society, Los Alamitos, CA, 3--12.
[12]
Eby, P. J. 2008. Trellis. http://pypi.python.org/pypi/Trellis.
[13]
Edwards, J. 2009. Coherent reaction. In Proceeding of the 24th ACM SIGPLAN Conference Companion on Object Oriented Programming Systems Languages and Applications. ACM Press, New York, 925--932.
[14]
Elliott, C. and Hudak, P. 1997. Functional reactive animation. In Proceedings of the 2nd ACM SIGPLAN International Conference on Functional Programming (ICFP'97). ACM Press, New York, 263--273.
[15]
Elliott, C., Schechter, G., Yeung, R., and Abi-Ezzi, S. S. 1994. Tbag: A high level framework for interactive, animated 3d graphics applications. In Proceedings of the 21st Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH'94). ACM Press, New York, 421--434.
[16]
Elliott, C. M. 2009. Push-pull functional reactive programming. In Proceedings of the 2nd ACM SIGPLAN Symposium on Haskell (Haskell'09). ACM Press, New York, 25--36.
[17]
Eugster, P. T., Felber, P. A., Guerraoui, R., and Kermarrec, A.-M. 2003. The many faces of publish/subscribe. ACM Comput. Surv. 35, 2, 114--131.
[18]
Felleisen, M., Findler, R. B., Flatt, M., and Krishnamurthi, S. 1998. The drscheme project: An overview. SIGPLAN Not. 33, 6, 17--23.
[19]
Foster, J. N., Greenwald, M. B., Moore, J. T., Pierce, B. C., and Schmitt, A. 2007. Combinators for bidirectional tree transformations: A linguistic approach to the view-update problem. ACM Trans. Program. Lang. Syst. 29, 3.
[20]
Halbwachs, N., Caspi, P., Raymond, P., and Pilaud, D. 1991. The synchronous dataflow programming language lustre. Proc. IEEE 79, 9, 1305--1320.
[21]
Hamilton, K. and Dyer, W. 2010. Reactive extension for .net. http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx.
[22]
Harel, D. and Politi, M. 1998. Modeling Reactive Systems with Statecharts: The Statemate Approach 1st Ed. McGraw-Hill, New York.
[23]
Huang, Y. and Garcia-Molina, H. 2004. Publish/subscribe in a mobile environment. Wirel. Netw. 10, 6, 643--652.
[24]
Hudak, P., Courtney, A., Nilsson, H., and Peterson, J. 2003. Arrows, robots, and functional reactive programming. In Summer School on Advanced Functional Programming. Lecture Notes in Computer Science, vol. 2638, Springer, 159--187.
[25]
Hughes, J. 2000. Generalising monads to arrows. Sci. Comput. Program. 37, 1--3, 67--111.
[26]
Jarvi, J., Marcus, M., Parent, S., Freeman, J., and Smith, J. N. 2008. Property models: From incidental algorithms to reusable components. In Proceedings of the 7th International Conference on Generative Programming and Component Engineering. ACM Press, New York, 89--98.
[27]
Johnston, W. M., Hanna, J. R. P., and Millar, R. J. 2004. Advances in dataflow programming languages. ACM Comput. Surv. 36, 1, 1--34.
[28]
Kalkman, C. 1995. Labview: A software system for data acquisition, data analysis, and instrument control. J. Clinical Monitor. Comput. 11, 1, 51--58.
[29]
Lee, E. A. and Messerschmitt, D. G. 1987. Synchronous data flow. Proc. IEEE. 75, 9, 1235--1245.
[30]
Maier, I., Rompf, T., and Odersky, M. 2010. Deprecating the observer pattern. Tech. rep. http://lampwww.epfl.ch/∼imaier/pub/DeprecatingObserversTR2010.pdf.
[31]
Mcdirmid, S. and Hsieh, W. C. 2006. SuperGlue: Component programming with object-oriented signals. In Proceedings of the 20th European Conference on Object-Oriented Programming (ECOOP'06). 206--229.
[32]
Meyerovich, L. A., Guha, A., Baskin, J., Cooper, G. H., Greenberg, M., Bromfield, A., and Krishnamurthi, S. 2009. Flapjax: A programming language for ajax applications. In Proceedings of the 24th ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA'09). ACM Press, New York, 1--20.
[33]
Microsoft C. 2007. LINQ: NET language-integrated query. http://msdn.microsoft.com/library/bb308959.aspx.
[34]
Miller, M., E. Tribble, D., and Shapiro, J. 2005. Concurrency among strangers: Programming in e as plan coordination. In Proceedings of the Symposium on Trustworthy Global Computing. Lecture Notes in Computer Science, vol. 3705, Springer, 195--229.
[35]
Miller, M. S. 2003. The reporter/reactor pattern. http://www.erights.org/javadoc/org/erights/e/elib/slot/EverReporter.html.
[36]
Nilsson, H., Peterson, J., and Hudak, P. 2003. Functional hybrid modeling. In Proceedings of the 5th International Symposium on Practical Aspects of Declarative Languages (PADL'03). Springer, 376--390.
[37]
Odersky, M., Altherr, P., Cremet, V., Emir, B., Maneth, S., et al. 2004. An overview of the scala programming language. Tech. rep. IC/2004/64, EPFL Lausanne, Switzerland.
[38]
Oracle. 1997. JavaBeans component model. http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138795.html.
[39]
Peterson, J. and Hager, G. 1999. Monadic robotics. In Proceedings of the 2nd Conference on Conference on Domain-Specific Languages (DSL'99). Vol. 2, USENIX Association, Berkeley, 8--8.
[40]
Peterson, J., Hudak, P., Reid, A., and Hager, G. D. 2001. Fvision: A declarative language for visual tracking. In Proceedings of the 3rd International Symposium on Practical Aspects of Declarative Languages (PADL'01). Springer, 304--321.
[41]
Pucella, R. R. 1998. Reactive programming in standard ml. In Proceedings of the International Conference on Computer Languages (ICCL'98). IEEE Computer Society, Los Alamitos, CA, 48--57.
[42]
Radul, A. 2009. Propagation networks: A flexible and expressive substrate for computation. Ph.D. thesis, MIT. http://web.mit.edu/∼axch/www/phd-thesis.pdf.
[43]
Radul, A. and Sussman, G. J. 2009. The (abridged) art of the propagator. In Proceedings of the International Lisp Conference (ILC'09).
[44]
Sculthorpe, N. 2011. Towards safe and efficient functional reactive programming. Ph.D. thesis, Nottingham, UK. http://www.ittc.ku.edu/∼neil/papers_and_talks/thesis.pdf.
[45]
Sperber, M. 2001a. Computer-assisted lighting design and control. Ph.D. thesis, University of Tbingen. http://tobias-lib.uni-tuebingen.de/dbt/volltexte/2001/266/.
[46]
Sperber, M. 2001b. Developing a stage lighting system from scratch. In Proceedings of the 6th ACM SIGPLAN International Conference on Functional Programming. ACM Press, New York, 122--133.
[47]
Stallman, R. M. and Sussman, G. J. 1977. Forward reasoning and dependency-directed backtracking in a system for computer-aided circuit analysis. Artif. Intell. 9, 2, 135--196.
[48]
Steele, Jr., G. L. 1980. The definition and implementation of a computer programming language based on constraints. Tech. rep., Cambridge, MA, USA. http://dspace.mit.edu/handle/1721.1/6933.
[49]
The Mathworks. 1994. Simulink - Simulation and model-based design. http://www.mathworks.nl/products/simulink/index.html.
[50]
Tilton, K. 2008. The cells manifesto. http://smuglispweeny.blogspot.com/2008/02/cells-manifesto.html.
[51]
Wan, Z. and Hudak, P. 2000. Functional reactive programming from first principles. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'00). ACM Press, New York, 242--252.
[52]
Wan, Z., Taha, W., and Hudak, P. 2001. Real-time frp. SIGPLAN Not. 36, 10, 146--156.
[53]
Wan, Z., Taha, W., and Hudak, P. 2002. Event-driven frp. In Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages (PADL'02). Springer, 155--172.
[54]
Whiting, P. G. and Pascoe, R. S. V. 1994. A history of data-flow languages. IEEE Ann. Hist. Comput. 16, 4, 38--59.
[55]
Zabih, R., Mcallester, D., and Chapman, D. 1987. Non-deterministic lisp with dependency-directed backtracking. In Proceedings of the 6th National Conference on Artificial Intelligence. AAAI Press, 59--64.

Cited By

View all
  • (2025)Syntalos: a software for precise synchronization of simultaneous multi-modal data acquisition and closed-loop interventionsNature Communications10.1038/s41467-025-56081-916:1Online publication date: 15-Jan-2025
  • (2024)Following the Writer’s Path to the Dynamically Coalescing Reactive Chains Design PatternAlgorithms10.3390/a1702005617:2(56)Online publication date: 25-Jan-2024
  • (2024)A Virtual Machine for Higher-Order ReactorsCompanion Proceedings of the 8th International Conference on the Art, Science, and Engineering of Programming10.1145/3660829.3660840(52-56)Online publication date: 11-Mar-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

ACM Computing Surveys  Volume 45, Issue 4
August 2013
490 pages
ISSN:0360-0300
EISSN:1557-7341
DOI:10.1145/2501654
Issue’s Table of Contents
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 ACM 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: 30 August 2013
Accepted: 01 August 2012
Revised: 01 December 2011
Received: 01 May 2010
Published in CSUR Volume 45, Issue 4

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Reactive programming
  2. dataflow programming
  3. event-driven applications
  4. functional reactive programming
  5. interactive applications
  6. reactive systems

Qualifiers

  • Research-article
  • Research
  • Refereed

Funding Sources

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)250
  • Downloads (Last 6 weeks)23
Reflects downloads up to 23 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Syntalos: a software for precise synchronization of simultaneous multi-modal data acquisition and closed-loop interventionsNature Communications10.1038/s41467-025-56081-916:1Online publication date: 15-Jan-2025
  • (2024)Following the Writer’s Path to the Dynamically Coalescing Reactive Chains Design PatternAlgorithms10.3390/a1702005617:2(56)Online publication date: 25-Jan-2024
  • (2024)A Virtual Machine for Higher-Order ReactorsCompanion Proceedings of the 8th International Conference on the Art, Science, and Engineering of Programming10.1145/3660829.3660840(52-56)Online publication date: 11-Mar-2024
  • (2024)Switching Mechanism for Update Timing of Time-Varying Values in an FRP Language for Small-Scale Embedded SystemsProceedings of the 2024 13th International Conference on Software and Computer Applications10.1145/3651781.3651789(45-54)Online publication date: 1-Feb-2024
  • (2024)Hypermedia Controls: Feral to FormalProceedings of the 35th ACM Conference on Hypertext and Social Media10.1145/3648188.3675127(52-64)Online publication date: 10-Sep-2024
  • (2024)Deterministic Coordination across Multiple TimelinesACM Transactions on Embedded Computing Systems10.1145/361535723:5(1-29)Online publication date: 14-Aug-2024
  • (2024)Leviathan: A Unified System for General-Purpose Near-Data Computing2024 57th IEEE/ACM International Symposium on Microarchitecture (MICRO)10.1109/MICRO61859.2024.00095(1278-1294)Online publication date: 2-Nov-2024
  • (2024)Heterogeneous System Modeling Using Timed- and Untimed-Based Models of Computation: A Case Study for Avionics Systems Domain2024 AIAA DATC/IEEE 43rd Digital Avionics Systems Conference (DASC)10.1109/DASC62030.2024.10749534(1-8)Online publication date: 29-Sep-2024
  • (2024)Fostering scientific methods in simulations through symbolic regressionsPhysics Education10.1088/1361-6552/ad3cad59:4(045010)Online publication date: 1-May-2024
  • (2024)Dynamic IoT deployment reconfiguration: A global-level self-organisation approachInternet of Things10.1016/j.iot.2024.10141228(101412)Online publication date: Dec-2024
  • Show More Cited By

View Options

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy