Actalk: A Testbed for Classifying and Designing Actor Languages in the Smalltalk-80 Environment

This paper describes a system for designing and classifying actor languages. This system, named Actalk, which stands for actors in Smalltalk-80, is based on some minimal kernel introducing actors into Smalltalk-80. The Actalk kernel extends passive and sequential objects activated by synchronous message passing into active and concurrent actors communicating by asynchronous message passing. This de nes a sub-world of actors embedded into the Smalltalk80 programming language and environment, which is left unchanged. The Actalk kernel is composed of only two Smalltalk-80 classes. Simulating current actor languages or designing new ones is achieved by de ning subclasses of these two kernel classes. Consequently all such extensions are implicitly classi ed by the inheritance mechanism and uni ed into the Actalk environment. We are currently extending the standard Smalltalk-80 programming environment to design a speci c one dedicated to Actalk concurrent actors. In this paper, the motivations and the goals which led to design the Actalk system are rst discussed. Then the structure and implementation of the kernel of Actalk is detailed. The very good integration of this kernel into the Smalltalk-80 programming language and environment is demonstrated through some examples. Interests and limits of combining objects with actors are then discussed. In the last part of the paper, we demonstrate the expressive power of the Actalk kernel by extending it to simulate the two main actor computation models and programming languages, namely, the Actor model of computation, and the Abcl/1 programming language. Related and further work is summarized before concluding this paper.

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

[2]  Carl Roger Manning,et al.  Acore--the design of a core actor language and its compiler , 1987 .

[3]  Robert Voyer Implementation d'architectures efficaces pour la representation des connaissances : application aux langages loopsiris et oks , 1989 .

[4]  Carl Hewitt,et al.  Specification and Proof Techniques for Serializers , 1979, IEEE Transactions on Software Engineering.

[5]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[6]  Henry Lieberman,et al.  Concurrent object-oriented programming in Act 1 , 1987 .

[7]  Mario Tokoro,et al.  Experience and Evolution of ConcurrentSmalltalk , 1987, OOPSLA.

[8]  Daniel G. Theriault Issues in the Design and Implementation of Act2 , 1983 .

[9]  Carl Hewitt,et al.  Viewing Control Structures as Patterns of Passing Messages , 1977, Artif. Intell..

[10]  Akinori Yonezawa,et al.  Object-oriented concurrent programming ABCL/1 , 1986, OOPLSA '86.

[11]  Alan Borning,et al.  Multiple Inheritance in Smalltalk-BO , 1982, AAAI.

[12]  Paul L. McCullough Transparent forwarding: First steps , 1987, OOPSLA '87.

[13]  Akinori Yonezawa,et al.  Object-oriented concurrent programming in ABCL/1 , 1986, OOPSLA 1986.

[14]  Geoffrey A. Pascoe Encapsulators: A New Software Paradigm in Smalltalk-80 , 1986, OOPSLA.

[15]  Pierre Cointe Metaclasses are First Class: the ObjVlisp Model , 1987, OOPSLA.

[16]  Jacques Ferber,et al.  Design of a Concurrent Language for Distributed Artificial Intelligence , 1988, Fifth Generation Computer Systems.

[17]  J.-P. Briot,et al.  From objects to actors: study of a limited symbiosis in smalltalk-80 , 1988, OOPSLA/ECOOP '88.