The Network as a Language Construct

  • Tony Garnock-Jones
  • Sam Tobin-Hochstadt
  • Matthias Felleisen
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8410)


The actor model inspires several important programming languages. In this model, communicating concurrent actors collaborate to produce a result. A pure actor language tends to turn systems into an organization-free collection of processes, however, even though most applications call for layered and tiered architectures. To address this lack of an organizational principle, programmers invent design patterns.

This paper investigates integrating some of these basic patterns via a programming language construct. Specifically, it extends a calculus of communicating actors with a “network” construct so that actors can conduct scoped, tiered conversations. The paper then sketches how to articulate design ideas in the calculus, how to implement it, and how such an implementation shapes application programming.


Actor Model Chat Room Language Design Base Language Language Construct 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Hewitt, C., Bishop, P., Steiger, R.: A universal modular ACTOR formalism for artificial intelligence. In: Proc. 3rd Int. Joint Conf. on Artificial Intelligence, pp. 235–245. Morgan Kaufmann Publishers Inc. (August 1973)Google Scholar
  2. 2.
    Ericsson(AB): Erlang/OTP Design Principles (2012),
  3. 3.
    Haller, P., Odersky, M.: Scala Actors: Unifying thread-based and event-based programming. Theoretical Computer Science 410(2-3), 202–220 (2009)CrossRefzbMATHMathSciNetGoogle Scholar
  4. 4.
    Agha, G.A., Mason, I.A., Smith, S.F., Talcott, C.L.: A Foundation for Actor Computation. J. Functional Programming 7(1) (1997)Google Scholar
  5. 5.
    Li, P., Zdancewic, S.: Combining Events and Threads for Scalable Network Services. In: Proc. Conf. on Programming Language Design and Implementation, pp. 189–199 (2007)Google Scholar
  6. 6.
    Wright, A.K., Felleisen, M.: A syntactic approach to type soundness. Information and Computation 115, 38–94 (1992)CrossRefMathSciNetGoogle Scholar
  7. 7.
    Day, J.: Patterns in Network Architecture: A Return to Fundamentals. Prentice Hall (2008)Google Scholar
  8. 8.
    Felleisen, M., Findler, R.B., Flatt, M., Krishnamurthi, S.: A Functional I/O System. In: ICFP (2009)Google Scholar
  9. 9.
    Zave, P., Rexford, J.: The geomorphic view of networking: A network model and its uses. In: Proc. of the Middleware for Next Generation Internet Computing Workshop (2012)Google Scholar
  10. 10.
    Object Management Group: Data Distribution Service for Real-time Systems (January 2007)Google Scholar
  11. 11.
    Eugster, P.T., Felber, P.A., Guerraoui, R., Kermarrec, A.M.: The many faces of publish/subscribe. ACM Computing Surveys 35(2), 114–131 (2003)CrossRefGoogle Scholar
  12. 12.
    Waldo, J., Wyant, G., Wollrath, A., Kendall, S.: A Note on Distributed Computing. Sun Microsystems Laboratories Technical Report SMLI TR-94-29 (November 1994)Google Scholar
  13. 13.
    Shaw, M., Garlan, D.: Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall (1996)Google Scholar
  14. 14.
    Saint-Andre, P.: Extensible Messaging and Presence Protocol (XMPP): Core. RFC 6120 (March 2011)Google Scholar
  15. 15.
    Heart, F.E., Kahn, R.E., Ornstein, S.M., Crowther, W.R., Walden, D.C.: The interface message processor for the ARPA computer network. In: Proc. Spring Joint Computer Conference (AFIPS 19870), pp. 551–567 (May 1970)Google Scholar
  16. 16.
    Ene, C., Muntean, T.: A Broadcast-based Calculus for Communicating Systems. In: Proc. of the Workshop on Formal Methods for Parallel Programming (2001)Google Scholar
  17. 17.
    Felleisen, M., Findler, R.B., Flatt, M.: Semantics Engineering with PLT Redex. The MIT Press (2009)Google Scholar
  18. 18.
    The Coq development team: The Coq proof assistant reference manual. LogiCal Project, Version 8.0 (2004)Google Scholar
  19. 19.
    Partridge, C., Mendez, T., Milliken, W.: Host Anycasting Service. RFC 1546 (Informational) (November 1993)Google Scholar
  20. 20.
    Honda, K., Yoshida, N., Carbone, M.: Multiparty asynchronous session types. In: Proc. Symp. on Principles of Programming Languages, pp. 273–284 (January 2008)Google Scholar
  21. 21.
    Flatt, M.: PLT: Reference: Racket. Technical Report PLT-TR-2010-1, PLT Inc. (2010),
  22. 22.
    Lieberman, H.: Concurrent Object-Oriented Programming in Act 1. In: Yonezawa, A., Tokoro, M. (eds.) Object-Oriented Concurrent Programming. MIT Press (1987)Google Scholar
  23. 23.
    Ylonen, T., Lonvick, C.: The Secure Shell (SSH) Protocol Architecture. RFC 4251 (January 2006)Google Scholar
  24. 24.
    Caires, L., Vieira, H.T.: Analysis of Service Oriented Software Systems with the Conversation Calculus. In: Barbosa, L.S., Lumpe, M. (eds.) FACS 2010. LNCS, vol. 6921, pp. 6–33. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  25. 25.
    Vieira, H.T., Caires, L., Seco, J.C.: The conversation calculus: A model of service-oriented computation. In: Drossopoulou, S. (ed.) ESOP 2008. LNCS, vol. 4960, pp. 269–283. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  26. 26.
    Callsen, C.J., Agha, G.: Open Heterogeneous Computing in ActorSpace. J. Parallel and Distributed Computing 21(3), 289–300 (1994)CrossRefGoogle Scholar
  27. 27.
    Varela, C.A., Agha, G.: A Hierarchical Model for Coordination of Concurrent Activities. In: Ciancarini, P., Wolf, A.L. (eds.) COORDINATION 1999. LNCS, vol. 1594, pp. 166–182. Springer, Heidelberg (1999)Google Scholar
  28. 28.
    Cardelli, L., Gordon, A.D.: Mobile ambients. Theoretical Computer Science 240(1), 177–213 (2000)CrossRefzbMATHMathSciNetGoogle Scholar
  29. 29.
    Fournet, C., Gonthier, G.: The Join Calculus: a Language for Distributed Mobile Programming. In: Applied Semantics: International Summer School (2000)Google Scholar
  30. 30.
    Sangiorgi, D., Walker, D.: The Pi-Calculus: A Theory of Mobile Processes. Cambridge University Press (October 2003)Google Scholar
  31. 31.
    Armstrong, J.: Making reliable distributed systems in the presence of software errors. PhD thesis, Royal Institute of Technology, Stockholm (2003)Google Scholar
  32. 32.
    Miller, M.S.: Robust composition: Towards a unified approach to access control and concurrency control. PhD thesis, Johns Hopkins University (2006)Google Scholar
  33. 33.
    Miller, M.S., Van Cutsem, T., Tulloh, B.: Distributed electronic rights in javaScript. In: Felleisen, M., Gardner, P. (eds.) ESOP 2013. LNCS, vol. 7792, pp. 1–20. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  34. 34.
    Yoo, S., Killian, C., Kelly, T., Cho, H.K., Plite, S.: Composable Reliability for Asynchronous Systems. In: Proc. USENIX Annual Technical Conference (June 2012)Google Scholar
  35. 35.
    Van Cutsem, T., Mostinckx, S., Gonzalez Boix, E., Dedecker, J., De Meuter, W.: AmbientTalk: Object-oriented Event-driven Programming in Mobile Ad hoc Networks. In: Intl. Conf. of the Chilean Society of Computer Science (SCCC), pp. 3–12. IEEE (November 2007)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2014

Authors and Affiliations

  • Tony Garnock-Jones
    • 1
  • Sam Tobin-Hochstadt
    • 2
  • Matthias Felleisen
    • 1
  1. 1.Northeastern UniversityBostonUSA
  2. 2.Indiana UniversityBloomingtonUSA

Personalised recommendations