Object, message, and performance: how they coexist in Self

The Self programming language, which distills object-oriented computation down to a simple story based on copying prototypes to create objects, inheriting from objects to share their contents, and passing messages to invoke methods, is discussed. It is shown that Self's uniform application of the object-message paradigm gives programmers unusual flexibility. Unconventional optimizations can bring its peak performance to within a factor of two of optimized C's performance. Overviews of Self and its message passing performance are presented.<<ETX>>