# Self

> programming language

**Wikidata**: [Q1864529](https://www.wikidata.org/wiki/Q1864529)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/Self_(programming_language))  
**Source**: https://4ort.xyz/entity/self

## Summary

Self is a softwareapplication. It was influenced by Smalltalk..

## Summary
Self is a prototype-based object-oriented programming language developed in the late 1980s. It was created by David Ungar and Randall Smith at Stanford University and later at Sun Microsystems, emphasizing simplicity and the use of prototypes instead of classes.

## Key Facts
- Inception: 1987
- Developers: David Ungar and Randall Smith
- Influenced by: Smalltalk
- Latest version: Self 2024.1 (released August 28, 2024)
- Typing discipline: Dynamic and strong typing
- Programming paradigm: Prototype-based programming, object-oriented programming
- Website: https://selflanguage.org/
- Source code repository: https://github.com/russellallen/self
- Instance of: Programming language, object-based language

## FAQs
### Q: What is Self programming language?
A: Self is a prototype-based object-oriented programming language developed in 1987 by David Ungar and Randall Smith. It uses prototypes instead of classes and emphasizes simplicity and dynamic typing.

### Q: Who created Self?
A: Self was created by David Ungar and Randall Smith at Stanford University, with later development at Sun Microsystems.

### Q: What makes Self different from other programming languages?
A: Self uses prototype-based programming instead of class-based inheritance, making it simpler and more dynamic. It was influenced by Smalltalk but takes a different approach to object-oriented programming.

## Why It Matters
Self represents a significant departure from traditional class-based object-oriented programming by introducing prototype-based inheritance. This approach simplifies the object model by eliminating the distinction between classes and objects, allowing for more dynamic and flexible programming patterns. Self's influence extends beyond its own use, as it pioneered concepts that later appeared in languages like JavaScript and influenced the design of modern dynamic languages. Its development at Sun Microsystems also contributed to research in programming language design and implementation, particularly in areas like just-in-time compilation and dynamic optimization.

## Notable For
- Pioneering prototype-based object-oriented programming
- Influencing the design of JavaScript and other modern dynamic languages
- Being developed at both Stanford University and Sun Microsystems
- Emphasizing simplicity through the elimination of class-based inheritance
- Contributing to research in dynamic compilation and optimization techniques

## Body
### Development History
Self was developed starting in 1987 by David Ungar and Randall Smith at Stanford University. The language was later refined and developed further at Sun Microsystems, where both creators worked. The language's development spanned several years, with significant research contributions to programming language design and implementation.

### Technical Characteristics
Self uses prototype-based programming, where objects inherit directly from other objects rather than through class hierarchies. This approach eliminates the need for a separate class construct, making the language simpler and more dynamic. The language features dynamic typing with strong typing discipline, allowing for flexible programming while maintaining type safety.

### Versions and Releases
Self has undergone multiple version releases since its inception:
- Version 4.4 released July 16, 2010
- Version 4.5.0 released January 12, 2014
- "Mandarin" 2017.1 released May 24, 2017
- Self 2024.1 released August 28, 2024

### Implementation and Availability
The language is implemented as open-source software with its source code available on GitHub. The project maintains an active website at selflanguage.org, providing documentation, downloads, and community resources. The language supports multiple Wikipedia language editions, indicating its international recognition and documentation.

### Influence and Legacy
Self's prototype-based approach has influenced many subsequent programming languages, most notably JavaScript. The language's design principles and implementation techniques have contributed to research in dynamic compilation, optimization, and programming language implementation. Its emphasis on simplicity and dynamic behavior continues to influence modern language design.

## Schema Markup
```json
{
  "@context": "https://schema.org",
  "@type": "Thing",
  "name": "Self",
  "description": "Prototype-based object-oriented programming language developed in 1987",
  "url": "https://selflanguage.org/",
  "sameAs": [
    "https://en.wikipedia.org/wiki/Self_(programming_language)",
    "https://www.wikidata.org/wiki/Q208463"
  ],
  "additionalType": "ProgrammingLanguage"
}

## References

1. [Release 4.4. 2010](https://github.com/russellallen/self/releases/tag/4.4)
2. [Release 4.5.0. 2014](https://github.com/russellallen/self/releases/tag/4.5.0)
3. [Self “Mandarin” 2017.1](https://blog.selflanguage.org/2017/05/24/self-mandarin-2017-1/)
4. [Source](https://github.com/russellallen/self/releases/tag/2024.1)
5. Freebase Data Dumps. 2013
6. [Source](https://api.github.com/repos/russellallen/self)