Sun and Oracle Community Voices How to Buy Log In United States [Change] English

»  1992
»  1993
»  1994
»  1995
»  1996
»  1997
»  1998
»  1999
»  2000
»  2001
»  2002
»  2003
»  2004
»  2005
»  2006

Self

Fiscal 1995 Project Portfolio Report

Randall B. Smith, David Ungar
randall.smith@eng, david.ungar@eng


Overall Objective

To make computers much easier to relate to by exploring programming systems based on a consistent and extensible artificial reality.


Objective for FY95

The primary FY95 goal was to wrap up the project, publish the results, and produce a final public realization of the system: Self 4.0.


Description

Self is a pure object-oriented language and programming environment. Its user interface is written in Self, and provides for extremely direct UI and application construction. Any Self window can be shared-each user on the net can have his or her own cursor. Each window is in fact a frame on a large flat space, so users can scroll their views apart to work in isolation, or bring them together for collaboration.

Self is a difficult language to compile: there are no static type declarations, and all programming operations are written at a high level of abstraction. Furthermore, Self is dynamic: it supports incremental changes to the system. The Self compiler has received a great deal of attention, as it generates code that is about half the speed of optimized C, despite the language's purity and the lack of any static type information. The secret is dynamic compilation: the system analyzes the running code, looking for ways to optimize the program as it executes.


Accomplishments

Major accomplishments were the numerous publications and the public release of Self 4.0.

New Features in Self 4.0:

This release contains an entirely new user interface and programming environment which enables the programmer to create and modify objects entirely within the environment, then save the objects into files. One no longer must edit source files using an external editor. The environment includes a graphical debugger, and tools for navigation through the system.

Any Self window can be shared with other users on the net: users each have their own cursor, and can act independently to grab and manipulate objects simultaneously. A Self window is actually a framed view onto a vast two-dimensional plane: users can move their frames across this surface, bringing them together to work on the same set of objects, or moving apart to work independently.

A new version of the transporter, a facility for saving an object's structure into files, has been used to modularize the system. The programming environment presents an interface to the module system which allows for straightforward categorization of objects and slots into modules, and the mostly-automatic saving of modules into files. Handwritten source files have almost completely disappeared.

The environment has been constructed using a new, flexible, and extensible user interface construction kit, based on "morphs." Morphs are general-purpose user interface components. An extensive collection of ready-built morphs is provided in the system, together with facilities to inspect, modify, and save them to files. We believe the morph-based substrate provides an unprecedented degree of directness and flexibility in user interface construction.

An experimental Web browser has been written in Self and is included in the release. This browser supports collaborative net-surfing, and the buttons and pictures from Web pages can easily be removed and embedded into applications.

A Smalltalk system is included in Self 4.0. This system is based on the GNU system classes, a translator that reads Smalltalk files and translates them to Self, and a Smalltalk user interface. The geometric mean of four medium-sized benchmarks we have tried suggests that this system runs Smalltalk programs 1.7 times faster than commercially available Smalltalk on a SparcStation.

Significant engineering has been done on the Virtual Machine to reduce the memory footprint and enhance memory management. For example, a 4.0 system containing a comparable collection of objects to that in the 3.0 release requires 40% less heap space. A Self-level interface to the memory system is now available that enables Self code to be notified when heap space is running low, and to expand the heap.


References

For many of these publications, abstracts and PostScript files can be reached through the Self project home pages on the World Wide Web.

Publications

Agesen, O. "Constraint-Based Type Inference and Parametric Polymorphism." First International Static Analysis Symposium (SAS) (September 1994). SML-94-0232.

Agesen, O. "Simple and Precise Type Inference Using the Cartesian Product." ECOOP'95. SML-94-0452.

Agesen, O. and D. Ungar. "Sifting Out the Gold: Delivering Compact Applications from an Exploratory Object-Oriented Programming Environment." Proceedings of OOPSLA'94. SML-94-0233.

Chang, Bay-Wei, David Ungar, and Randall B. Smith. "Getting Close to Objects: Object-Focused Programming Environments." In Visual Object-Oriented Programming, edited by M. Burnett, A. Goldberg, and T. Lewis. Prentice-Hall, 1995. SML-94-0324.

Hoelzle, U. "Adaptive Optimization for Self: Reconciling High Performance with Exploratory Programming." Ph.D. thesis, Stanford University, Stanford, California, 1995. Also Sun Microsystems Laboratories Technical Report SMLI TR-95-35 (March 1995). SML-94-0358.

Hoelzle, U. and D. Ungar. "Do Object-Oriented Languages Need Special Hardware Support?" ECOOP'95. SML-94-0354.

Maloney, J., R. B. Smith, and D. Ungar. "Directness and Liveness in the Morphis User Interface Construction Environment." Proceedings of UIST'95 Conference (Forthcoming). SML-95-0146.

Smith, R. B. "Prototype-Based Languages: Object Lessons from Class-Free Programming." Proceedings of OOPSLA'94. SML-94-0281.

Smith, R. B., J. Maloney, and D. Ungar. "The Self-4.0 User Interface: Manifesting a System-wide Vision of Concretness, Uniformity, and Flexibility." Proceedings of OOPSLA'95 Conference. SML-95-0076.

Smith, R. B. and D. Ungar. "Programming as an Experience: the Inspiration for Self." Invited paper for ECOOP'95, to appear in Proceedings of ECOOP'95 (Forthcoming). SML-95-0136.

Smith, R. B. and D. Ungar. "SELF: Pure, Plastic Programming with Performance." Tutorial. SML-94-0304.

Smith, R. B. and D. Ungar. "Us: A Subjective Language with Perspective Objects." SML-94-0416.

Ungar, D. "Annotating Objects for Transport to Other Worlds." Proceedings of OOPSLA'95 (Forthcoming). SML-95-0174.

Ungar, D. and R. B. Smith. "Self: The Power of Simplicity." OOPSLA'87, Also Sun Microsystems Laboratories Technical Report SMLI TR-94-30 (December 1994). SML-94-0289.


View previous page

Return to the Table of Contents

View next page


webmaster@sunlabs.eng.sun.com