Engineering a programming language: The type and class system of Sather

  • Clemens Szyperski
  • Stephen Omohundro
  • Stephan Murer
Session Papers
Part of the Lecture Notes in Computer Science book series (LNCS, volume 782)


Sather 1.0 is a programming language whose design has resulted from the interplay of many criteria. It attempts to support a powerful object-oriented paradigm without sacrificing either the computational performance of traditional procedural languages or support for safety and correctness checking. Much of the engineering effort went into the design of the class and type system. This paper describes some of these design decisions and relates them to approaches taken in other languages. We particularly focus on issues surrounding inheritance and subtyping and the decision to explicitly separate them in Sather.


Reference Object Parameterized Class Abstract Classis Grammar Rule Abstract Type 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    D. G. Bobrow, L. G. DeMichiel, R. P. Gabriel, S. Keene, G. Kiczales, and D. A. Moon. The common lisp object system specification. Technical Report 88-002R, X3J13, June 1988. Also in special issue of SIGPLAN Notices 23 (Sep. 1988) and Lisp and Symbolic Computation (Jan. 1989).Google Scholar
  2. 2.
    Gilad Bracha and William R. Cook. Mixin-based inheritance. In Proceedings of the Conference on Object-Oriented Programming, Systems, and Applications and European Conferance on Object-Oriented Programming (OOPSLA/ECOOP'90), Ottawa, Canada, October 1990. Also in SIGPLAN Notices, 25:10, Oct. 1990.Google Scholar
  3. 3.
    Luca Cardelli. Typeful programming. Technical report, DEC Systems Research Center, Palo Alto, CA, May 1989.Google Scholar
  4. 4.
    Craig Chambers. The Cecil language — specification and rationale. Technical Report 93-03-05, Department of Computer Science, University of Washington, Seattle, WA, March 1993.Google Scholar
  5. 5.
    William R. Cook. A proposal for making eiffel type safe. In Proceedings of the Third European Conference on Object-Oriented Programming (ECOOP'89), pages 57–70, Nottingham, England, 1989. Cambridge University Press.Google Scholar
  6. 6.
    William R. Cook, Walter L. Hill, and Peter S. Canning. Inheritance is not subtyping. In Proceedings of the ACM Conference on Principles of Programming Languages (POPL'90), pages 125–135. ACM Press. Addison-Wesley, 1990.Google Scholar
  7. 7.
    Mahesh Dodani and Chung-Sin Tsai. ACTS: A type system for object-oriented programming based on abstract and concrete classes. In Proceedings of the Sixth European Conference on Object-Oriented Programming (ECOOP'92), pages 309–328, Utrecht, Netherlands, 1992.Google Scholar
  8. 8.
    Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, 1990.Google Scholar
  9. 9.
    Richard P. Gabriel, Jon L. White, and Daniel G. Bobrow. CLOS: Integrating object-oriented and functional programming. Communications of the ACM, 34(9):29–38, September 1991.Google Scholar
  10. 10.
    Adele Goldberg and David Robson. Smalltalk-80, The Language and its Implementation. Addison-Wesley, 1985.Google Scholar
  11. 11.
    Norman Hutchinson. Emerald: An Object-Oriented Language for Distributed Programming. PhD thesis, Department of Computer Science and Engineering, University of Washington, Seattle, WA, January 1987.Google Scholar
  12. 12.
    Kathleen Jensen and Niklaus Wirth. PASCAL: User Manual and Report. Springer-Verlag, 2d ed. corr. print edition, 1978.Google Scholar
  13. 13.
    Brian W. Kernighan and Dennis M. Ritchie. The C Programming Language. Prentice-Hall, 1978.Google Scholar
  14. 14.
    B.B. Kristensen, O.L. Madsen, B. Moeller-Pedersen, and Kristen Nygaard. The BETA programming language. In B.D. Shriver and P. Wegner, editors, Research Directions in Object-Oriented Programming. MIT Press, 1987.Google Scholar
  15. 15.
    Chu-Cheow Lim and Andreas Stolcke. Sather language design and performance evaluation. Technical Report TR-91-034, International Computer Science Institute, May 1991.Google Scholar
  16. 16.
    Boris Magnusson. Code reuse considered harmful. Journal of Object Oriented Programming, 4(3), November 1991.Google Scholar
  17. 17.
    Bertrand Meyer. Eiffel — The Language. Prentice-Hall, 1988.Google Scholar
  18. 18.
    Bertrand Meyer. Object-oriented Software Construction. Prentice-Hall, 1988.Google Scholar
  19. 19.
    Hanspeter Mössenböck and Niklaus Wirth. The programming language oberon-2. Structured Programming, 12(4), 1991.Google Scholar
  20. 20.
    Stephan Murer, Stephen Omohundro, and Clemens A. Szyperski. Sather iters: Object-oriented iteration abstraction. Technical Report TR-92-xxx, International Computer Science Institute, 1993.Google Scholar
  21. 21.
    Greg Nelson, editor. Systems Programming with Modula-3. Prentice Hall, 1991.Google Scholar
  22. 22.
    Stephen Omohundro. Sather provides nonproprietary access to object-oriented programming. Computers in Physics, 6(5):444–449, 1992.Google Scholar
  23. 23.
    Martin Reiser and Niklaus Wirth. Programming in Oberon. Steps Beyond Pascal and Modula. Addison-Wesley, 1992.Google Scholar
  24. 24.
    Heinz W. Schmidt and Benedict Gomes. ICSIM: An object-oriented connectionist simulator. Technical Report TR-91-048, International Computer Science Institute, November 1991.Google Scholar
  25. 25.
    Alan Snyder. Encapsulation and Inheritance in object-oriented programming languages. In Proceedings of the First ACM Conference on Object-Oriented Programming, Systems, and Applications (OOPSLA'86), pages 38–45, Portland, OR, November 1986. Also in SIGPLAN Notices, 21:11, Nov. 1986.Google Scholar
  26. 26.
    Clemens A. Szyperski. Import is not Inheritance — why we need both: Modules and Classes. In Proceedings of the Sixth European Conference on Object-Oriented Programming (ECOOP'92), Utrecht, The Netherlands, June 1992.Google Scholar
  27. 27.
    David Ungar and Randall B. Smith. Self: The power of simplicity. In Proceedings of the Second ACM Conference on Object-Oriented Programming, Systems, and Applications (OOPSLA '87), Orlando, FL, October 1987. Also in SIGPLAN Notices, 22:12, Dec. 1987.Google Scholar
  28. 28.
    U.S. Department of Defence. Ada Reference Manual: Proposed Standard Document, July 1980.Google Scholar
  29. 29.
    Niklaus Wirth. Programming in Modula-2. Springer-Verlag, 1982.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1994

Authors and Affiliations

  • Clemens Szyperski
    • 1
  • Stephen Omohundro
    • 1
  • Stephan Murer
    • 1
  1. 1.International Computer Science InstituteBerkeley

Personalised recommendations