ACM Home Page
Please provide us with feedback. Feedback
Coherent reaction
Full text PdfPdf (457 KB)
Source
Conference on Object Oriented Programming Systems Languages and Applications archive
Proceeding of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications table of contents
Orlando, Florida, USA
SESSION: Onward! short papers session 1: adventureland jungle cruise table of contents
Pages 925-932  
Year of Publication: 2009
ISBN:978-1-60558-768-4
Author
Jonathan Edwards  MIT, Cambridge, MA, USA
Sponsor
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 13,   Downloads (12 Months): 13,   Citation Count: 0
Additional Information:

abstract   references   index terms  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1639950.1640058
What is a DOI?

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

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked 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.