Actalk info file: README Author & Date: -------------- Jean-Pierre Briot 5 October 1994 (Minor update on 06/07/97) Overview: --------- Actalk is a testbed for modeling, classifying and experimenting with object-oriented concurrent programming (OOCP) languages. About OOCP: ----------- Object-oriented concurrent programming is a paradigm based on the concept of community of active and autonomous entities (called active objects or also actors) which communicate and coordinate by exchanging messages. Object-oriented concurrent programming unifies objects with processes, and message passing with synchronization. This methodology helps decomposing programs in a modular way and exploiting parallel computers to run them efficiently. Actalk: ------- The Actalk testbed is designed to help understanding, classifying, and experimenting with various OOCP languages and constructs. Actalk is implemented and integrated within the Smalltalk-80 environment. The testbed includes the kernel which models basic OOCP model (that is serialized active objects and asynchronous message passing), and various extensions in order to simulate various OOCP languages and constructs. They implement various models of: activity (implicit or explicit acceptance of messages, serial, quasi-concurrent, concurrent...), communication (asynchronous, synchronous, eager, express...), and synchronization to control/delay acceptance of messages (based on policies such as abstract states transition, guards...). Purpose and audience: -------------------- Pedagogy. This was the initial motivation when designing Actalk in 1988. Actalk has already proven to be very helpful to study and compare OOCP languages and constructs. Actalk has already been used in various classes and tutorials. Experiments. Actalk is being used as a foundation to conduct experiments and research in OOCP topics such as reflection, exception handling, constraint resolution. Applications. Actalk has been used as a foundation to explore and actually develop various prototype systems, mainly various DAI (multi-agent) systems. Requirements: ------------- Actalk is based upon Smalltalk-80. Thus you need a Smalltalk-80 system (Objectworks\Smalltalk release 4.1) to run it. Smalltalk has been chosen as the OOP foundation because it is high-level, modular and flexible, and includes a rich programming environment. Pros and Cons: -------------- Following are a few key remarks about what Actalk is (or attempts at being) and what it is not. Actalk is a testbed for open experiments with various OOCP models and constructs. Actalk is not a specific programming language (as opposed to a Smalltalk-based OOCP language like ConcurrentSmalltalk). Actalk offers not one but various languages constructs in a highly disciplined way within a single environment. (Actually constructs of ConcurrentSmalltalk, like various types of message passing, and method suspension, are supported by one of the extensions). The programmer may select specific classes of active objects for certain classes of objects depending on properties he is looking for. This may be contrasted with having a single/unique language framework. Some degree of combination (hybridation) between various models is also possible (but this may lead to some incompatibilities. Note that Actalk includes a simple mechanism to control such compatibility constraints). Actalk does not change Smalltalk-80 semantics or syntax. Minimal implementation of constructs is provided, mainly thanks to Smalltalk-80 high expressive power. Actalk is not a close system. Current libraries actually include some extensions designed by other teams, and which have been integrated within current version. (You are very welcome to contribute to what ultimately could become a kind of shared library of constructs, experiments, and programs). Efficiency and safety are not prime concerns of Actalk. Meanwhile, its simple implementation makes it enough efficient. Extensions: ----------- Some examples of modeling various OOCP constructs are: Actor model of computation (behavior replacement), ABCL/1 (three types of message passing, express mode, explicit message acceptance), POOL2 (body concept, explicit message acceptance, post actions, public routines), ConcurrentSmalltalk-II (three types of message passing, method suspension, post actions). Some examples of strategies for synchronization of message acceptance are: abstract states transition, guards, method suspension, synchronization counters, management of generic invocations. (And last, but not the least, some mixed models have been produced by combining some of the above strategies. Some of such combinations may lead to a better modularity of the specifications of synchronization, which help solving the "inheritance anomaly" problem.) Every extension is implemented as a set of subclasses of the kernel classes. Inheritance is used to progressively enrich the initial model. A generic set of classes also implements implicit reply for a good integration within standard Smalltalk-80 methods. Examples: --------- Examples of programs are: functions (several ways of computing factorial, fibonacci...), distributed algorithms (quicksort, symbol table, behavior simulation...), synchronization problems (bounded buffer, dining philosophers, priority printer...). Note that some of the examples, notably synchronization problems, are revisited in various formalisms in order to compare their respective strategies and limits. Note also that these are toy example programs, not real size ones. Name: ----- Actalk stands for active objects (or actors) in Smalltalk. Versions: --------- This is Actalk version 3. See info file(s) VERSION_3.* for detailed information about current release as well as previous releases and versions. (See section 'Releases:' below.) Access: ------- Actalk system and related documentation and publications are available through WWW (world wide web)/Mosaic as well as simple ftp. WWW address is: http://web.yl.is.s.u-tokyo.ac.jp/members/briot/actalk/actalk.html Direct (anonymous) ftp access may also be done through the following server: ftp camille.is.s.u-tokyo.ac.jp (133.11.12.1) cd pub/members/briot/actalk or: ftp://camille.is.s.u-tokyo.ac.jp/pub/members/briot/actalk Note: there is also a mirror image on the following server: ftp ftp.ibp.fr cd /ibp/softs/litp/actalk or: ftp://ftp.ibp.fr/ibp/softs/litp/actalk There you will find the following directories/files: /, e.g. 06/ release , e.g. 06, subdirectory README this info file actalk.html a HTML info file for WWW/Mosaic papers/ publications subdirectory Releases: --------- Current releases are to be found in directories, e.g., 01/ version 3 release 01 06/ version 3 release 06 Please move to the chosen release directory. We suggest you the latest one, that is largest release number. Every release holds a version file, please read it in order to get information on different releases and their respective differences/updates. Installation: ------------- Once you moved to a specific release directory, you may retrieve and install the platform. You will find two files: VERSION_3.* info file about current version/release, actalk-3.*.tar.Z the source and info tar file. (or actalk-3.*.tar.gz) (where * is current release number) Info file VERSION_3.* will tell you what are the differences with previous versions/releases of Actalk. To install the platform, first untar the tar file actalk-3.*.tar.Z/gz after uncompressing it: uncompress actalk-3.*.tar.Z (or gunzip actalk-3.*.tar.gz) tar -xf actalk-3.*.tar (Note: WWW/Mosaic, if used, would extract the files transparently.) This will create the following files: INFO info file about actual installation and use, Actalk-FileIn.st the loading file, src/ directory containing source files. You may then read info file INFO for installation guidance. (To load Actalk, you just have to update the header of file Actalk-FileIn.st). Documentation: -------------- Info file INFO provides minimal information on how to install the platform, and principles of use. Most of information is currently located as comments onto each class and method of the Actalk hierarchy. So look for comments! Also look for examples! (class method protocol 'example' in example categories, that is category names ending with 'Ex' or 'Examples'). Publications about Actalk may be found within the papers/ subdirectory (of the main actalk/ directory) and are summarized/indexed by the info file: PAPERS.html. Again note that user-friendly access is achieved through WWW/Mosaic. (see section 'Access:' above). Warning: -------- This is a prototype and open system. It has been commented, cleaned up and checked. Meanwhile please don't expect a bullet proof machine! We are warmly welcoming any feedback! Please share your experience! Scope and copyright: -------------------- Actalk is distributed freely on condition that you observe following conditions in respect of the whole system, and on any significant part of it which is separately transmitted or stored: * You must ensure that every copy includes this notice, and that source and author(s) of the material are acknowledged. * These conditions must be imposed on anyone who receives a copy. * The material shall not be used for commercial gain without the prior written consent of the author(s). (Note: we borrowed the conditions defined by the Manchester Smalltalk Goodies Archive). Author(s): ---------- Actalk has been initially designed and developed by Jean-Pierre Briot. Current version 3 has also been developed by him. Meanwhile, many people contributed to the development of Actalk. Loic Lescaudron has been a key contributor as the designer and implementer of version 2 (implemented in Smalltalk-80 version 2.5) which included a rich set of programming environment tools. More detailed acknowledgements to contributors and influences may be found in the info file INFO. Contacts: --------- Jean-Pierre Briot LIP6, UPMC - Case 169 4 place Jussieu 75252 Paris Cedex 05 France tel: +33 (1) 44 27 36 67 fax: +33 (1) 44 27 70 00 e-mail: Jean-Pierre.Briot@lip6.fr http://www-laforia.lip6.fr/~briot