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

skip to main content
10.1145/2661136.2661145acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Programming with Managed Time

Published: 14 October 2014 Publication History

Abstract

Most languages expose the computer's ability to globally read and write memory at any time. Programmers must then choreograph control flow so all reads and writes occur in correct relative orders, which can be difficult particularly when dealing with initialization, reactivity, and concurrency. Just as many languages now manage memory to unburden us from properly freeing memory, they should also manage time to automatically order memory accesses for us in the interests of comprehensibility, correctness, and simplicity. Time management is a general language feature with a large design space that is largely unexplored; we offer this perspective to relate prior work and guide future research.
We introduce Glitch as a form of managed time that replays code for an appearance of simultaneous memory updates, avoiding the need for manual order. The key to such replay reaching consistent program states is an ability to reorder and rollback updates as needed, restricting the imperative model while retaining the basic concepts of memory access and control flow. This approach can also handle code to enable live programming that incrementally revises program executions in an IDE under arbitrary code changes.

References

[1]
P. Alvaro, N. Conway, J. Hellerstein, and W. R. Marczak. Consistency analysis in bloom: a calm and collected approach. In CIDR, pages 249--260, 2011.
[2]
G. Berry and L. Cosserat. The ESTEREL synchronous programming language and its mathematical semantics. In Carnegie Mellon University Seminar on Concurrency, pages 389--448, 1985.
[3]
G. Berry and M. Serrano. Hop and hiphop: Multitier web orchestration. In Proc. of ICDCIT, pages 1--13, 2014.
[4]
S. P. Booth and S. B. Jones. Walk backwards to happiness - debugging by time travel. In Proc. of Automated and Algorithmic Debugging, pages 171--183, 1997.
[5]
S. Burckhardt, A. Baldassin, and D. Leijen. Concurrent programming with revisions and isolation types. In Proc. of OOPSLA, pages 691--707, 2010.
[6]
S. Burckhardt, D. Leijen, C. Sadowski, J. Yi, and T. Ball. Two for the price of one: A model for parallel and incremental computation. In Proc. of OOPSLA, pages 427--444, 2011.
[7]
S. Burckhardt, M. Fähndrich, D. Leijen, and B. P. Wood. Cloud types for eventual consistency. In Proc. of ECOOP, pages 283--307, 2012.
[8]
S. Burckhardt, M. Fahndrich, P. de Halleux, J. Kato, S. Mc-Dirmid, M. Moskal, and N. Tillmann. It's alive! Continuous feedback in UI programming. In Proc. of PLDI, 2013.
[9]
P. Caspi, D. Pilaud, N. Halbwachs, and J. Plaice. Lustre: A declarative language for programming synchronous systems. In Proc. of POPL, pages 178--188, 1987.
[10]
G. H. Cooper and S. Krishnamurthi. Embedding dynamic dataflow in a call-by-value language. In Proc. of ESOP, pages 294--308, 2006.
[11]
A. Courtney. Frappé: Functional reactive programming in Java. In PADL, pages 29--44, 2001.
[12]
E. D. Demaine, J. Iacono, and S. Langerman. Retroactive data structures. ACM TALG, May 2007.
[13]
P. J. Eby. Trellis. http://pypi.python.org/pypi/Trellis, 2009.
[14]
J. Edwards. Coherent reaction. In Proc. of Onward!, pages 925--932, 2009.
[15]
C. Elliott. Composing reactive animations. http://conal.net/fran/tutorial.htm, 1998.
[16]
C. Elliott and P. Hudak. Functional reactive animation. In Proc. of ICFP, pages 263--273, 1997.
[17]
Facebook. React: A javascript library for building user interfaces. http://facebook.github.io/react, 2014.
[18]
B. N. Freeman-Benson. Kaleidoscope: mixing objects, constraints, and imperative programming. In Proc. of OOPSLA/ECOOP, pages 77--88, 1990.
[19]
R. M. Fujimoto. The virtual time machine. In Proc. of SPAA, pages 199--208, 1989.
[20]
J. Gray. The transaction concept: Virtues and limitations (invited paper). In VLDB, pages 144--154, 1981.
[21]
E. Gröller and W. Purgathofer. Coherence in computer graphics. Technical report, Vienna University of Technology, 1992.
[22]
D. Grossman. The transactional memory / garbage collection analogy. In Proc. of OOPSLA, pages 695--706, 2007.
[23]
C. M. Hancock. Real-time programming and the big ideas of computational literacy. PhD thesis, MIT, 2003.
[24]
P. Hudak. Principles of functional reactive programming. ACM SIGSOFT Software Engineering Notes, 25(1), 2000.
[25]
D. R. Jefferson. Virtual time. ACM TOPLAS, 7(3):404--425, July 1985.
[26]
J. Kato, S. McDirmid, and X. Cao. Dejavu: integrated support for developing interactive camera-based programs. In Proc. of UIST, pages 189--196, 2012.
[27]
T. Knight. An architecture for mostly functional languages. In Proc. of ACM Conference on LISP and Functional Programming, pages 105--112, 1986.
[28]
M. Kölling, B. Quig, A. Patterson, and J. Rosenberg. The BlueJ system and its pedagogy. Journal of Computer Science Education, 13(4), Dec. 2003.
[29]
L. Kuper and R. R. Newton. LVars: lattice-based data structures for deterministic parallelism. In Proc. of FHPC, 2013.
[30]
A. Lienhard, T. Gîrba, and O. Nierstrasz. Practical object-oriented back-in-time debugging. In Proc. of ECOOP, pages 592--615, 2008.
[31]
S. McDirmid. Living it up with a live programming language. In Proc. of OOPSLA Onward!, pages 623--638, October 2007.
[32]
S. McDirmid. Usable live programming. In Proc. of SPLASH Onward!, Oct. 2013.
[33]
E. Meijer. Your mouse is your database. ACM Queue, 10(3), 2012.
[34]
Meso group. VVVV - a multipurpose toolkit. http://www.vvvv.org, 2009.
[35]
L. A. Meyerovich, A. Guha, J. Baskin, G. H. Cooper, M. Greenberg, A. Bromfield, and S. Krishnamurthi. Flapjax: a programming language for Ajax applications. In Proc. of OOPSLA, pages 1--20, 2009.
[36]
A. Nathan. Windows Presentation Foundation Unleashed (WPF) (Unleashed). Sams, 2006.
[37]
H. Nilsson, A. Courtney, and J. Peterson. Functional reactive programming, continued. In Proc. of Haskell, pages 51--64, Oct. 2002.
[38]
M. Odersky. personal communication, 2011.
[39]
M. Odersky and M. Zenger. Scalable component abstractions. In Proc. of OOPSLA, pages 41--57, 2005.
[40]
G. Pothier, E. Tanter, and J. Piquer. Scalable omniscient debugging. In Proc. of OOPSLA, pages 535--552, 2007.
[41]
S. P. Reiss. Graphical program development with pecan program development systems. In Proc. of PSDE, pages 30--41, 1984.
[42]
A. Repenning. Conversational programming: Exploring interactive program analysis. In Proc. of Onward!, pages 63--74, 2013.
[43]
F. Sant'Anna and R. Ierusalimschy. LuaGravity, a reactive language based on implicit invocation. In Proc. of SBLP, pages 89--102, 2009.
[44]
F. Sant'Anna et al. Safe system-level concurrency on resource-constrained nodes. In Proc. of SenSys, 2013.
[45]
D. Ungar and R. B. Smith. Self: the power of simplicity. In Proc. of OOPSLA, pages 227--242, December 1987.
[46]
G. van Rossum. The Python programming language manual. http://www.python.org, 1990--2013.
[47]
B. Victor. Inventing on principle. Invited talk at CUSEC, Jan. 2012.
[48]
B. Victor. Learnable programming. http://worrydream.com/LearnableProgramming, Sept. 2012.
[49]
A. Warth, Y. Ohshima, T. Kaehler, and A. C. Kay. Worlds: Controlling the scope of side effects. In Proc. of ECOOP, pages 179--203, 2011.
[50]
E. M. Wilcox, J. W. Atwood, M. M. Burnett, J. J. Cadiz, and C. R. Cook. Does continuous visual feedback aid debugging in direct-manipulation programming systems? In Proc. of CHI, pages 258--265, 1997.

Cited By

View all
  • (2019)Live programming and software evolutionProceedings of the 27th International Conference on Program Comprehension10.1109/ICPC.2019.00017(30-41)Online publication date: 25-May-2019
  • (2018)The road to live programmingProceedings of the 40th International Conference on Software Engineering10.1145/3180155.3180200(1090-1101)Online publication date: 27-May-2018
  • (2016)Towards Making a Computer Tutor for Children of All AgesProceedings of the Programming Experience 2016 (PX/16) Workshop10.1145/2984380.2984383(21-25)Online publication date: 18-Jul-2016
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
Onward! 2014: Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software
October 2014
332 pages
ISBN:9781450332101
DOI:10.1145/2661136
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

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 14 October 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. live programming
  2. programming models

Qualifiers

  • Research-article

Conference

SPLASH '14
Sponsor:

Acceptance Rates

Onward! 2014 Paper Acceptance Rate 16 of 35 submissions, 46%;
Overall Acceptance Rate 40 of 105 submissions, 38%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)8
  • Downloads (Last 6 weeks)1
Reflects downloads up to 25 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2019)Live programming and software evolutionProceedings of the 27th International Conference on Program Comprehension10.1109/ICPC.2019.00017(30-41)Online publication date: 25-May-2019
  • (2018)The road to live programmingProceedings of the 40th International Conference on Software Engineering10.1145/3180155.3180200(1090-1101)Online publication date: 27-May-2018
  • (2016)Towards Making a Computer Tutor for Children of All AgesProceedings of the Programming Experience 2016 (PX/16) Workshop10.1145/2984380.2984383(21-25)Online publication date: 18-Jul-2016
  • (2016)Reactive programming with reactive variablesCompanion Proceedings of the 15th International Conference on Modularity10.1145/2892664.2892666(29-33)Online publication date: 14-Mar-2016
  • (2016)Debugging for reactive programmingProceedings of the 38th International Conference on Software Engineering10.1145/2884781.2884815(796-807)Online publication date: 14-May-2016

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