Generated by GPT-5-mini| Self (programming language) | |
|---|---|
![]() unknown, SVG from PNG by CptFuture · CC BY-SA 3.0 · source | |
| Name | Self |
| Paradigm | Prototype-based, object-oriented |
| Designer | David Ungar, Randall Smith |
| Developer | Sun Microsystems Labs |
| First appeared | 1990 |
| Typing | Dynamic, strong |
| Influenced by | Smalltalk, Scheme, NewtonScript |
| Influenced | JavaScript, Io, Lua |
| License | Proprietary (historically), various research releases |
Self (programming language) is a prototype-based, object-oriented language developed for research in dynamic language implementation and user interface design. It emerged from work at research centers associated with Carnegie Mellon University, Sun Microsystems, MIT, Stanford University and teams led by David Ungar and Randall Smith, influencing later systems at Netscape Communications, Microsoft Research, and Apple Inc.. Self's ideas fed into virtual machine and compiler optimizations explored at University of California, Berkeley, University of Washington, and applied in products from Oracle Corporation and Google LLC.
Self was created in the late 1980s and early 1990s by researchers affiliated with Carnegie Mellon University and Sun Microsystems Laboratories under the leadership of David Ungar and Randall Smith, building on concepts from Smalltalk-80, Lisp, and Scheme. Early prototypes were presented at conferences such as ACM SIGPLAN meetings and OOPSLA, attracting attention from teams at Xerox PARC, MIT Media Lab, and DEC Systems Research Center. Funding and collaborations involved institutions like National Science Foundation and industrial partners such as Sun Microsystems and Apple Computer; subsequent implementations appeared in academic settings at University of Tokyo and ETH Zurich. Self's research lineage dates through projects at Stanford Linear Accelerator Center and collaborations with groups from IBM Research and Microsoft Research that later integrated Self techniques into systems developed at Netscape and Google.
Self adopts prototype-based object orientation without classes, an approach that contrasts with class-based systems from Smalltalk, C++, and Java. Its core syntax and semantics emphasize message-passing and delegation influenced by Smalltalk-80, Lisp, Scheme, and ideas originating at Xerox PARC. Self provides dynamic typing, late binding, and reflective facilities that enabled research into behavioral inheritance seen also in NewtonScript and later in JavaScript. The language featured an image-based development environment inspired by Smalltalk, interactive tools akin to those at MIT Media Lab, and UI experiments comparable to work at Apple Computer and Sun Microsystems.
Self implementations included research VMs and JIT compilers built at Sun Microsystems Laboratories and universities such as University of California, Berkeley and University of Illinois Urbana-Champaign. The runtime employed techniques like dynamic type feedback, polymorphic inline caches, and traced garbage collection related to research done at Stanford University and DEC Systems Research Center. Implementations were demonstrated on hardware from Sun Microsystems, Intel Corporation x86 platforms, and workstation lines sold by Silicon Graphics and HP. Work on the Self VM informed later virtual machine projects at IBM Research and influenced the design of JITs used by Mozilla Foundation and Google V8.
A central achievement of Self was demonstrating that highly dynamic, prototype-based languages could be made competitive with statically typed, class-based systems through aggressive runtime optimization. Techniques such as hidden classes (maps), polymorphic inline caches, dynamic deoptimization, and adaptive inlining were developed in collaboration with groups at Carnegie Mellon University, Sun Microsystems, and Stanford University. These optimizations influenced the JIT strategies adopted in engines like V8 and in work at Oracle Corporation on HotSpot, with follow-on research at Microsoft Research and AMD for dynamic binary optimization. Performance evaluations were presented at venues like ACM SIGPLAN Conference and PLDI and compared against systems such as Smalltalk, Java, and implementations on SPARC and x86 architectures produced by Intel Corporation.
Although Self itself remained primarily a research vehicle, its concepts pervaded mainstream technologies. Prototype-based object models influenced JavaScript at Netscape Communications and later implementations at Mozilla Foundation and Google LLC; JIT techniques influenced HotSpot at Sun Microsystems and V8 at Google. Self's UI and image-based development ideas were echoed in projects at Apple Inc. and experimental environments at MIT Media Lab and Xerox PARC. Academic curricula at institutions including Carnegie Mellon University, University of California, Berkeley, and Stanford University used Self to teach language implementation, while companies such as Adobe Systems and IBM studied Self techniques for product development.
The Self ecosystem consisted of an image-based IDE, browser-style morphological tools, and integrated profilers developed at Sun Microsystems Laboratories and universities like University of Tokyo and ETH Zurich. Tooling influenced later environments at Eclipse Foundation, JetBrains, and research IDEs at Microsoft Research. Although commercial toolchains were limited compared to ecosystems around Java and C++, Self inspired debugging and visualization facilities used in projects at MIT, Stanford University, and industrial labs at IBM Research and Apple Inc.. Community contributions and archival releases exist in academic repositories and museum collections associated with Computer History Museum and university archives.
Category:Programming languages Category:Object-oriented programming languages