Nothing Special   »   [go: up one dir, main page]

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
  • (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
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Computing Surveys
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)240
  • Downloads (Last 6 weeks)13
Reflects downloads up to 20 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (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)Fostering scientific methods in simulations through symbolic regressionsPhysics Education10.1088/1361-6552/ad3cad59:4(045010)Online publication date: 1-May-2024
  • (2024)Reactamole: functional reactive molecular programmingNatural Computing: an international journal10.1007/s11047-024-09982-523:3(477-495)Online publication date: 1-Sep-2024
  • (2024)Reactive Programming. A Brief Analysis in the Context of Programming ParadigmsReimagining Capitalism in a Post-Globalization World10.1007/978-3-031-59858-6_14(203-213)Online publication date: 1-Sep-2024
  • (2024)Cognitive Programming AssistantAdvances in Information and Communication10.1007/978-3-031-54053-0_1(1-11)Online publication date: 17-Mar-2024
  • (2024)Performance Analysis of Web Server Side Reactive Programming6GN for Future Wireless Networks10.1007/978-3-031-53404-1_9(96-108)Online publication date: 9-Mar-2024
  • Show More Cited By

View Options

Get Access

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