Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2508168.2508169acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Polymorphic identifiers: uniform resource access in objective-smalltalk

Published: 28 October 2013 Publication History
  • Get Citation Alerts
  • Abstract

    In object-oriented programming, polymorphic dispatch of operations decouples clients from specific providers of services and allows implementations to be modified or substituted without affecting clients.
    The Uniform Access Principle (UAP) tries to extend these qualities to resource access by demanding that access to state be indistinguishable from access to operations. Despite language features supporting the UAP, the overall goal of substitutability has not been achieved for either alternative resources such as keyed storage, files or web pages, or for alternate access mechanisms: specific kinds of resources are bound to specific access mechanisms and vice versa. Changing storage or access patterns either requires changes to both clients and service providers and trying to maintain the UAP imposes significant penalties in terms of code-duplication and/or performance overhead.
    We propose introducing first class identifiers as polymorphic names for storage locations to solve these problems. With these Polymorphic Identifiers, we show that we can provide uniform access to a wide variety of resource types as well as storage and access mechanisms, whether parametrized or direct, without affecting client code, without causing code duplication or significant performance penalties.

    References

    [1]
    T. Archer. Inside C#. Microsoft Press, Redmond, WA, USA, 2nd edition, 2002. ISBN 0-7356-1648-5.
    [2]
    T. Berners-Lee. RFC 2396: Uniform Resource Identifiers (URI). Technical report, MIT, 1998. URL http://www.rfc-archive.org/getrfc.php?rfc=2396.
    [3]
    T. Berners-Lee, L. Masinter, and M. McCahill. Uniform Resource Locators (URL). RFC 1738 (Proposed Standard), Dec. 1994. URL http://www.ietf.org/rfc/rfc1738.txt. Obsoleted by RFCs 4248, 4266, updated by RFCs 1808, 2368, 2396, 3986, 6196, 6270.
    [4]
    G. Bracha, P. von der Ahé, V. Bykov, Y. Kashai, W. Maddox, and E. Miranda. Modules as objects inmboxNewspeak. In Proceedings of the 24th European conference on Object-oriented programming, ECOOP'10, pages 405--428, Berlin, Heidelberg, 2010. Springer-Verlag. ISBN 3-642-14106-4, 978-3-642-14106-5. URL http://dl.acm.org/citation.cfm?id=1883978.1884007.
    [5]
    J. Clark and S. DeRose. XML path language (XPath) version 1.0. W3C recommendation, W3C, Nov. 1999. http://www.w3.org/TR/1999/REC-xpath-19991116.
    [6]
    T. Dinkelaker, M. Eichberg, and M. Mezini. An architecture for composing embedded domain-specific languages. In Proceedings of the 9th International Conference on Aspect-Oriented Software Development, AOSD '10, pages 49--60, New York, NY, USA, 2010. ACM. ISBN 978-1-60558-958-9. http://doi.acm.org/10.1145/1739230.1739237. URL http://doi.acm.org/10.1145/1739230.1739237.
    [7]
    ECMA-367: Eiffel analysis, design and programming language. ECMA (European Association for Standardizing Information and Communication Systems), pub-ECMA:adr, June 2005. URL http://www.ecma-international.org/publications/standards/Ecma-367.htm; http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-367.pdf.
    [8]
    R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, and T. Berners-Lee. Rfc 2616, hypertext transfer protocol -- http/1.1, 1999. URL http://www.rfc.net/rfc2616.html.
    [9]
    R. T. Fielding. Architectural styles and the design of network-based software architectures. PhD thesis, 2000. AAI9980887.
    [10]
    M. Fowler. Domain Specific Languages. Addison-Wesley, September 2010.
    [11]
    R. P. Gabriel. Concerns on identifier confusion inmboxCommon LISP. Personal communication, 12 2012.
    [12]
    T. Geudens. Resource-Oriented Computing with NetKernel. O'Reilly Media, May 2012.
    [13]
    A. Goldberg and D. Robson. Smalltalk-80: The Language and Its Implementation. Addison Wesley, 1983.
    [14]
    J. Gosling, B. Joy, G. Steele, and G. Bracha. Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)). Addison-Wesley Professional, 2005. ISBN 0321246780.
    [15]
    J. Gregorio, R. Fielding, M. Hadley, M. Nottingham, and D. Orchard. URI Template. RFC 6570 (Proposed Standard), Mar. 2012. URL http://www.ietf.org/rfc/rfc6570.txt.
    [16]
    C. Hofer, K. Ostermann, T. Rendel, and A. Moors. Polymorphic embedding of dsls. In Proceedings of the 7th international conference on Generative programming and component engineering, GPCE '08, pages 137--148, New York, NY, USA, 2008. ACM. ISBN 978-1-60558-267-2. http://doi.acm.org/10.1145/1449913.1449935. URL http://doi.acm.org/10.1145/1449913.1449935.
    [17]
    P. Hudak. Building domain-specific embedded languages. ACM Comput. Surv., 28, December 1996. ISSN 0360-0300. http://doi.acm.org/10.1145/242224.242477. URL http://doi.acm.org/10.1145/242224.242477.
    [18]
    A. Kantee. puffs - Pass-to-Userspace Framework File System. In AsiaBSDCon, 2007. URL http://2007.asiabsdcon.org/papers/P04-paper.pdf.
    [19]
    A. C. Kay. History of programming languages-II. chapter The early history of Smalltalk, pages 511--598. ACM, New York, NY, USA, 1996. ISBN 0-201-89502-1. 10.1145/234286.1057828. URL http://doi.acm.org/10.1145/234286.1057828.
    [20]
    S. Kochan. Programming in Objective-C 2.0. Addison-Wesley Professional, 2nd edition, 2009. ISBN 0321566157, 9780321566157.
    [21]
    B. Meyer. EiffelWorld Column. URL http://www.eiffel.com/general/column/2005/Sept_October.html.
    [22]
    B. Meyer. Object-Oriented Software Construction. Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 1st edition, 1988. ISBN 0136290493.
    [23]
    M. S. Miller. Robust composition: towards a unified approach to access control and concurrency control. PhD thesis, Baltimore, MD, USA, 2006. AAI3245526.
    [24]
    M. Odersky, L. Spoon, and B. Venners. Programming in Scala: A Comprehensive Step-by-step Guide. Artima Incorporation, USA, 1st edition, 2008. ISBN 0981531601, 9780981531601.
    [25]
    D. L. Parnas. On the criteria to be used in decomposing systems into modules. Commun. ACM, 15 (12): 1053--1058, Dec. 1972. ISSN 0001-0782. 10.1145/361598.361623. URL http://doi.acm.org/10.1145/361598.361623.
    [26]
    R. Pike, D. Presotto, K. Thompson, H. Trickey, and P. Winterbottom. The use of name space in plan 9. Operating Systems Review, 27 (2): 72--76, April 1993. URL http://plan9.bell-labs.com/sys/doc/names.pdf.
    [27]
    D. Presotto and P. Winterbottom. The organization of networks in plan 9. In USENIX Conference, pages 271--280, 1993.
    [28]
    A. Rajgarhia and A. Gehani. Performance and extension of user space file systems. In Proceedings of the 2010 ACM Symposium on Applied Computing, SAC '10, pages 206--213, New York, NY, USA, 2010. ACM. ISBN 978-1-60558-639-7. http://doi.acm.org/10.1145/1774088.1774130. URL http://doi.acm.org/10.1145/1774088.1774130.
    [29]
    D. Spinellis. A modest proposal for curing the public field phobia. SIGPLAN Not., 37 (4): 54--56, Apr. 2002. ISSN 0362--1340. 10.1145/510857.510868. URL http://doi.acm.org/10.1145/510857.510868.
    [30]
    G. L. Steele, Jr. Common LISP: the language (2nd ed.). Digital Press, Newton, MA, USA, 1990. ISBN 1-55558-041-6.
    [31]
    C. Strachey. Fundamental concepts in programming languages. Higher Order Symbol. Comput., 13: 11--49, 1967,2000. ISSN 1388--3690. 10.1023/A:1010000313106. URL http://portal.acm.org/citation.cfm?id=609150.609208.
    [32]
    D. Ungar and R. B. Smith. Self: The power of simplicity. In OOPSLA, pages 227--242, 1987.
    [33]
    D. Ungar and R. B. Smith. Self. In Proceedings of the third ACM SIGPLAN conference on History of programming languages, HOPL III, pages 9--1--9--50, New York, NY, USA, 2007. ACM. ISBN 978-1-59593-766-7. 10.1145/1238844.1238853. URL http://doi.acm.org/10.1145/1238844.1238853.
    [34]
    G. van Rossum. Python reference manual. Report CS-R9525, Apr. 1995. URL http://www.python.org/doc/ref/ref-1.html.
    [35]
    M. Weiher.mboxObjective-Smalltalk: http://objective.st, 11 2010. URL http://objective.st.

    Cited By

    View all
    • (2020)Can programmers escape the gentle tyranny of call/return?Companion Proceedings of the 4th International Conference on Art, Science, and Engineering of Programming10.1145/3397537.3397546(163-172)Online publication date: 23-Mar-2020
    • (2020)Convivial design heuristics for software systemsCompanion Proceedings of the 4th International Conference on Art, Science, and Engineering of Programming10.1145/3397537.3397543(144-148)Online publication date: 23-Mar-2020
    • (2019)Storage combinatorsProceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3359591.3359729(111-127)Online publication date: 23-Oct-2019
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    DLS '13: Proceedings of the 9th symposium on Dynamic languages
    October 2013
    118 pages
    ISBN:9781450324335
    DOI:10.1145/2508168
    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

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 28 October 2013

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. extensibility
    2. identifiers
    3. rest
    4. uniform access principle

    Qualifiers

    • Research-article

    Conference

    SPLASH '13
    Sponsor:

    Acceptance Rates

    DLS '13 Paper Acceptance Rate 9 of 22 submissions, 41%;
    Overall Acceptance Rate 32 of 77 submissions, 42%

    Upcoming Conference

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)10
    • Downloads (Last 6 weeks)1

    Other Metrics

    Citations

    Cited By

    View all
    • (2020)Can programmers escape the gentle tyranny of call/return?Companion Proceedings of the 4th International Conference on Art, Science, and Engineering of Programming10.1145/3397537.3397546(163-172)Online publication date: 23-Mar-2020
    • (2020)Convivial design heuristics for software systemsCompanion Proceedings of the 4th International Conference on Art, Science, and Engineering of Programming10.1145/3397537.3397543(144-148)Online publication date: 23-Mar-2020
    • (2019)Storage combinatorsProceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3359591.3359729(111-127)Online publication date: 23-Oct-2019
    • (2016)Constraints as polymorphic connectorsProceedings of the 15th International Conference on Modularity10.1145/2889443.2889456(134-145)Online publication date: 14-Mar-2016

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media