[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/1639950.1640058acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
short-paper

Coherent reaction

Published: 25 October 2009 Publication History

Abstract

Side effects are both the essence and bane of imperative programming. The programmer must carefully coordinate actions to manage their side effects upon each other. Such coordination is complex, error-prone, and fragile. Coherent reaction is a new model of change-driven computation that coordinates effects automatically. State changes trigger events called reactions that in turn change other states. A coherent execution order is one in which each reaction executes before any others that are affected by its changes. A coherent order is discovered iteratively by detecting incoherencies as they occur and backtracking their effects. Unlike alternative solutions, much of the power of imperative programming is retained, as is the common sense notion of mutable state. Automatically coordinating actions lets the programmer express what to do, not when to do it.
Coherent reactions are embodied in the Coherence language, which is specialized for interactive applications like those common on the desktop and web. The fundamental building block of Coherence is the dynamically typed mutable tree. The fundamental abstraction mechanism is the virtual tree, whose value is lazily computed, and whose behavior is generated by coherent reactions.

References

[1]
G. Berry and G. Gonthier. The synchronous programming language ESTEREL: Design, semantics, implementation. Science of Computer Programming, 19(2), 1992.
[2]
F. Brooks. No silver bullet: Essence and accidents of software engineering. IEEE computer, 20(4), 1987.
[3]
S. Burbeck. How to use Model-View-Controller (MVC). Technical report, ParcPlace Systems Inc, 1992.
[4]
E. Burns and R. Kitain. JavaServer Faces Specification v1.2. Technical report, Sun Microsystems, 2006.
[5]
P. Caspi, D. Pilaud, N. Halbwachs, and J. Plaice. LUSTRE: A declarative language for programming synchronous systems. In 14th ACM Symposium on Principles of Programming Languages, 1987.
[6]
G. Cooper and S. Krishnamurthi. Embedding Dynamic Dataflow in a Call-by-Value Language. In 15th European Symposium on Programming, ESOP 2006, 2006.
[7]
J. Dennis. First version of a data flow procedure language. Lecture Notes In Computer Science; Vol. 19, 1974.
[8]
P. J. Eby. Trellis. June 2009. URL http://peak.telecommunity.com/DevCenter/Trellis.
[9]
J. Edwards. Subtext: Uncovering the simplicity of programming. In OOPSLA '05: Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, pages 505--518. ACM Press, 2005.
[10]
J. Edwards. Modular Generation and Customization. Technical report, Massachusetts Institute of Technology Computer Science and Artificial Intelligence Laboratory TR-2008-061, October 2008. URL http://hdl.handle.net/1721.1/42895.
[11]
J. Edwards. Coherent Reaction. Technical report, Massachusetts Institute of Technology Computer Science and Artificial Intelligence Laboratory TR-2009-024, June 2009. URL http://hdl.handle.net/1721.1/45563.
[12]
C. Elliott and P. Hudak. Functional reactive animation. In International Conference on Functional Programming, 1997.
[13]
J. Field, M. Marinescu, and C. Stefansen. Reactors: A Data-Oriented Synchronous/Asynchronous Programming Model for Distributed Applications. In Coordination 2007, Paphos, Cyprus, June 6--8, 2007, Proceedings. Springer, 2007.
[14]
J. N. Foster, M. B. Greenwald, J. T. Moore, B. C. Pierce, and A. Schmitt. Combinators for bidirectional tree transformations: A linguistic approach to the viewupdate problem. ACM Transactions on Programming Languages and Systems, 29(3), May 2005.
[15]
D. Harel. Statecharts: A visual formalism for complex systems. Sci. Comput. Program., 8(3), 1987.
[16]
D. Harel and A. Pnueli. On the development of reactive systems. In Logics and models of concurrent systems. Springer-Verlag New York, Inc., 1985.
[17]
G. T. Heineman. An Instance-Oriented Approach to Constructing Product Lines from Layers. Technical report, WPI CS Tech Report 05--06, 2005.
[18]
P. Hudak, A. Courtney, H. Nilsson, and J. Peterson. Arrows, robots, and functional reactive programming. Lecture Notes in Computer Science, 2638, 2003.
[19]
J. Hughes. Why Functional Programming Matters. Computer Journal, 32(2), 1989.
[20]
A. Hunt. Pragmatic Thinking and Learning: Refactor Your Wetware (Pragmatic Programmers). 2008.
[21]
J. Jarvi, M. Marcus, S. Parent, J. Freeman, and J. N. Smith. Property models: From incidental algorithms to reusable components. In Proceedings of the 7th international conference on Generative Programming and Component Engineering, 2008.
[22]
W. M. Johnston, J. R. P. Hanna, and R. J. Millar. Advances in dataflow programming languages. ACM Comput. Surv., 36(1), 2004.
[23]
A. C. Kay. The early history of smalltalk. In HOPL-II: The second ACM SIGPLAN conference on History of programming languages. ACM, 1993.
[24]
S. Mcdirmid and W. Hsieh. Superglue: Component programming with object--oriented signals. In Proc. of ECOOP. Springer, 2006.
[25]
J. Noble, A. Taivalsaari, and I. Moore. Prototype-Based Programming: Concepts, Languages and Applications. Springer, 2001.
[26]
K. Pope and S. Krasner. A Cookbook for using the Model-View-Controller User Interface Paradigm in Smalltalk-80. Journal of Object-Oriented Programming, 1, 1988.
[27]
P. Wadler. Monads for functional programming. Lecture Notes In Computer Science; Vol. 925, 1995.
[28]
M. N. Wegman. What it's like to be a POPL referee; or how to write an extended abstract so that it is more likely to be accepted. ACM SIGPLAN Notices, 21(5), 1986.

Cited By

View all
  • (2023) Prisma : A Tierless Language for Enforcing Contract-client Protocols in Decentralized ApplicationsACM Transactions on Programming Languages and Systems10.1145/360462945:3(1-41)Online publication date: 23-Sep-2023
  • (2021)Poker: visual instrumentation of reactive programs with programmable probesProceedings of the 8th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems10.1145/3486605.3486785(14-26)Online publication date: 18-Oct-2021
  • (2021)Lyra 2: Designing Interactive Visualizations by DemonstrationIEEE Transactions on Visualization and Computer Graphics10.1109/TVCG.2020.303036727:2(304-314)Online publication date: Feb-2021
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
October 2009
502 pages
ISBN:9781605587684
DOI:10.1145/1639950
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 25 October 2009

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. bidirectional functions
  2. functional reactive programming
  3. interactive systems
  4. reactive systems
  5. synchronous reactive programming
  6. trees

Qualifiers

  • Short-paper

Conference

OOPSLA09
Sponsor:

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)11
  • Downloads (Last 6 weeks)3
Reflects downloads up to 13 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2023) Prisma : A Tierless Language for Enforcing Contract-client Protocols in Decentralized ApplicationsACM Transactions on Programming Languages and Systems10.1145/360462945:3(1-41)Online publication date: 23-Sep-2023
  • (2021)Poker: visual instrumentation of reactive programs with programmable probesProceedings of the 8th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems10.1145/3486605.3486785(14-26)Online publication date: 18-Oct-2021
  • (2021)Lyra 2: Designing Interactive Visualizations by DemonstrationIEEE Transactions on Visualization and Computer Graphics10.1109/TVCG.2020.303036727:2(304-314)Online publication date: Feb-2021
  • (2020)Oracle-efficient Online Learning and Auction DesignJournal of the ACM10.1145/340220367:5(1-57)Online publication date: 29-Sep-2020
  • (2020)Simplifying CPS Application Development through Fine-grained, Automatic Timeout PredictionsACM Transactions on Internet of Things10.1145/33859601:3(1-30)Online publication date: 1-Jun-2020
  • (2020)Reactors: A Deterministic Model for Composable Reactive SystemsCyber Physical Systems. Model-Based Design10.1007/978-3-030-41131-2_4(59-85)Online publication date: 18-Feb-2020
  • (2019)A Survey of Asynchronous Programming Using Coroutines in the Internet of Things and Embedded SystemsACM Transactions on Embedded Computing Systems10.1145/331961818:3(1-21)Online publication date: 5-Jun-2019
  • (2018)Distributed system development with ScalaLociProceedings of the ACM on Programming Languages10.1145/32764992:OOPSLA(1-30)Online publication date: 24-Oct-2018
  • (2018)Fundamental concepts of reactive control for autonomous dronesCommunications of the ACM10.1145/326441761:10(96-104)Online publication date: 26-Sep-2018
  • (2018)Versatile event correlation with algebraic effectsProceedings of the ACM on Programming Languages10.1145/32367622:ICFP(1-31)Online publication date: 30-Jul-2018
  • Show More Cited By

View Options

Login options

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