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, access via your 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
Gilad Bracha. Newspeak Programming Language Draft Specification Version 0.05. Tech. rep. Ministry of Truth, 2009.
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.
William R. Cook. “On understanding data abstraction, revisited”. In: OOPSLA Proceedings. 2009, pp. 557–572.
Christos Dimoulas et al. “Declarative Policies for Capability Control”. In: Proceedings of the 27th IEEE Computer Security Foundations Symposium. June 2014.
Sophia Drossopoulou, James Noble, and Mark. S. Miller. “Swapsies on the Internet”. In: PLAS 2015.
Adele Goldberg and David Robson. Smalltalk-80: The Language and its Implementation. Addison-Wesley, 1983.
Donald Gordon and James Noble. “Dynamic Ownership in a Dynamic Language”. In: DLS Proceedings. 2007, pp. 9–16.
Olivier Gruber and Fabienne Boyer. “Ownership-Based Isolation for Concurrent Actors on Multi-core Machines”. In: ECOOP. 2013, pp. 281–301.
Butler W. Lampson. “Protection”. In: Operating Systems Review 8.1 (Jan. 1974), pp. 18–24.
Barbara Liskov et al. “Abstraction Mechanisms in CLU” In: Comm. ACM 20.8 (Aug. 1977), pp. 564–576.
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.
Mark S. Miller, Tom Van Cutsem, and Bill Tulloh. “Distributed Electronic Rights in JavaScript”. In: ESOP. 2013.
Mark Samuel Miller, Chip Morningstar, and Bill Frantz. “Capability-Based Financial Instruments: From Object to Capabilities”. In: Financial Cryptography. Springer, 2000.
Mark Samuel Miller. “Robust Composition: Towards a Unified Approach to Access Control and Concurrency Control”. PhD thesis. Baltimore, Maryland, 2006.
Mark Samuel Miller. “Secure Distributed Programming with Object-capabilities in JavaScript”. Talk at Vrije Universiteit Brussel, mobicrant-talks.eventbrite.com. Oct. 2011.
James H. Morris Jr “Protection in Programming Languages”. In: CACM 16.1 (1973).
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.
James Noble. “Iterators and Encapsulation”. In: TOOLS Europe. 2000.
James Noble, David Clarke, and John Potter “Object Ownership for Dynamic Alias Protection”. In: TOOLS Pacific 32. 1999.
James Noble and Alex Potanin. “On Owners-as-Accessors”. In: IWACO Proceedings. 2014.
James Noble et al. “Abstract Data Types in Object-Capability Systems”. In: IWACO Proceedings. 2016.
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.
James Noble et al. “Towards a Model of Encapsulation”. In: IWACO Proceedings. Ed. by Dave Clarke. UU-CS-2003 030. Utrecht University, July 2003.
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.
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
David Ungar and Randall B. Smith. “SELF: The Power of Simplicity”. In: Lisp and Symbolic Computation 4.3 (June 1991).
Erwann Wernli, Pascal Maerki, and Oscar Nierstrasz. “Ownership, Filters and Crossing Handlers”. In: Dynamic Language Symposium (DLS). 2012.
Williaam A. Whitaker. “Ada - The Project: The DoD High Order Language Working Group”. In: HOPL Preprints. 1993, pp. 299–331.
Niklaus Wirth. Programming in Modula-2. isbn 0-387-15078-1. Springer Verlag, 1985.
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.
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
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer Nature Switzerland AG
About this chapter
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)