skip to main content
research-article

OrcO: a concurrency-first approach to objects

Published:19 October 2016Publication History
Skip Abstract Section

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.

Skip Supplemental Material Section

Supplemental Material

References

  1. G. Agha. Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Dec. 1986. ISBN 0-262- 01092-5. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. doi:10.1145/2724525.2724568.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. doi:10.1145/28697.28706.Google ScholarGoogle Scholar
  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. doi:10.1145/1238844.1238855. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1145/97945.97982. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1007/978-3-319-18941-3_1.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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. doi:10.1145/292469.292470. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarCross RefCross Ref
  14. doi:10.12921/cmst.2006.12.01.69-77.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. doi:10.1145/2093157.2093165.Google ScholarGoogle Scholar
  17. K. M. Chandy and J. Misra. Parallel Program Design: A Foundation. Addison-Wesley, 1988. ISBN 0-201-05866-9. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1145/1094811.1094852. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. doi:10.1007/978-3-540-89437-7_9.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. doi:10.1016/j.cl.2016.01.003.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. doi:10.1007/11785477_16.Google ScholarGoogle Scholar
  25. Ecma International. ECMAScript 2015 language specification. Standard ECMA-262, 6th Edition, Ecma International, Geneva, June 2015.Google ScholarGoogle Scholar
  26. A. Goldberg and D. Robson. Smalltalk-80: The Language and Its Implementation. Addison-Wesley, 1983. ISBN 0-201- 11371-6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1007/11817949_32. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1007/978-3-642- 02138-1_1. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1007/3- 540-49538-X_10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Microsoft Corp. Asynchronous programming with async and await (C# and Visual Basic), 2015.Google ScholarGoogle Scholar
  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. doi:10.1145/583810.583834. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1007/11580850_12. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. M. Odersky. The Scala language specification: Version 2.9, June 2014.Google ScholarGoogle Scholar
  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. doi:10.1007/978- 3-540-45070-2_10.Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle Scholar
  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. doi:10.1145/1480881.1480890. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1007/978- 3-642-14107-2_13. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1016/j.scico.2013.03.011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Y. Selivanov. PEP 492 — Coroutines with async and await syntax, 2015.Google ScholarGoogle Scholar
  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. doi:10.1007/978-3- 642-78545-0_3. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1007/978-3-642-18378- 2_15. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1145/2957319.2957370. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Typesafe Inc. Akka, 2016.Google ScholarGoogle Scholar
  46. S. Vinoski. Reliability with Erlang. IEEE Internet Computing, 11(6):79–81, Nov. 2007. doi:10.1109/MIC.2007.132. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. doi:10.1007/BFb0024158. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. ACM. doi:10.1145/28697.28722.Google ScholarGoogle Scholar

Index Terms

  1. OrcO: a concurrency-first approach to objects

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 51, Issue 10
        OOPSLA '16
        October 2016
        915 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/3022671
        Issue’s Table of Contents
        • 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

        Copyright © 2016 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 19 October 2016

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!