Nesting in an Object Oriented Language is NOT for the Birds

  • P. A. Buhr
  • C. R. Zarnke
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 322)


The notion of nested blocks has come into disfavour or has been ignored in recent program language design. Many of the current object oriented programming languages use subclassing as the sole mechanism to establish relationships between classes and have no general notion of nesting. We argue that nesting (and, more generally, hierarchical organization) is a powerful mechanism that provides facilities that are not otherwise possible in a class based programming language. We agree that traditional block structure and its associated nesting have severe problems, and we suggest several extensions to the notion of blocks and block structure that indirectly make nesting a useful and powerful mechanism, particularly in an object oriented programming system. The main extension is to allow references to definitions from outside of the containing block, thereby making the contained definitions available in a larger scope. References are made using either the name of the containing entity or an instance of the containing entity. The extensions suggest a way to organize the programming environment for a large, multi-user system. These facilities are not available with subclassing, and subclassing provides facilities not available by nesting; hence, an object oriented language can benefit by providing nesting as well.

Key words

Object-Oriented Nesting Block Structure Programming-in-the-Large 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

11. References

  1. ADA83.
    United States Department of Defense. “Reference Manual for the Ada Programming Language”. ANSIIMIL-STD-1815A-1983, February 1983, Springer-Verlag, New YorkGoogle Scholar
  2. ATKIN85.
    Atkinson, M. P., Morrison, R. “Types, Binding and Parameters in a Persistent Environment”. Persistence and Data Types Papers for the Appin Workshop, Persistent Programming Research Report 16, University of Glasgow, Dept. of Computing Science, Scotland, August 1985, pp. 1–24Google Scholar
  3. BARTO84.
    Bartol, W. M., et al. “Report on the LOGLAN82 Programming Language”. Polska Akademia Nauk, Instytut Podstaw Informatyki, Panstwowe Wydawnictwo Naukowe, Warszawa-Lodz, 1984Google Scholar
  4. BOBRO83.
    Bobrow, D. G., Stefik, M. “The LOOPS Manual”. Xerox Corporation, 1983Google Scholar
  5. BUHR86.
    Buhr, P. A., Zarnke, C. R. “A Design for Integration of Files into a Strongly Typed Programming Language”. Proceedings IEEE Computer Society 1986 International Conference on Computer Languages, Miami, Florida, October 1986, pp. 190–200Google Scholar
  6. BUHR87.
    Buhr, P. A., Zarnke, C. R. “Persistence in an Environment for a Statically-Typed Programming Language”. Persistent Object Systems: their design, implementation and use., Persistent Programming Research Report 44, University of Glasgow, Scotland, August 1987, pp. 317–336Google Scholar
  7. BUHR88.
    Buhr, P. A., Zarnke, C. R. “Protection in a Multi-User Object-Oriented Environment”. in preparation.Google Scholar
  8. COX86.
    Cox, B. J. Object Oriented Programming, Addison-Wesley, 1986Google Scholar
  9. CLARK80.
    Clarke, L. A., Wilden, J. C., Wolf, A. L. “Nesting in Ada Programs is for the Birds”. SIGPLAN Notices, vol. 15, no. 11, November 1980, pp. 139–145CrossRefGoogle Scholar
  10. DEREM76.
    DeRemer, F., Kron, H. H. “Programming-in-the-Large Versus Programming-in-the-Small”. I.E.E.E. Transactions on Software Engineering, vol. SE-2, no. 2, June 1976, pp. 80–86MathSciNetGoogle Scholar
  11. GOLDB83.
    Goldberg, A., Robson, D. Smalltalk-80: The Language and its Implementation, Addison-Wesley, May 1983Google Scholar
  12. HANSO81.
    Hanson, D. R. “Is Block Structure Necessary?”. Software—Practice and Experience, vol. 11, 1981, pp. 853–866CrossRefGoogle Scholar
  13. HEERI85.
    Heering, J., Klint, P. “Towards Monolingual Programming Environments”. ACM Transactions on Programming Languages and Systems, vol. 7, no. 2, April 1985, pp. 183–213CrossRefGoogle Scholar
  14. HOUSE86.
    House, R. T. “Alternative Scope Rules for Block-Structure Languages”. The Computer Journal, vol. 29, no. 3, June 1986, pp. 253–260CrossRefGoogle Scholar
  15. IBM81.
    IBM. OS and DOS PL/I Language Reference Manual, Manual GC26-3977-0, September 1981Google Scholar
  16. KRIST87.
    Kristensen, B. B., Madsen, O. L., Moller-Pedersen, B., Nygaard, K. “The BETA Programming Language”. Research Directions in Object-Oriented Programming, Shiver, B., Wegner, P. (eds.) MIT Press, Computer Systems Series, 1987, pp. 7–48.Google Scholar
  17. LAMPS77.
    Lampson, B. W., Horning, J. J., London, R. L., Mitchell, J. G., Popek, G. L. “Report on the Programming Language Euclid”. SIGPLAN Notices, vol. 12, no. 2, February 1977, pp. 1–79CrossRefGoogle Scholar
  18. MADSE87.
    Madsen, O. L. “Block Structure and Object Oriented Languages”. Research Directions in Object-Oriented Programming, Shiver, B., Wegner, P. (eds.) MIT Press, Computer Systems Series, 1987, pp. 113–128Google Scholar
  19. MEYER87.
    Mayer, B. “Eiffel: Programming for Reusability and Extendibility”. SIG-PLAN Notices, vol. 22, no. 2, February 1987, pp. 85–94CrossRefGoogle Scholar
  20. PARNA85.
    Parnas, D. L., Clements, P. C., Weiss, D. M. “The Modular Structure of Complex Systems”. I.E.E.E. Transactions of Software Engineering, vol. SE-11, no. 3, March 1985, pp. 259–266Google Scholar
  21. SHAW81.
    Shaw, M. ALPHARD: Form and Content. Springer-Verlag, New York, 1981zbMATHGoogle Scholar
  22. SIMULA87.
    Simula-Data Processing. Programming Languages, Swedish Standard SS636114 SIS, Stockholm, Sweden, June 1987Google Scholar
  23. STROU86.
    Stroustrup, B. The C++ Programming Language, Addison-Wesley, 1986Google Scholar
  24. TEITE78.
    W. Teitelman, J. W. Goodwin, A. K. Hartley, et al., Interlisp Reference Manuul, Xerox Palo Alto Rcsearch Center, 1978Google Scholar
  25. TEITE84.
    W. Teitelman, The Cedar Programming Environment; A Midterm Report and Examination, Xerox Palo Alto Research Center, Technical Report CSL-83-11, June 1984Google Scholar
  26. TENNE82.
    Tennent, R. D. “Two Examples of Block Structuring”. Software—Practice and Experience, vol. 12, 1982, pp. 385–392zbMATHCrossRefGoogle Scholar
  27. WEGBR71.
    Wegbreit, B. “The ECL programming system”. Proceedings of AFIPS 1971 FJCC, vol. 39, AFIPS Press, Montvale, N. J., pp. 253–262Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1988

Authors and Affiliations

  • P. A. Buhr
    • 1
  • C. R. Zarnke
    • 2
  1. 1.Dept. of Computer ScienceUniversity of WaterlooWaterlooCanada
  2. 2.Waterloo Microsystems Inc.WaterlooCanada

Personalised recommendations