Acta Informatica

, Volume 28, Issue 6, pp 511–538 | Cite as


A concurrent object-oriented language with protocols delegation and constraints
  • Jan van den Bos
  • Chris Laffra


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.


Object Environment Information Hiding Dynamic Object Procedure Call Regular Action 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Agha, G., Hewitt, C.: Concurrent programming using Actors. In: Yonezawa, A., Tokoro, M. (eds.) Object-oriented concurrent programming, pp. 37–53. Cambridge: MIT Press 1987Google Scholar
  2. 2.
    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 1987Google Scholar
  3. 3.
    Bal, H.E., Tanenbaum, A.S.: Distributed programming with shared data. Proceedings IEEE Conference on Computer Languages, pp. 82–91. Washington: IEEE 1988Google Scholar
  4. 4.
    Borning, A., Duisberg, R.: Constraint-based tools for user interface. ACM Trans. Graphics5(4), 345–374 (1986)Google Scholar
  5. 5.
    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 1974Google Scholar
  6. 6.
    Cox, B.J.: Object-oriented programming. An evolutionary approach. Reading: Addison-Wesley 1987Google Scholar
  7. 7.
    Dahl, O.-J., Myhrhaug, B., Nygaard, K.: Simula 67 common base language (NCC Publications S-52). Oslo: Norwegian Computing Center 1967Google Scholar
  8. 8.
    Feldman, J.: High-level programming for distributed computing. Commun. ACM22(6), 353–359 (1979)Google Scholar
  9. 9.
    Gehani, N.: The concurrent C programming language. Reading, Mass.: Addison-Wesley 1989Google Scholar
  10. 10.
    Hewitt, C.: Laws for communicating parallel processes. In: Gilchrist, B. (eds.), IFIP Information Processing, Vol. 77, pp. 987–992. Amsterdam: North-Holland 1977Google Scholar
  11. 11.
    Hoare, C.A.R.: Communicating sequential processing. Commun. ACM21(8), 666–677 (1978)Google Scholar
  12. 12.
    Ichbiah, J. et al.: Rationale for the design of the ADA programming language. Sigplan Notices (ACM)14(6) (1979), part B (1980)Google Scholar
  13. 13.
    Leler, W.: Constraint programming languages. Their specification and generation. Reading Mass: Addison-Wesley 1988Google Scholar
  14. 14.
    Liskov, B., Snyder, A., Atkinson, R., Schaffert, C.: Abstraction mechanisms in CLU. Commun. ACM20(8), 564–575 (1977)Google Scholar
  15. 15.
    Meyer, B.: Object-oriented software construction. Englewood Cliffs: Prentice Hall 1988Google Scholar
  16. 16.
    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, 1990Google Scholar
  17. 17.
    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)Google Scholar
  18. 18.
    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)Google Scholar
  19. 19.
    Stein, L.A.: Delegation is Inheritance. ACM Conference Proceedings OOPSLA'87, Orlando, Special Issue. SigPlan Notices22(12), 138–146 (1987)Google Scholar
  20. 20.
    Stroustrup, B.: The C++ programming language. Reading, Mass.: Addison-Wesley 1986Google Scholar
  21. 21.
    Tripathi, A., Berge, E., Aksit, M.: An implementation of the object-oriented concurrent programming language SINA. Software-Pract. Exp.19(3), 235–256 (1989)Google Scholar
  22. 22.
    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)Google Scholar
  23. 23.
    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)Google Scholar
  24. 24.
    Bos, J. van den: PCOL — A protocol-constrained object language. SIGPLAN Notices22(9), 14–19 (1987)Google Scholar
  25. 25.
    Bos, J. van den: PROCOL — A protocol-constrained concurrent object-oriented language. SIGPLAN Notices, (Special Issue)24(4), 149–151 (1989)Google Scholar
  26. 26.
    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)Google Scholar
  27. 27.
    Bos, J. van den: PROCOL — A protocol-constrained concurrent object-oriented language. Inform. Process. Lett.32, 221–227 (1989)Google Scholar
  28. 28.
    Xerox Learning Research Group: The Smalltalk-80 system. BYTE6(8), 36–48 (1981)Google Scholar
  29. 29.
    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)Google Scholar

Copyright information

© Springer-Verlag 1991

Authors and Affiliations

  • Jan van den Bos
    • 1
  • Chris Laffra
    • 2
  1. 1.Department of Computer ScienceErasmus UniversityRotterdamThe Netherlands
  2. 2.SERC-Software Engineering Research CenterUtrechtThe Netherlands

Personalised recommendations