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.
Supplemental Material
Available for Download
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.
- G. Agha. Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Dec. 1986. ISBN 0-262- 01092-5. Google Scholar
Digital Library
- 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.Google Scholar
- 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. Google Scholar
Digital Library
- doi:10.1145/2724525.2724568.Google Scholar
- 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. Google Scholar
Digital Library
- doi:10.1145/28697.28706.Google Scholar
- 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. doi:10.1145/1238844.1238855. Google Scholar
Digital Library
- 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. doi:10.1145/97945.97982. Google Scholar
Digital Library
- 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. doi:10.1007/978-3-319-18941-3_1.Google Scholar
- 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.Google Scholar
- 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. doi:10.1145/292469.292470. Google Scholar
Digital Library
- D. Caromel and L. Henrio. A Theory of Distributed Objects: Asynchrony — Mobility — Groups — Components, chapter Asynchronous Sequential Processes, pages 69–74. Springer, 2005. doi:10.1007/3-540-27245-3_4.Google Scholar
- 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.Google Scholar
Cross Ref
- doi:10.12921/cmst.2006.12.01.69-77.Google Scholar
- 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. Google Scholar
Digital Library
- doi:10.1145/2093157.2093165.Google Scholar
- K. M. Chandy and J. Misra. Parallel Program Design: A Foundation. Addison-Wesley, 1988. ISBN 0-201-05866-9. Google Scholar
Digital Library
- 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. doi:10.1145/1094811.1094852. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- doi:10.1007/978-3-540-89437-7_9.Google Scholar
- 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. Google Scholar
Digital Library
- doi:10.1016/j.cl.2016.01.003.Google Scholar
- 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. Google Scholar
Digital Library
- doi:10.1007/11785477_16.Google Scholar
- Ecma International. ECMAScript 2015 language specification. Standard ECMA-262, 6th Edition, Ecma International, Geneva, June 2015.Google Scholar
- A. Goldberg and D. Robson. Smalltalk-80: The Language and Its Implementation. Addison-Wesley, 1983. ISBN 0-201- 11371-6. Google Scholar
Digital Library
- R. H. Halstead. Multilisp: A language for concurrent symbolic computation. ACM Trans. Program. Lang. Syst., 7(4):501–538, Oct. 1985. doi:10.1145/4472.4478. Google Scholar
Digital Library
- 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. doi:10.1007/11817949_32. Google Scholar
Digital Library
- 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. doi:10.1007/978-3-642- 02138-1_1. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- 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. doi:10.1007/3- 540-49538-X_10. Google Scholar
Digital Library
- Microsoft Corp. Asynchronous programming with async and await (C# and Visual Basic), 2015.Google Scholar
- 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. doi:10.1145/583810.583834. Google Scholar
Digital Library
- 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. doi:10.1007/11580850_12. Google Scholar
Digital Library
- M. Odersky. The Scala language specification: Version 2.9, June 2014.Google Scholar
- 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. doi:10.1007/978- 3-540-45070-2_10.Google Scholar
Cross Ref
- 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.Google Scholar
- 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. doi:10.1145/1480881.1480890. Google Scholar
Digital Library
- 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. doi:10.1007/978- 3-642-14107-2_13. Google Scholar
Digital Library
- 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. doi:10.1016/j.scico.2013.03.011. Google Scholar
Digital Library
- Y. Selivanov. PEP 492 — Coroutines with async and await syntax, 2015.Google Scholar
- 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. doi:10.1007/978-3- 642-78545-0_3. Google Scholar
Digital Library
- 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. doi:10.1007/978-3-642-18378- 2_15. Google Scholar
Digital Library
- 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. doi:10.1145/2957319.2957370. Google Scholar
Digital Library
- Typesafe Inc. Akka, 2016.Google Scholar
- S. Vinoski. Reliability with Erlang. IEEE Internet Computing, 11(6):79–81, Nov. 2007. doi:10.1109/MIC.2007.132. Google Scholar
Digital Library
- 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. doi:10.1007/BFb0024158. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- ACM. doi:10.1145/28697.28722.Google Scholar
Index Terms
OrcO: a concurrency-first approach to objects
Recommendations
OrcO: a concurrency-first approach to objects
OOPSLA 2016: Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and ApplicationsThe 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 ...
Teaching Visual Basic.NET objects-first
Object-orientation is the prevalent paradigm in programming. Despite this, programming students are usually taught procedural programming first in their first course. Even languages that are object-oriented, such as Java, are taught by first introducing ...
A core calculus of mixins and incomplete objects
OOPSLA '04: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applicationsOur calculus combines class-based features with object-based ones, with the aim of fitting into a unified setting the "best of both worlds". In a mixin-based approach, mixins are seen as <i>incomplete classes</i> from which <i>incomplete objects</i> can ...







Comments