Friday, March 31, 2006
SCOOPLI 3.2
SCOOPLI is an ongoing ETH Zurich research project by Volkan Arslan and others to implement Meyer's "Simple Concurrent Object Oriented Programming".
SCOOP starts from the observation that the basic framework of object-oriented computation lends itself naturally to a concurrent extension. Objects are independent entities with their own state and controlled access to their mechanisms. Contrary to most other approaches to concurrent O-O programming, we do not attempt to make objects "active", an approach that quickly leads to contradictions such as the "inheritance anomaly". Instead, SCOOP makes explicit the notion of processor, implicit in usual views of computation. Programs apply actions to objects using processors:
The approach taken is to implement SCOOP as a library, and to provide a preprocessor to convert SCOOP programs (using the "separate" keyword) into compilable Eiffel programs using the SCOOPLI library.
Version 3.2 of SCOOPLI was released last month, and now supports:
A range of examples is provided, including the usual suspects (bounded buffer, dining philosophers, elevator, etc).
Links:
SCOOP starts from the observation that the basic framework of object-oriented computation lends itself naturally to a concurrent extension. Objects are independent entities with their own state and controlled access to their mechanisms. Contrary to most other approaches to concurrent O-O programming, we do not attempt to make objects "active", an approach that quickly leads to contradictions such as the "inheritance anomaly". Instead, SCOOP makes explicit the notion of processor, implicit in usual views of computation. Programs apply actions to objects using processors:
The approach taken is to implement SCOOP as a library, and to provide a preprocessor to convert SCOOP programs (using the "separate" keyword) into compilable Eiffel programs using the SCOOPLI library.
Version 3.2 of SCOOPLI was released last month, and now supports:
- Declaration of separate entities
- Enclosing routines
- Separate feature calls
- Passing expanded objects as arguments and results of separate calls
- Passing separate references as arguments and results of separate calls
- Passing non-separate references as arguments and results of separate calls
- Wait-by-necessity
A range of examples is provided, including the usual suspects (bounded buffer, dining philosophers, elevator, etc).
Links: