Abstract
Concurrent object-oriented programming in Beta is based on semaphores and coroutines and the ability to define high-level concurrency abstractions like monitors, and rendezvous-based communication, and their associated schedulers. The coroutine mechanism of SIMULA has been generalized into the notions of concurrent and alternating objects. Alternating objects may be used to start a cooperative thread for each possible blocking communication and is thus an alternative to asynchronous messages and guarded commands. Beta like SIMULA, the first OO language, was designed as a language for modeling as well as programming, and we describe how this has had an impact on the design of the language. Although Beta supports the definition of high-level concurrency abstractions, the use of these rely on the discipline of the programmer as is the case for Java and other mainstream OO languages. We introduce the notion of subpattern (including subclass) restrictions as a mechanism for defining safe concurrency abstractions. Subpattern restrictions have been implemented in a new experimental version of Beta, called xBeta .
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Ada. Ada reference manual. proposed standard document (1980)
Agha, G.: Actors: a model of concurrent computation in distributed systems. MIT Press, Cambridge (1986)
Agha, G.: Concurrent object-oriented programming. Communications of the ACM 35(9), 125–141 (1990)
Aldrich, J., Chambers, C.: Ownership Domains: Separating Aliasing Policy from Mechanism. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 1–25. Springer, Heidelberg (2004)
Almeida, P.S.: Balloon Types: Controlling Sharing of State in Data Types. In: Akşit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 32–59. Springer, Heidelberg (1997)
Armstrong, J., Virding, R., Williams, M.: Concurrent Programming in Erlang. Prentice Hall (1993)
Bernstein, A.J.: Output Guards and Nondeterminism in “Communicating Sequential Processes”. ACM Transactions on Programming Languages and Systems (TOPLAS) 2(2), 234–238 (1980)
Black, A., Hutchinson, N., Jul, E., Levy, H.: Object Structure in the Emerald System. In: OOPLSA 1986 – Object-Oriented Programming Systems, Languages and Applications, pp. 78–86. ACM SIGPLAN (1986)
Blake, E., Cook, S.: On Including Part Hierarchies in Object-Oriented Languages, with an Implementation in Smalltalk. In: Bézivin, J., Hullot, J.-M., Lieberman, H., Cointe, P. (eds.) ECOOP 1987. LNCS, vol. 276, pp. 41–50. Springer, Heidelberg (1987)
Booch, G.: Object-Oriented Analysis and Design with Applications. Benjamin/Cummings, Redwood City (1991)
Brinch-Hansen, P.: The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls. Springer (2002)
Brinch-Hansen, P.: The Programming Language Concurrent Pascal. IEEE Transactions on Software Engineering SE-1(2) (1975)
Brinch-Hansen, P.: Java’s insecure parallelism. ACM SIGPLAN Notices 34(4), 38–45 (1999)
Budd, T.: An Introduction to Object-Oriented Programming, 3rd edn. Addison Wesley (2002)
Coad, P., Yourdon, E.: Object-Oriented Analysis. Prentice-Hall, Englewood Cliffs (1991)
Conway, M.E.: Design of a Separable Transition-Diagram Compiler. Communications of the ACM 6(7), 396–408 (1963)
Cook, S.: Object Technology – A Grand Narrative? In: Thomas, D. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 174–179. Springer, Heidelberg (2006)
Cook, W.R.: Peak Objects. In: Thomas, D. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 180–185. Springer, Heidelberg (2006)
Dahl, O.-J., Hoare, C.A.R.: Hierarchical Program Structures. Academic Press (1972)
Dahl, O.-J., Myhrhaug, B., Nygaard, K.: SIMULA 67 Common Base Language (Editions 1968, 1970, 1972, 1984). Technical report, Norwegian Computing Center (1968)
Dahl, O.-J., Nygaard, K.: SIMULA—a Language for Programming and Description of Discrete Event Systems. Technical report, Norwegian Computing Center (1965)
Dahl, O.-J., Nygaard, K.: SIMULA: an ALGOL-based Simulation Language. Communications of the ACM 9(9), 671–678 (1966)
Dahl, O.-J., Nygaard, K.: The Development of the SIMULA Languages. In: ACM SIGPLAN History of Programming Languages Conference (1978)
Dahl, O.-J., Wang, A.: Coroutine Sequencing in a Block Structured Environment. BIT 11, 425–449 (1971)
Dijkstra, E.W.: Guarded Commands, Nondeterminacy and the Formal Derivation of Programs. Communications of the ACM 18, 453–457 (1975)
Google. Dart – Build HTML5 Apps for the Modern Web. Technical report (2011), http://www.dartlang.org/
Gosling, J., Joy, B., Steele, G.: The Java (TM) Language Specification. Addison-Wesley (1996)
Griswold, R.E., Hanson, D.R., Korb, J.T.: Generators in Icon. ACM Trans. on Programming Languages and Systems 3(2), 144–161 (1981)
Hewitt, C., Bishop, P., Steiger, R.: A universal modular ACTOR formalism for artificial intelligence. In: IJCAI 1973 – 3rd International Joint Conference on Artificial Intelligence, pp. 235–245 (1973)
Hoare, C.A.R.: Notes on Data Structuring. Academic Press, London (1972)
Hoare, C.A.R.: Hints on Programming Language Design. Technical report, Computer Science Department, Stanford University (1973)
Hoare, C.A.R.: Communicating Sequential Processes. Communications of the ACM 21(8) (1978)
Hogg, J.: Islands: Alisasing Protectio in Object-Oriented Languages. In: OOPSLA 1996 – Object-Oriented Programming Systems, Languages and Applications (1991)
Kernighan, B.W., Ritchie, D.M.: The C Programming Language, 2nd edn. Prentice Hall, Englewood Cliffs (1978)
Kreutzer, W., Østerbye, K.: BetaSim - a framework for discrete event modeling & simulation. Simulation - Practice & Theory (1999)
Kristensen, B.B., Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Abstraction Mechanisms in the BETA Programming Language. In: Tenth ACM Symposium on Principles of Programming Languages (1983)
Kristensen, B.B., Møller-Pedersen, B., Chepoi, V.: Classification of Actions or Inheritance also for Methods. In: Bézivin, J., Hullot, J.-M., Lieberman, H., Cointe, P. (eds.) ECOOP 1987. LNCS, vol. 276, pp. 98–107. Springer, Heidelberg (1987)
Kristensen, B.B., Madsen, O.L., Møller-Pedersen, B.: The When, Why and Why not of the BETA Programming Language. In: Hailpern, B., Ryder, B.G. (eds.) History of Progamming Languages III. SIGPLAN (2007)
Kristensen, B.B., Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Multi-sequential execution in the BETA programming language. ACM SIGPLAN Notices 20(4), 57–69 (1985)
Krogdahl, S., Olsen, K.A.: Modular and Object-Oriented Programming. Data Tid 9 (1986)
Madsen, O.L., Møller-Pedersen, B.: What Object-Oriented Programming May Be—and What It Does Not Have to Be. In: Gjessing, S., Chepoi, V. (eds.) ECOOP 1988. LNCS, vol. 322, pp. 1–20. Springer, Heidelberg (1988)
Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Object-Oriented Programming in the BETA Programming Language. Addison Wesley (1993)
Madsen, O.L.: Defining Object Semantics using Object Sequence Diagrams – or just another high-level debugger. Technical report, Aarhus University (2012)
Madsen, O.L.: Modularization and Browsing – an Integrated Design. Technical Report, Dept. of Computer Science, Aarhus University, Aarhus (2012)
Madsen, O.L., Møller-Pedersen, B.: A Unified Approach to Modeling and Programming. In: Petriu, D.C., Rouquette, N., Haugen, Ø. (eds.) MODELS 2010, Part I. LNCS, vol. 6394, pp. 1–15. Springer, Heidelberg (2010)
Magnusson, B.: Using the simioprocess library on Unix Systems. Technical report, Lund Software House AB, Sweden (1997)
Meyer, B.: Object-Oriented Software Construction. Prentice Hall (1997)
Naur, P.: Revised Report on The Algorithmic Language ALGOL 60. Communications of the ACM 6 (1963)
Nierstrass, O.: Ten Things I Hate About Object-Oriented Programming – Banquet speech given at ECOOP 2010. Maribor 2010. The JOT blog – Journal of Object Technology (June 24, 2010)
Noble, J., Vitek, J., Potter, J.: Flexible Alias Protection. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 158–185. Springer, Heidelberg (1998)
Nordlander, J., Jones, M.P., Carlsson, M., Kieburtz, D., Black, A.P.: Reactive Objects. In: Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing, ISORC 2002 (2002)
Halstead Jr., R.H.: Multilisp: A language for concurrent symbolic computation. ACM Transactions on Programming Languages and Systems 7(4), 501–538 (1985)
Stroustrup, B.: The C++ Programming Language. Addison-Wesley, Reading (1986)
Stroustrup, B.: Evolving a language in and for the real world: C++ 1991-2006. In: History of Programming Languages III. ACM (2007)
Vaucher, J.: Prefixed Procedures: A Structuring Concept for Operations. IN-FOR 13(3) (1975)
Vaucher, J., Magnusson, B.: SIMULA Frameworks: the Early Years. Wiley (1999)
Wirth, N.: Programming in Modula-2. Springer, New York (1982)
Wirth, N.: Modula-2 and Oberon. In: Hailpern, B., Ryder, B.G. (eds.) History of Progamming Languages III. SIGPLAN (2007)
Yokote, Y., Tokoro, M.: Experience and Evolution of Concurrent Smalltalk. In: OOPSLA 1987– Object-Oriented Programming Systems, Languages and Applications, pp. 406–415. ACM SIGPLAN (1987)
Yonezawa, A.: Early Concurrent/Mobile Objects. In: Thomas, D. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 198–202. Springer, Heidelberg (2006)
Yonezawa, A., Briot, J.-P., Shibayama, E.: Object-Oriented Concurrent Programming in ABCL/1. In: OOPLSA 1986 – Object-Oriented Programming Systems, Languages and Applications, pp. 258–268. ACM SIGPLAN (1986)
Østerbye, K., Kreutzer, W.: Synchronization Abstraction in the BETA Programming Language. Computer Languages 25, 165–187 (1999)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Madsen, O.L. (2014). Building Safe Concurrency Abstractions. In: Agha, G., et al. Concurrent Objects and Beyond. Lecture Notes in Computer Science, vol 8665. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-44471-9_4
Download citation
DOI: https://doi.org/10.1007/978-3-662-44471-9_4
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-662-44470-2
Online ISBN: 978-3-662-44471-9
eBook Packages: Computer ScienceComputer Science (R0)