Abstract
PROCOL is an object-oriented language with distributed delegation. It strongly supports concurrency: many objects may be active simultaneously, they execute in parallel unless engaged in communication. An object has exported operations, called Actions. Only one Action can be active at a time, however special interrupt Actions may interrupt regular Actions. Communication is performed via remote procedure call, or via a one-way synchronous message with short-time binding. In communications both client and server can be specified, either by object instance identifiers, or by type. Therefore client-server mappings may be 1-1,n-1, or 1-n, though only 1 message is transferred. PROCOL controls object access by an explicit per-object protocol. This protocol is a specification of the legality and serialization of the interaction between the object and its clients. It also provides for client type checking. The use of protocols in object communication fosters structured, safer and potentially verifiable information exchange between objects. The protocol also plays an important role as a partial interface specification. In addition it acts as a composition rule over client objects, representing relations with the client objects. PROCOL's communication binding is dynamic (run-time); it functions therefore naturally in a distributed, incremental and dynamic object environment. PROCOL also supports constraints, without compromising information hiding. An implementation is available in the form of aC extension.
This is a preview of subscription content,
to check access.References
Agha, G., Hewitt, C.: Concurrent programming using Actors. In: Yonezawa, A., Tokoro, M. (eds.) Object-oriented concurrent programming, pp. 37–53. Cambridge: MIT Press 1987
America, P.: POOL-T: A parallel object-oriented language. In: Yonezawa, A., Tokoro, M. (eds.) Object-oriented concurrent programming, pp. 199–220. Cambridge: MIT Press 1987
Bal, H.E., Tanenbaum, A.S.: Distributed programming with shared data. Proceedings IEEE Conference on Computer Languages, pp. 82–91. Washington: IEEE 1988
Borning, A., Duisberg, R.: Constraint-based tools for user interface. ACM Trans. Graphics5(4), 345–374 (1986)
Campbell, R.H., Habermann, A.N.: The specification of process synchronization by path expressions (Lect. Notes Comput. Sci., Vol. 16, pp. 89–102). Berlin Heidelberg New York: Springer 1974
Cox, B.J.: Object-oriented programming. An evolutionary approach. Reading: Addison-Wesley 1987
Dahl, O.-J., Myhrhaug, B., Nygaard, K.: Simula 67 common base language (NCC Publications S-52). Oslo: Norwegian Computing Center 1967
Feldman, J.: High-level programming for distributed computing. Commun. ACM22(6), 353–359 (1979)
Gehani, N.: The concurrent C programming language. Reading, Mass.: Addison-Wesley 1989
Hewitt, C.: Laws for communicating parallel processes. In: Gilchrist, B. (eds.), IFIP Information Processing, Vol. 77, pp. 987–992. Amsterdam: North-Holland 1977
Hoare, C.A.R.: Communicating sequential processing. Commun. ACM21(8), 666–677 (1978)
Ichbiah, J. et al.: Rationale for the design of the ADA programming language. Sigplan Notices (ACM)14(6) (1979), part B (1980)
Leler, W.: Constraint programming languages. Their specification and generation. Reading Mass: Addison-Wesley 1988
Liskov, B., Snyder, A., Atkinson, R., Schaffert, C.: Abstraction mechanisms in CLU. Commun. ACM20(8), 564–575 (1977)
Meyer, B.: Object-oriented software construction. Englewood Cliffs: Prentice Hall 1988
Oosterom, P. van, Laffra, C.: Persistent graphical objects in PROCOL. In: Bézivin, J., Meyer, B., Nerson, J.M. (eds). TOOLS 2, the TOOLS'90 Proceedings, pp. 271–283, 1990
Schaffert, C., Cooper, T., Bullis, B., Kilian, M., Wilpolt, C.: An introduction to Trellis/Owl. ACM Conference Proceedings OOPSLA'86, Portland, Special Issue. SigPlan Notices23(11), 9–16 (1986)
Shaw, M., Wulf, W.A., London, R.L.: Abstraction and verification in Alphard: defining and specifying iteration and generators. Commun. ACM20(8), 553–564 (1977)
Stein, L.A.: Delegation is Inheritance. ACM Conference Proceedings OOPSLA'87, Orlando, Special Issue. SigPlan Notices22(12), 138–146 (1987)
Stroustrup, B.: The C++ programming language. Reading, Mass.: Addison-Wesley 1986
Tripathi, A., Berge, E., Aksit, M.: An implementation of the object-oriented concurrent programming language SINA. Software-Pract. Exp.19(3), 235–256 (1989)
Bos, J. van den, Plasmeijer, M.J., Stroet, J.W.M.: Process communication based on input specifications. ACM-TOPLAS (Trans. Programm. Languages Syst.)3(3), 224–250 (1981)
Bos, J. van den: ABSTRACT INTERACTION TOOLS: A language for user interface management systems. ACM-TOPLAS (Trans. Programm. Languages Syst.)10(2), 215–247 (1988)
Bos, J. van den: PCOL — A protocol-constrained object language. SIGPLAN Notices22(9), 14–19 (1987)
Bos, J. van den: PROCOL — A protocol-constrained concurrent object-oriented language. SIGPLAN Notices, (Special Issue)24(4), 149–151 (1989)
Bos, J. van den, Laffra, C.: PROCOL — A parallel object language with protocols. ACM Conference Proceedings OOPSLA'89, New Orleans (Special Issue) SigPlan Notices23(11), 95–102 (1989)
Bos, J. van den: PROCOL — A protocol-constrained concurrent object-oriented language. Inform. Process. Lett.32, 221–227 (1989)
Xerox Learning Research Group: The Smalltalk-80 system. BYTE6(8), 36–48 (1981)
Yonezawa, A., Briot, J.-P., Shibayama, E.: Object-oriented concurrent programming in ABCL/1. ACM Conference Proceedings OOPSLA'86, Portland (Special Issue) SigPlan Notices21 (10), 258–268 (1989)
Author information
Authors and Affiliations
Additional information
This author is supported by the Dutch Science Organization NWO
Rights and permissions
About this article
Cite this article
van den Bos, J., Laffra, C. Procol. Acta Informatica 28, 511–538 (1991). https://doi.org/10.1007/BF01463943
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF01463943