ABSTRACT
In 1996, Gil and Lorenz proposed programming language constructs for specifying environmental acquisition in addition to inheritance acquisition for objects. They noticed that in many programs, objects are arranged in containment hierarchies and need to obtain information from their container objects. Therefore, if languages allowed programmers to specify such relationships directly, type systems and run-time environments could enforce the invariants that make these programming patterns work.In this paper, we present a formal version of environmental acquisition for class-based languages. Specifically, we introduce an extension of the ClassicJava model with constructs for environmental acquisition of fields and methods, a type system for the model, a reduction semantics, and a type soundness proof. We also discuss how to scale the model to a full-scale Java-like programming language.
- Dave Clarke and Sophia Drossopoulou. Ownership, encapsulation and the disjointness of type and effect. In Proceedings of the 17th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 292--310. ACM Press, 2002.]] Google ScholarDigital Library
- David G. Clarke, John M. Potter, and James Noble. Ownership types for flexible alias protection. In Proceedings of the 13th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 48--64. ACM Press, 1998.]] Google ScholarDigital Library
- Microsoft Corporation. Microsoft C# Language Specifications. Microsoft Press, 2001.]] Google ScholarDigital Library
- Robert Bruce Findler, John Clements, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, Paul Steckler, and Matthias Felleisen. DrScheme: A programming environment for Scheme. Journal of Functional Programming, 12(2):159--182, March 2002. A preliminary version of this paper appeared in PLILP 1997, LNCS volume 1292, pp. 369--388.]] Google ScholarDigital Library
- Matthew Flatt. PLT MzScheme: Language manual. Technical Report TR97-280, Rice University, 1997. http://www.plt-scheme.org/software/mzscheme/.]]Google Scholar
- Matthew Flatt and Robert~Bruce Findler. PLT MrEd: Graphical toolbox manual. Technical Report TR97-279, Rice University, 1997. http://www.plt-scheme.org/software/mred/.]]Google Scholar
- Matthew Flatt, Shriram Krishnamurthi, and Matthias Felleisen. A programmer's reduction semantics for classes and mixins. In Formal Syntax and Semantics of Java, volume 1523 of Springer Lecture Notes in Computer Science, pages 241--269. Springer-Verlag, 1999. Preliminary version appeared in proceedings of Principles of Programming Languages, 1998. Revised version is Rice University technical report TR 97-293, June 1999.]] Google ScholarDigital Library
- Martin Fowler and Kendall Scott. UML Distilled: Applying the Standard Object Modeling Language. Addison-Wesley, Reading, MA, 1997.]] Google ScholarDigital Library
- Jim Fulton. Extension classes, Python extension types become classes. http://debian.acm.ndsu.nodak.edu/doc/python-extclassExtensionClass.html.]]Google Scholar
- Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, MA, 1995.]] Google ScholarDigital Library
- Joseph Gil and David H. Lorenz. Environmental acquisition: a new inheritance-like abstraction mechanism. In Proceedings of the Eleventh Annual Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 214--231. ACM Press, 1996.]] Google ScholarDigital Library
- Joseph (Yossi) Gil and David H. Lorenz. Object technology: Design patterns and language design. IEEE Computer, 31(3):118--120, March 1998.]] Google ScholarDigital Library
- James Gosling, Bill Joy, and Guy Steele, Jr. The Java Language Specification. Addison-Wesley, 1996.]] Google ScholarDigital Library
- Alan C. Kay. The early history of Smalltalk. In The Second ACM SIGPLAN Conference on History of Programming Languages, pages 69--95. ACM Press, 1993.]] Google ScholarDigital Library
- Shriram Krishnamurthi, Yan-David Erlich, and Matthias Felleisen. Expressing structural properties as language constructs. In European Symposium on Programming, volume 1576 of Springer Lecture Notes in Computer Science, pages 258--272, March 1999.]] Google ScholarDigital Library
- Amos Latteier, Michel Pelletier, Chris McDonough, and Peter Sabaini. The Zope Book. SAMS, 2001. Also available on-line at http://zope.org/Documentation/Books/ZopeBook.]] Google ScholarDigital Library
- Mark Logan, Matthias Felleisen, and David Blank-Edelman. Environmental acquisition in network management. In Proceedings of LISA 2002: Sixteenth Systems Administration Conference, pages 175--184. USENIX Association, 2002.]] Google ScholarDigital Library
- Jacob Matthews, Robert Bruce Findler, Matthew Flatt, and Matthias Felleisen. A visual environment for developing context-sensitive term rewriting systems. In International Conference on Rewriting Techniques and Applications, 2004.]]Google ScholarCross Ref
- Bertrand Meyer. Eiffel: The Language. Prentice Hall, 1992.]] Google ScholarDigital Library
- Sun Microsystems. Java 2 standard edition SDK, v1.4.2. http://wwws.sun.com/software/communitysource/j2se/java2/download.html.]]Google Scholar
- Sun Microsystems. Java foundation classes (JFC/Swing). http://java.sun.com/products/jfc/index.jsp.]]Google Scholar
- Python. http://www.python.org/.]]Google Scholar
- Andrew K. Wright and Matthias Felleisen. A syntactic approach to type soundness. Information and Computation, 115(1):38--94, 1994. First appeared as Technical Report TR160, Rice University, 1991.]] Google ScholarDigital Library
Index Terms
- Environmental acquisition revisited
Recommendations
Environmental acquisition revisited
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languagesIn 1996, Gil and Lorenz proposed programming language constructs for specifying environmental acquisition in addition to inheritance acquisition for objects. They noticed that in many programs, objects are arranged in containment hierarchies and need to ...
A semantic model of a small typed functional language using Object-Z
APSEC '00: Proceedings of the Seventh Asia-Pacific Software Engineering ConferenceThe Object-Z notation is a good meta-language that can be used to specify the denotational semantics of programming languages. It has been effectively applied to some categories of languages. These include the procedural languages, the object-oriented ...
A Practical Comparison of Two Object-Oriented Languages
The author compares two very different object-oriented programming languages, Flavors and C++, with respect to their merits and how design decisions in each language influence various aspects of programming. The fundamental difference between the two ...
Comments