LISP and Symbolic Computation

, Volume 4, Issue 3, pp 187–205

SELF: The power of simplicity

  • David Ungar
  • Randall B. Smith


SELF is an object-oriented language for exploratory programming based on a small number of simple and concrete ideas: prototypes, slots, and behavior. Prototypes combine inheritance and instantiation to provide a framework that is simpler and more flexible than most object-oriented languages. Slots unite variables and procedures into a single construct. This permits the inheritance hierarchy to take over the function of lexical scoping in conventional languages. Finally, because SELF does not distinguish state from behavior, it narrows the gaps between ordinary objects, procedures, and closures. SELF's simplicity and expressiveness offer new insights into object-oriented computation.

To thine own self be true. — William Shakespeare laggy


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Abelson, H., Sussman, G. J., and Sussman, J.Structure and Interpretation of Computer Programs, MIT Press (1984).Google Scholar
  2. 2.
    Borning, A. H.ThingLab—A Constraint-Oriented Simulation Laboratory. Ph.D. dissertation, Stanford University (1979).Google Scholar
  3. 3.
    Borning, A. H. The Programming Language Aspects of ThingLab, A Constraint-Oriented Simulation Laboratory. InACM Transactions on Programming Languages and Systems, 3, 4 (1981) 353–387.Google Scholar
  4. 4.
    Borning, A. H. Classes Versus Prototypes in Object-Oriented Languages. InProceedings of the ACM/IEEE Fall Joint Computer Conference (1986) 36–40.Google Scholar
  5. 5.
    Borning, A., and O'Shea, T. DeltaTalk: An Empirically and Aesthetically Motivated Simplification of the Smalltalk-80™ Language. Unpublished manuscript (1986).Google Scholar
  6. 6.
    Goldberg, A., and Robson, D.Smalltalk-80: The Language and Its Implementation. Addison-Wesley, Reading, MA (1983).Google Scholar
  7. 7.
    Hewitt, C., and Agha, G. ACTORS: A Conceptual Foundation For Concurrent Object-Oriented Programming. Unpublished draft, MIT Artificial Intelligence Laboratory (1987).Google Scholar
  8. 8.
    LaLonde, W. R., Thomas, D. A., and Pugh, J. R. An Exemplar Based Smalltalk. InOOPSLA '86 Conference Proceedings. Published asSIGPLAN Notices, 21, 11 (1986) 322–330.Google Scholar
  9. 9.
    Lang, K. J., and Pearlmutter, B. A. Oaklisp: An Object-Oriented Scheme with First Class Types. InOOPSLA '86 Conference Proceedings. Published asSIGPLAN Notices, 21, 11 (1986) 30–37.Google Scholar
  10. 10.
    Lieberman, H. Using Prototypical Objects to Implement Shared Behavior in Object-Oriented Systems. InOOPSLA '86 Conference Proceedings. Published asSIGPLAN Notices, 21, 11 (1986) 214–223.Google Scholar
  11. 11.
    Rochat, R. In Search of Good Smalltalk Programming Style. Technical Report No. CR-86-19, Computer Research Laboratory, Tektronix Laboratories, Beaverton, OR (1986).Google Scholar
  12. 12.
    Schaffert, C., Cooper, T., Bullis, B., Kilian, M., and Wilpolt, C. An Introduction to Trellis/Owl. InOOPSLA '86 Conference Proceedings. Published asSIGPLAN Notices, 21, 11 (1986) 9–16.Google Scholar
  13. 13.
    Sheil, B. Power Tools for Programmers.Datamation, 29, 2 (1983) 131–144.Google Scholar
  14. 14.
    Smith, R. B. The Alternate Reality Kit: An Animated Environment for Creating Interactive Simulations. InProceedings of 1986 IEEE Computer Society Workshop on Visual Languages (1986) 99–106.Google Scholar
  15. 15.
    Smith, R. B. Experiences with the Alternate Reality Kit: An Example of the Tension Between Literalism and Magic. InProceedings of the CHI+GI '87 Conference (1987) 61–67.Google Scholar
  16. 16.
    Smith, R. G. Strobe: Support for Structured Object Knowledge Representation. InProceedings of the 1983 International Joint Conference on Artificial Intelligence (1983) 855–858.Google Scholar
  17. 17.
    Steele, G. L., Jr. Lambda, the Ultimate Imperative. AI Memo 353, MIT Artificial Intelligence Laboratory (1976).Google Scholar
  18. 18.
    Stefik, M., Bobrow, D., and Kahn, K. Integrating Access-Oriented Programming into a Multiprogramming Environment.IEEE Software Magazine, 3, 1 (1986) 10–18.Google Scholar
  19. 19.
    Ungar, D., Chambers, C., Chang, B., and Hölzle, U. Organizing Programs Without Classes. InLisp and Symbolic Computation, 4, 3 (1991) 223–242.Google Scholar
  20. 20.
    Ungar, D., and Smith, R. B. SELF: The Power of Simplicity. InOOPSLA '87 Conference Proceedings. Published asSIGPLAN Notices, 22, 12 (1987) 227–241.Google Scholar

Copyright information

© Kluwer Academic Publishers 1991

Authors and Affiliations

  • David Ungar
    • 1
  • Randall B. Smith
    • 2
  1. 1.Computer Systems LaboratoryStanford UniversityStanford
  2. 2.Xerox Palo Alto Research CenterPalo Alto
  3. 3.Sun MicrosystemsMountain View

Personalised recommendations