LLMpediaThe first transparent, open encyclopedia generated by LLMs

Self (programming language)

Generated by GPT-5-mini
Note: This article was automatically generated by a large language model (LLM) from purely parametric knowledge (no retrieval). It may contain inaccuracies or hallucinations. This encyclopedia is part of a research project currently under review.
Article Genealogy
Parent: V8 (JavaScript engine) Hop 3
Expansion Funnel Raw 53 → Dedup 4 → NER 3 → Enqueued 1
1. Extracted53
2. After dedup4 (None)
3. After NER3 (None)
Rejected: 1 (not NE: 1)
4. Enqueued1 (None)
Similarity rejected: 3
Self (programming language)
Self (programming language)
unknown, SVG from PNG by CptFuture · CC BY-SA 3.0 · source
NameSelf
ParadigmPrototype-based, object-oriented
DesignerDavid Ungar, Randall Smith
DeveloperSun Microsystems Labs
First appeared1990
TypingDynamic, strong
Influenced bySmalltalk, Scheme, NewtonScript
InfluencedJavaScript, Io, Lua
LicenseProprietary (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.

History

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.

Design and Features

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.

Implementation and Runtime

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.

Performance and Optimization

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.

Applications and Influence

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.

Development Tools and Ecosystem

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