The structure and semantics of actor languages

  • Gul Agha
Technical Contributions
Part of the Lecture Notes in Computer Science book series (LNCS, volume 489)


The actor model is developed as a foundation for concurrent object-oriented programming. The model provides for non-interference of state changes with multiple threads, inherent concurrency, reconfigurability, encapsulation of namespace, and weak fairness. The paper provides a survey of work in actor languages and can be divided into two areas: namely, formal aspects of the actor model and the structure of actor languages. We provide an abstract view of actor computations in terms of event diagrams and the laws of concurrent computing. The event diagrams can be given a semantics in terms of power domains. We then define the necessary constructs in a minimal actor language. This provides the building blocks for constructing a rich variety of concurrent computing structures. The second part of the paper shows how these higher level structures are built in terms of the actor primitives. In particular, this discussion illustrates how delayed evaluation, streams, continuations, higher-order functions, and other structures, can be built in terms of actor languages. We also note some experiences gained from the implementation of actor systems and argue for the potential advantages discovered by this work. Finally, we discuss some recent research on computational reflection. This work provides the ability to model control, and the ability to treat inheritance as a programmer defined method rather than a predefined linguistic object. The resulting flexibility is very much in the actor tradition of languages.


Concurrency Multiprocessor Architectures Object-Oriented Programming Programming Language Theory Concurrent Programming Structures Distributed Systems Actors 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Harold Abelson and Gerald Jay Sussman. Structure and Interpretation of Computer Programs. MIT Press, Cambridge, Mass, 1985.Google Scholar
  2. [2]
    G. Agha. Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge, Mass., 1986.Google Scholar
  3. [3]
    G. Agha. Concurrent object oriented programming. Comm. of the ACM, 33(9):125–141, 1990.Google Scholar
  4. [4]
    G. Agha. Semantic considerations in the actor paradigm of concurrent computation. In Seminar on Concurrency, pages 151–179, Springer-Verlag, 1985.Google Scholar
  5. [5]
    G. Agha. Supporting multiparadigm programming on actor architectures. In Proceedings of Parallel Architectures and Languages Europe, Vol. II: Parallel Languages (PARLE '89), pages 1–19, Espirit, Springer-Verlag, 1989. LNCS 366.Google Scholar
  6. [6]
    Pierre America. Issues in the design of a parallel object-oriented language. In Pierre America and Jan Rutten, editors, A Parallel Object-Oriented Language: Design and Semantic Foundations, chapter 2, Centrum voor Wiskunde en Informatica, Amsterdam, Netherlands, 1989. in PhD thesis.Google Scholar
  7. [7]
    J-M. Androli and R. Pareschi. Lo and behold! concurrent structured processes. In Proceedings of OOPSLA/ECOOP, pages 44–56, ACM Press, New York, 1990.Google Scholar
  8. [8]
    W. Athas. Fine Grain Concurrent Computations. PhD thesis, Computer Science Department, California Institute of Technology, 1987. Also published as technical report 5242:TR:87.Google Scholar
  9. [9]
    W. Athas and C. Seitz. Multicomputers: message-passing concurrent computers. IEEE Computer, 9–23, August 1988.Google Scholar
  10. [10]
    J.D. Brock and W.B. Ackerman. Scenarios: A Model of Non-Determinate Computation, pages 252–259. Lecture Notes in Computer Science, Springer-Verlag, 1981.Google Scholar
  11. [11]
    Luca Cardelli. A Semantics of Multiple Inheritance. In International Symposium on Semantics of Data Types, Springer-Verlag, 1984. Lecture Notes in Computer Science, Number 173.Google Scholar
  12. [12]
    Luca Cardelli and Peter Wegner. On Understanding Types, Data Abstraction, and Polymorphism. ACM Computing Surveys, 17(4):471–522, 1985.Google Scholar
  13. [13]
    W. D. Clinger. Foundations of Actor Semantics. AI-TR-633, MIT Artificial Intelligence Laboratory, May 1981.Google Scholar
  14. [14]
    William Cook and Jens Palsberg. A Denotational Semantics of Inheritance and its Correctness. In OOPSLA '89 Conference Proceedings, pages 433–444, 1989. Published as SIGPLAN Notices 24(10), October, 1989.Google Scholar
  15. [15]
    G. Costa and C. Stirling. A fair calculus of communicating systems. In Foundations of Computer Theory, LNCS, Springer-Verlag, 1984.Google Scholar
  16. [16]
    W. Dally. A VLSI Architecture for Concurrent Data Structures. Kluwer Academic Press, 1986.Google Scholar
  17. [17]
    W. Dally and D. Wills. Universal mechanisms for concurrency. In Proceedings of Parallel Architectures and Languages Europe, Vol. I: Parallel Architectures (PARLE '89), pages 19–33, Espirit, Springer-Verlag, 1989. LNCS 366.Google Scholar
  18. [18]
    J.W. de Bakker. Mathematical Theory of Program Correctness. Prentice-Hall International, 1980.Google Scholar
  19. [19]
    E. W. Dijkstra. A Discipline of Programming. Prentice-Hall, 1977.Google Scholar
  20. [20]
    N. Francez. Fairness. Springer-Verlag, New York, 1986.Google Scholar
  21. [21]
    P. Henderson. Functional Programming: Applications and Implementation. Prentice-Hall International, 1980.Google Scholar
  22. [22]
    C. Hewitt. Viewing control structures as patterns of passing messages. Journal of Artificial Intelligence, 8–3:323–364, June 1977.Google Scholar
  23. [23]
    C. Hewitt and G. Agha. Guarded horn clause languages: are they deductive and logical. In Proceedings of Fifth Generation Computer Systems Conference, ICOT, Tokyo, Dec. 1988.Google Scholar
  24. [24]
    Suresh Jagannathan. A Programming Language Supporting First-Class, Parallel Environments. Technical Report LCS-TR 434, Massachusetts Institute of Technology, December 1988.Google Scholar
  25. [25]
    Suresh Jagannathan and Gul Agha. Inheritance Through Reflection. Department of Computer Science Technical Report, University of Illinois at Urbana Champaign, 1990. Forthcoming.Google Scholar
  26. [26]
    Samuel Kamin. Inheritance in Smalltalk-80: A Denotational Definition. In Proceedings of the ACM Conference on Principles of Programming Languages, pages 80–87, 1988.Google Scholar
  27. [27]
    Henry Liebermann. Using Prototypical Objects to Implement Shared Behavior in Object-Oriented Systems. In OOPSLA'86 Conference Proceedings, pages 214–223, 1986. Published as SIGPLAN Notice 21(11), November 1986.Google Scholar
  28. [28]
    Pattie Maes. Computational Reflection. PhD thesis, Vrije University, Brussels, Belgium, 1987. Technical Report 87-2.Google Scholar
  29. [29]
    Carl Manning. ACORE: The Design of a Core Actor Language and its Compiler. Master's thesis, MIT, Artificial Intelligence Laboratory, August 1987.Google Scholar
  30. [30]
    C. Mead and L. Conway. Introduction to VLSI Systems. Addison-Wesley, Reading, MA, 1980.Google Scholar
  31. [31]
    J. Meseguer. A logical theory of concurrent objects. In OOPSLA/ECOOP Proceedings, ACM Press, New York, 1990.Google Scholar
  32. [32]
    R. Milner, J. Parrow, and D. Walker. A Calculus of Mobile Processes. Technical Report ECS-LFCS-90-122, Univ. of Edinburgh, 1990.Google Scholar
  33. [33]
    Uday Reddy. Objects as Closures: Abstract Semantics of Object-Oriented Languages. In Proceedings of the ACM Conf. on Lisp and Functional Programming, pages 289–297, 1988.Google Scholar
  34. [34]
    Bruce Shriver and Peter Wegner, editors. Research Directions in Object Oriented Programming. MIT Press, Cambridge, Mass, 1987.Google Scholar
  35. [35]
    Alan Snyder. Encapsulation and inheritance in object-oriented languages. In Object-Oriented Programming Systems, Languages and Applications Conference Proceedings, pages 38–45, ACM Press, 1986.Google Scholar
  36. [36]
    Joseph E. Stoy. Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. The MIT Press, Cambridge, MA, 1977.Google Scholar
  37. [37]
    C. Tomlinson and V. Singh. Inheritance and Synchronization with Enabled Sets. In Proceedings of OOPSLA-89, 1989. (to appear). Also available as MCC TR ACT-OODS-131-89.Google Scholar
  38. [38]
    David Ungar and Randall Smith. self: The Power of Simplicity. In OOPSLA'87 Conference Proceedings, pages 227–241, 1987. Published as SIGPLAN Notices 22(12), December, 1987.Google Scholar
  39. [39]
    Akinori Yonezawa, editor. ABCL: An Object-Oriented Concurrent System. MIT Press, Cambridge, Mass., 1990.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1991

Authors and Affiliations

  • Gul Agha
    • 1
  1. 1.Department of Computer ScienceUniversity of Illinois at Urbana-ChampaignUrbanaUSA

Personalised recommendations