Skip to main content

Abstract and Concrete Data Types vs Object Capabilities

  • Chapter
  • First Online:
Principled Software Development

Abstract

The distinctions between the two forms of procedural data abstraction—abstract data types and objects—are well known. An abstract data type provides an opaque type declaration, and an implementation that manipulates the modules of the abstract type, while an object uses procedural abstraction to hide an individual implementation. The object-capability model has been proposed to enable object-oriented programs to be written securely, and has been adopted by a number of practical languages including JavaScript, E, and Newspeak. This chapter addresses the questions: how can we implement abstract data types in an object-capability language? and, how can we incorporate primitive concrete data types into a primarily object-oriented system?

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Gilad Bracha. Newspeak Programming Language Draft Specification Version 0.05. Tech. rep. Ministry of Truth, 2009.

    Google Scholar 

  2. Luca Cardelli et al. “Modula-3 language definition”. In: SIGPLAN Not. 27.8 (Aug. 1992), pp. 15–42. DOI: https://doi.org/10.1145/142137.142141 URL: http://doi.acm.org/10.1145/142137.142141.

    Article  Google Scholar 

  3. William R. Cook. “On understanding data abstraction, revisited”. In: OOPSLA Proceedings. 2009, pp. 557–572.

    Google Scholar 

  4. Christos Dimoulas et al. “Declarative Policies for Capability Control”. In: Proceedings of the 27th IEEE Computer Security Foundations Symposium. June 2014.

    Google Scholar 

  5. Sophia Drossopoulou, James Noble, and Mark. S. Miller. “Swapsies on the Internet”. In: PLAS 2015.

    Google Scholar 

  6. Adele Goldberg and David Robson. Smalltalk-80: The Language and its Implementation. Addison-Wesley, 1983.

    Google Scholar 

  7. Donald Gordon and James Noble. “Dynamic Ownership in a Dynamic Language”. In: DLS Proceedings. 2007, pp. 9–16.

    Google Scholar 

  8. Olivier Gruber and Fabienne Boyer. “Ownership-Based Isolation for Concurrent Actors on Multi-core Machines”. In: ECOOP. 2013, pp. 281–301.

    Google Scholar 

  9. Butler W. Lampson. “Protection”. In: Operating Systems Review 8.1 (Jan. 1974), pp. 18–24.

    Google Scholar 

  10. Barbara Liskov et al. “Abstraction Mechanisms in CLU” In: Comm. ACM 20.8 (Aug. 1977), pp. 564–576.

    Google Scholar 

  11. David MacQueen. “Modules for Standard ML”. In: LISP and Functional Programming Austin, Texas, United States: ACM, 1984, pp. 198–207. DOI: https://doi.org/10.1145/800055.802036 URL: http://doi.acm.org/10.1145/800055.802036.

  12. Mark S. Miller, Tom Van Cutsem, and Bill Tulloh. “Distributed Electronic Rights in JavaScript”. In: ESOP. 2013.

    Google Scholar 

  13. Mark Samuel Miller, Chip Morningstar, and Bill Frantz. “Capability-Based Financial Instruments: From Object to Capabilities”. In: Financial Cryptography. Springer, 2000.

    Google Scholar 

  14. Mark Samuel Miller. “Robust Composition: Towards a Unified Approach to Access Control and Concurrency Control”. PhD thesis. Baltimore, Maryland, 2006.

    Google Scholar 

  15. Mark Samuel Miller. “Secure Distributed Programming with Object-capabilities in JavaScript”. Talk at Vrije Universiteit Brussel, mobicrant-talks.eventbrite.com. Oct. 2011.

    Google Scholar 

  16. James H. Morris Jr “Protection in Programming Languages”. In: CACM 16.1 (1973).

    Google Scholar 

  17. James H. Morris Jr. “Protection in Programming Languages”. In: Commun. ACM 16.1 (Jan. 1973), pp. 15–21. ISSN: 0001-0782. DOI: https://doi.org/10.1145/361932.361937 URL: http://doi.acm.org/10.1145/361932.361937.

    Article  Google Scholar 

  18. James Noble. “Iterators and Encapsulation”. In: TOOLS Europe. 2000.

    Google Scholar 

  19. James Noble, David Clarke, and John Potter “Object Ownership for Dynamic Alias Protection”. In: TOOLS Pacific 32. 1999.

    Google Scholar 

  20. James Noble and Alex Potanin. “On Owners-as-Accessors”. In: IWACO Proceedings. 2014.

    Google Scholar 

  21. James Noble et al. “Abstract Data Types in Object-Capability Systems”. In: IWACO Proceedings. 2016.

    Google Scholar 

  22. James Noble et al. “The left hand of equals”. In: Onward! ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software. 2016, pp. 224–237. DOI: https://doi.org/10.1145/2986012.2986031.

  23. James Noble et al. “Towards a Model of Encapsulation”. In: IWACO Proceedings. Ed. by Dave Clarke. UU-CS-2003 030. Utrecht University, July 2003.

    Google Scholar 

  24. Alex Potanin, Monique Damitio, and James Noble. “Are Your Incoming Aliases Really Necessary? Counting the Cost of Object Ownership”. In: International Conference on Software Engineering (ICSE). 2013.

    Google Scholar 

  25. Eijiro Sumii and Benjamin C. Pierce. “A Bisimulation for Dynamic Sealing”. In: SIGPLAN Not. 39.1 (Jan. 2004), pp. 161–172. ISSN: 0362-1340. DOI: https://doi.org/10.1145/982962.964015 URL: http://doi.acm.org/10.1145/982962.964015

    Article  Google Scholar 

  26. David Ungar and Randall B. Smith. “SELF: The Power of Simplicity”. In: Lisp and Symbolic Computation 4.3 (June 1991).

    Google Scholar 

  27. Erwann Wernli, Pascal Maerki, and Oscar Nierstrasz. “Ownership, Filters and Crossing Handlers”. In: Dynamic Language Symposium (DLS). 2012.

    Google Scholar 

  28. Williaam A. Whitaker. “Ada - The Project: The DoD High Order Language Working Group”. In: HOPL Preprints. 1993, pp. 299–331.

    Google Scholar 

  29. Niklaus Wirth. Programming in Modula-2. isbn 0-387-15078-1. Springer Verlag, 1985.

    Google Scholar 

  30. William A. Wulf, Ralph L. London, and Mary Shaw. “An Introduction to the Construction and Verification of Alphard Programs”. In: IEEE Trans Softw. Eng. SE-2.4 (1976), pp. 253–265.

    Google Scholar 

Download references

Acknowledgements

We thank the anonymous reviewers for their comments. This work was supported in part by a James Cook Fellowship, by the Royal Society of New Zealand Marsden Fund, by Oracle Labs Australia, and by the US Department of Defense.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Alex Potanin .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer Nature Switzerland AG

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Noble, J., Potanin, A., Murray, T., Miller, M.S. (2018). Abstract and Concrete Data Types vs Object Capabilities. In: MĂĽller, P., Schaefer, I. (eds) Principled Software Development. Springer, Cham. https://doi.org/10.1007/978-3-319-98047-8_14

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-98047-8_14

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-98046-1

  • Online ISBN: 978-3-319-98047-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics