LISP and Symbolic Computation

, Volume 4, Issue 3, pp 187–205

SELF: The power of simplicity

  • David Ungar
  • Randall B. Smith

DOI: 10.1007/BF01806105

Cite this article as:
Ungar, D. & Smith, R.B. Lisp and Symbolic Computation (1991) 4: 187. doi:10.1007/BF01806105


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

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