Self (programming language)

Self
Self logo
Paradigmsobject-oriented (prototype-based)
FamilySmalltalk
Designed byDavid Ungar, Randall Smith
DevelopersDavid Ungar, Randall Smith,
Stanford University,
Sun Microsystems
First appeared1987; 37 years ago (1987)
Stable release
2024.1 / August 28, 2024; 2 months ago (2024-08-28)
Typing disciplinedynamic, strong
OSCross-platform: Unix-like, macOS, Windows
LicenseBSD-like
Websitewww.selflanguage.org
Major implementations
Self
Influenced by
Smalltalk, APL[1]
Influenced
NewtonScript, JavaScript, Io, Agora, Squeak, Lua, Factor, Rebol

Self is a general-purpose, high-level, object-oriented programming language based on the concept of prototypes. Self began as a dialect of Smalltalk, being dynamically typed and using just-in-time compilation (JIT) with the prototype-based approach to objects: it was first used as an experimental test system for language design in the 1980s and 1990s. In 2006, Self was still being developed as part of the Klein project, which was a Self virtual machine written fully in Self. The latest version, 2024.1 was released in August 2024.[2]

Several just-in-time compilation techniques were pioneered and improved in Self research as they were required to allow a very high level object oriented language to perform at up to half the speed of optimized C. Much of the development of Self took place at Sun Microsystems, and the techniques they developed were later deployed for Java's HotSpot virtual machine.

At one point a version of Smalltalk was implemented in Self. Because it was able to use the JIT, this also gave extremely good performance.[3]

  1. ^ Ungar, David; Smith, Randall B. (2007). "Self". Proceedings of the third ACM SIGPLAN conference on History of programming languages. doi:10.1145/1238844.1238853. ISBN 9781595937667. S2CID 220937663.
  2. ^ "Self "Mandarin" 2017.1". GitHub. 24 May 2017. Retrieved 1 November 2024.
  3. ^ Wolczko, Mario (1996). self includes: Smalltalk. Workshop on Prototype-Based Languages, ECOOP '96. Linz, Austria.