Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/2983990.2984022acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

OrcO: a concurrency-first approach to objects

Published: 19 October 2016 Publication History

Abstract

The majority of modern programming languages provide concurrency and object-orientation in some form. However, object-oriented concurrency remains cumbersome in many situations. We introduce the language OrcO, Orc with concurrent Objects, which enables a flexible style of concurrent object-oriented programming. OrcO extends the Orc programming language by adding abstractions for programming-in-the-large; namely objects, classes, and inheritance. OrcO objects are designed to be orthogonal to concurrency, allowing the concurrent structure and object structure of a program to evolve independently. This paper describes OrcO's goals and design and provides examples of how OrcO can be used to deftly handle events, object management, and object composition.

Supplementary Material

Auxiliary Archive (p548-peters-s.zip)
The prototype system used in the development of the paper. This includes source code and built software and runnable versions of the examples from the paper.

References

[1]
G. Agha. Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Dec. 1986. ISBN 0-262- 01092-5.
[2]
J. Armstrong. Erlang – A survey of the language and its industrial applications. In The Ninth Exhibition and Symposium on Industrial Applications of Prolog (INAP), 1996.
[3]
M. Bagherzadeh and H. Rajan. Panini: A concurrent programming model for solving pervasive and oblivious interference. In 14th International Conference on Modularity (MODULARITY 2015), pages 93–108. ACM, 2015.
[5]
A. Black, N. Hutchinson, E. Jul, and H. Levy. Object structure in the Emerald system. In OOPSLA ’86: Object-Oriented Programming Systems, Languages, and Applications: Conference Proceedings, pages 78–86, New York, 1986. ACM.
[7]
A. P. Black, N. C. Hutchinson, E. Jul, and H. M. Levy. The development of the Emerald programming language. In Proceedings: The Third ACM SIGPLAN History of Programming Languages Conference (HOPL-III), pages 11–1–11–51, New York, 2007. ACM.
[8]
G. Bracha and W. Cook. Mixin-based inheritance. In OOPSLA/ECOOP ’90: Proceedings of Joint Conference on Object-Oriented Programming Systems, Languages, and Applications / European Conference on Object-Oriented Programming, pages 303–311. ACM, 1990.
[9]
S. Brandauer, E. Castegren, D. Clarke, K. Fernandez-Reyes, E. B. Johnsen, K. I. Pun, S. L. T. Tarifa, T. Wrigstad, and A. M. Yang. Parallel objects for multicores: A glimpse at the parallel language Encore. In M. Bernardo and B. E. Johnsen, editors, Formal Methods for Multicore Programming: 15th International School on Formal Methods for the Design of Computer, Communication, and Software Systems, SFM 2015, pages 1–56, Cham, 2015. Springer International Publishing.
[10]
J.-P. Briot. Actalk: A testbed for classifying and designing actor languages in the Smalltalk-80 environment. In ECOOP 89: Proceedings of the Third European Conference on Object-Oriented Programming, pages 109–129. Cambridge University Press, 1989. ISBN 0-521-38232-7.
[11]
J.-P. Briot, R. Guerraoui, and K.-P. Lohr. Concurrency and distribution in object-oriented programming. ACM Comput. Surv., 30(3):291–329, Sept. 1998.
[12]
D. Caromel and L. Henrio. A Theory of Distributed Objects: Asynchrony — Mobility — Groups — Components, chapter Asynchronous Sequential Processes, pages 69–74. Springer, 2005.
[13]
D. Caromel, C. Delbé, A. Di Costanzo, M. Leyton, and Others. ProActive: An integrated platform for programming and running applications on grids and P2P systems. Comput. Methods Sci. Technol., 12(1):69–77, 2006.
[15]
V. Cavé, J. Zhao, J. Shirako, and V. Sarkar. Habanero-Java: The new adventures of old X10. In Proceedings of the 9th International Conference on Principles and Practice of Programming in Java (PPPJ 2011), pages 51–61. ACM, 2011.
[17]
K. M. Chandy and J. Misra. Parallel Program Design: A Foundation. Addison-Wesley, 1988. ISBN 0-201-05866-9.
[18]
P. Charles, C. Grothoff, V. Saraswat, C. Donawa, A. Kielstra, K. Ebcioglu, C. von Praun, and V. Sarkar. X10: An objectoriented approach to non-uniform cluster computing. In OOPSLA ’05: 20th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 519–538. ACM, 2005.
[19]
W. Cook and J. Misra. Structured interacting computations. In Software-Intensive Systems and New Computing Paradigms: Challenges and Visions, volume 5380 of Lecture Notes in Computer Science, pages 139–145. Springer, 2008.
[21]
J. De Koster, S. Marr, T. Van Cutsem, and T. D’Hondt. Domains: Sharing state in the communicating event-loop actor model. Comput. Lang. Syst. Struct., 45:132–160, 2016.
[23]
J. Dedecker, T. Van Cutsem, S. Mostinckx, T. D’Hondt, and W. De Meuter. Ambient-oriented programming in AmbientTalk. In D. Thomas, editor, ECOOP 2006 – Object-Oriented Programming: 20th European Conference, Nantes, France, July 3-7, 2006. Proceedings, volume 4067 of Lecture Notes in Computer Science, pages 230–254, Berlin, 2006. Springer.
[25]
Ecma International. ECMAScript 2015 language specification. Standard ECMA-262, 6th Edition, Ecma International, Geneva, June 2015.
[26]
A. Goldberg and D. Robson. Smalltalk-80: The Language and Its Implementation. Addison-Wesley, 1983. ISBN 0-201- 11371-6.
[27]
R. H. Halstead. Multilisp: A language for concurrent symbolic computation. ACM Trans. Program. Lang. Syst., 7(4):501–538, Oct. 1985.
[28]
D. Kitchin, W. R. Cook, and J. Misra. A language for task orchestration and its semantic properties. In CONCUR 2006 – Concurrency Theory: 17th International Conference: Proceedings, volume 4137 of Lecture Notes in Computer Science, pages 477–491. Springer, 2006.
[29]
D. Kitchin, A. Quark, W. Cook, and J. Misra. The Orc programming language. In Formal Techniques for Distributed Systems: Joint 11th IFIP WG 6.1 International Conference FMOODS 2009 and 29th IFIP WG 6.1 International Conference FORTE 2009: Proceedings, volume 5522 of Lecture Notes in Computer Science, pages 1–25. Springer, 2009. 02138-1_1.
[30]
R. G. Lavender and D. C. Schmidt. Active Object: An object behavioral pattern for concurrent programming. In Pattern Languages of Program Design 2 (PLoP’95), pages 483–499. Addison-Wesley, 1996. ISBN 0-201-895277.
[31]
J. McAffer. Meta-level programming with CodA. In M. Tokoro and R. Pareschi, editors, ECOOP ’95 — Object-Oriented Programming: 9th European Conference, pages 190–214, Berlin, Heidelberg, 1995. Springer Berlin Heidelberg. 540-49538-X_10.
[32]
Microsoft Corp. Asynchronous programming with async and await (C# and Visual Basic), 2015.
[33]
G. Milicia and V. Sassone. Jeeg: A programming language for concurrent objects synchronization. In JGI’02: Proceedings of the 2002 Joint ACM-ISCOPE Conference on Java Grande, pages 212–221. ACM, 2002.
[34]
M. S. Miller, E. D. Tribble, and J. Shapiro. Concurrency among strangers: Programming in E as plan coordination. In Trustworthy Global Computing: International Symposium, TGC 2005: Revised Selected Papers, volume 3705, pages 195– 229. Springer, 2005.
[35]
M. Odersky. The Scala language specification: Version 2.9, June 2014.
[36]
M. Odersky, V. Cremet, C. Röckl, and M. Zenger. A nominal theory of objects with dependent types. In ECOOP 2003 – Object-Oriented Programming: 17th European Conference: Proceedings, volume 2743 of Lecture Notes in Computer Science, pages 201–224. Springer, 2003. 3-540-45070-2_10.
[37]
M. Odersky, P. Altherr, V. Cremet, B. Emir, S. Maneth, S. Micheloud, N. Mihaylov, M. Schinz, E. Stenman, and M. Zenger. An overview of the Scala programming language. Technical Report IC/2004/64, EPFL, Lausanne, Switzerland, 2004.
[38]
X. Qi and A. C. Myers. Masked types for sound object initialization. In POPL’09: Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’09, pages 53–65, New York, NY, USA, 2009. ACM.
[39]
J. Schäfer and A. Poetzsch-Heffter. JCoBox: Generalizing active objects to concurrent components. In ECOOP 2010 – Object-Oriented Programming: 24th European Conference: Proceedings, volume 6183 of Lecture Notes in Computer Science, pages 275–299. Springer, 2010. 3-642-14107-2_13.
[40]
C. Scholliers, É. Tanter, and W. De Meuter. Parallel actor monitors: Disentangling task-level parallelism from data partitioning in the actor model. Sci. Comput. Program., 80:52–64, Feb. 2014.
[41]
Y. Selivanov. PEP 492 — Coroutines with async and await syntax, 2015.
[42]
G. Smolka, M. Henz, and J. Würtz. Object-oriented concurrent constraint programming in Oz. In Grundlagen und Anwendungen der Künstlichen Intelligenz: 17. Fachtagung für Künstliche Intelligenz, pages 44–59. Springer, 1993. 642-78545-0_3.
[43]
D. Syme, T. Petricek, and D. Lomov. The F# asynchronous programming model. In Practical Aspects of Declarative Languages: 13th International Symposium, PADL 2011: Proceedings, volume 6539 of Lecture Notes in Computer Science, pages 175–189. Springer, 2011. 2_15.
[44]
J. A. Thywissen, A. M. Peters, and W. R. Cook. Implicitly distributing pervasively concurrent programs: Extended abstract. In First Workshop on Programming Models and Languages for Distributed Computing, PMLDC ’16, pages 1:1–1:4, New York, NY, USA, 2016. ACM.
[45]
Typesafe Inc. Akka, 2016.
[46]
S. Vinoski. Reliability with Erlang. IEEE Internet Computing, 11(6):79–81, Nov. 2007.
[47]
A. Yonezawa. A reflective object oriented concurrent language ABCL/R. In T. Ito and R. H. Halstead, editors, Parallel Lisp: Languages and Systems: US/Japan Workshop on Parallel Lisp: Proceedings, pages 254–256, Berlin, Heidelberg, 1990. Springer Berlin Heidelberg.
[48]
A. Yonezawa, J.-P. Briot, and E. Shibayama. Object-oriented concurrent programming in ABCL/1. In OOPSLA ’86: Objectoriented Programming Systems, Languages, and Applications: Conference Proceedings, pages 258–268, New York, 1986.

Cited By

View all
  • (2022)Parla: A Python Orchestration System for Heterogeneous ArchitecturesSC22: International Conference for High Performance Computing, Networking, Storage and Analysis10.1109/SC41404.2022.00056(1-15)Online publication date: Nov-2022
  • (2019)PorcE: a deparallelizing compilerProceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3357390.3361023(117-130)Online publication date: 21-Oct-2019
  • (2019)OOlongACM SIGAPP Applied Computing Review10.1145/3307624.330762918:4(47-60)Online publication date: 15-Jan-2019
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA 2016: Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications
October 2016
915 pages
ISBN:9781450344449
DOI:10.1145/2983990
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 19 October 2016

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Composition
  2. Orc
  3. futures
  4. language design
  5. mixin inheritance
  6. object supervision

Qualifiers

  • Research-article

Conference

SPLASH '16
Sponsor:

Acceptance Rates

Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 13 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2022)Parla: A Python Orchestration System for Heterogeneous ArchitecturesSC22: International Conference for High Performance Computing, Networking, Storage and Analysis10.1109/SC41404.2022.00056(1-15)Online publication date: Nov-2022
  • (2019)PorcE: a deparallelizing compilerProceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3357390.3361023(117-130)Online publication date: 21-Oct-2019
  • (2019)OOlongACM SIGAPP Applied Computing Review10.1145/3307624.330762918:4(47-60)Online publication date: 15-Jan-2019
  • (2018)OOlongProceedings of the 33rd Annual ACM Symposium on Applied Computing10.1145/3167132.3167243(1022-1029)Online publication date: 9-Apr-2018
  • (2018)The Domain-Specific Language Strumok for Describing Actor-Oriented Systems with Shared MemoryCybernetics and Systems Analysis10.1007/s10559-018-0085-154:5(833-841)Online publication date: 1-Sep-2018

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media