On the practicality and desirability of highly-concurrent, mostly-functional programming

We propose the practicality and desirability of a programming style, ravelling. Ravelling makes extensive use of threads with mostly functional code computing local state. By passing values across channels other threads induce an owning thread to change state or report information about itself Our experience suggests that ravelling makes for flexibility in design and relative ease in introducing new code.

[1]  David E. Culler,et al.  A Design Framework for Highly Concurrent Systems , 2000 .

[2]  John H. Reppy,et al.  Concurrent programming in ML , 1999 .

[3]  John K. Ousterhout,et al.  Why Threads Are A Bad Idea (for most purposes) , 2003 .

[4]  James H. Cowie Scalable Simulation Framework API Reference Manual , 1999 .

[5]  Wooyoung Kim,et al.  THAL: An Actor System for Efficient and Scalable Concurrent Computing , 1997 .

[6]  Richard J. Beach,et al.  A structural view of the Cedar programming environment , 1986, TOPL.

[7]  Flemming Nielson,et al.  Higher-order concurrent programs with finite communication topology (extended abstract) , 1994, POPL '94.

[8]  Davide Sangiorgi,et al.  The Pi-Calculus - a theory of mobile processes , 2001 .

[9]  Robin Milner,et al.  Communicating and mobile systems - the Pi-calculus , 1999 .

[10]  Laura M. Castro,et al.  ARMISTICE: an experience developing management software with Erlang , 2003, ERLANG '03.

[11]  Peter Van Roy,et al.  Mozart: a programming system for agent applications , 1999 .

[12]  Cristian S. Calude,et al.  Discrete Mathematics and Theoretical Computer Science , 2003, Lecture Notes in Computer Science.

[13]  Richard M. Stallman,et al.  Gnu Emacs Manual , 1996 .

[14]  P ? ? ? ? ? ? ? % ? ? ? ? , 1991 .

[15]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[16]  Sylvain Conchon,et al.  Jocaml: mobile agents for Objective-Caml , 1999, Proceedings. First and Third International Symposium on Agent Systems Applications, and Mobile Agents.

[17]  Mordechai Ben-Ari,et al.  Principles of concurrent and distributed programming , 2005, PHI Series in computer science.

[18]  Emden R. Gansner,et al.  A multi-threaded higher-order user interface toolkit , 1993 .

[19]  P. Brinch-Hansen,et al.  The programming language Concurrent Pascal , 1975 .

[20]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[21]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[22]  Jack B. Dennis,et al.  First version of a data flow procedure language , 1974, Symposium on Programming.

[23]  Simon L. Peyton Jones,et al.  Concurrent Haskell , 1996, POPL '96.

[24]  Carlos A. Varela,et al.  What after Java? From Objects to Actors , 1998, Comput. Networks.

[25]  Bil Lewis,et al.  Multithreaded Programming With PThreads , 1997 .

[26]  Tzilla Elrad,et al.  Aspect-oriented programming: Introduction , 2001, CACM.

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

[28]  Ulrich Drepper,et al.  The Native POSIX Thread Library for Linux , 2002 .

[29]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[30]  Marvin Theimer,et al.  Using threads in interactive systems: a case study , 1993, SOSP '93.

[31]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[32]  Gilles Kahn,et al.  The Semantics of a Simple Language for Parallel Programming , 1974, IFIP Congress.

[33]  Gregory R. Andrews,et al.  Foundations of Multithreaded, Parallel, and Distributed Programming , 1999 .

[34]  Xavier Leroy The objective caml system release 3 , 2001 .

[35]  Jon Louis Bentley,et al.  Programming pearls , 1987, CACM.

[36]  Kendall Scott,et al.  UML distilled - applying the standard object modeling language , 1997 .

[37]  Davide Sangiorgi,et al.  Communicating and Mobile Systems: the π-calculus, , 2000 .