Leveraging Sequential Computation for Programming Efficient and Reliable Distributed Systems

While sequential programs represent a simple and natural form for expressing functionality, corresponding distributed implementations get considerably more complex. We examine the possibility of using the sequential computation model for programming distributed systems and requirements for making that possible. The benefits of such an approach include easier specification and reasoning about behaviors in the system, as well as a possibility to directly reuse existing techniques for checking correctness and optimization of sequential programs to produce efficient and reliable distributed implementations.

[1]  Benjamin Livshits,et al.  Fluxo: a system for internet service programming by non-expert developers , 2010, SoCC '10.

[2]  Carl Hewitt,et al.  A Universal Modular ACTOR Formalism for Artificial Intelligence , 1973, IJCAI.

[3]  Mira Mezini,et al.  Distributed REScala: an update algorithm for distributed reactive programming , 2014, OOPSLA 2014.

[4]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[5]  Philip Wadler,et al.  Links: Web Programming Without Tiers , 2006, FMCO.

[6]  Stephen Chong,et al.  Asynchronous functional reactive programming for GUIs , 2013, PLDI.

[7]  Andrew S. Tanenbaum,et al.  A Critique of the Remote Procedure Call Paradigm , 1988 .

[8]  Rachid Guerraoui,et al.  Concurrency and distribution in object-oriented programming , 1998, CSUR.

[9]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[10]  Manuel Serrano,et al.  Multitier Programming in Hop , 2012, ACM Queue.

[11]  Martin Odersky,et al.  Scala Actors: Unifying thread-based and event-based programming , 2009, Theor. Comput. Sci..

[12]  Stefan Marr,et al.  Partitioned Global Address Space Languages , 2015, ACM Comput. Surv..

[13]  Castro Paul,et al.  Cloud-Native, Event-Based Programming for Mobile Applications , 2016 .

[14]  Matthias Felleisen,et al.  Programming the Web with High-Level Programming Languages , 2001, ESOP.

[15]  M. Felleisen,et al.  Automatically restructuring programs for the Web , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[16]  Satish Narayanasamy,et al.  The Silently Shifting Semicolon , 2015, SNAPL.

[17]  Adam Chlipala,et al.  Ur/Web , 2015, Commun. ACM.

[18]  Vivek Sarkar,et al.  X10: an object-oriented approach to non-uniform cluster computing , 2005, OOPSLA '05.

[19]  Henri E. Bal,et al.  Programming languages for distributed computing systems , 1989, CSUR.

[20]  Daniel Jackson,et al.  Exploring the role of sequential computation in distributed systems: motivating a programming paradigm shift , 2016, Onward!.

[21]  Patrick Th. Eugster,et al.  Program analysis for event-based distributed systems , 2011, DEBS '11.

[22]  Philip A. Bernstein,et al.  Concurrency Control in Distributed Database Systems , 1986, CSUR.