Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Personal distributed computing: the Alto and Ethernet hardware
HPW '86 Proceedings of the ACM Conference on The history of personal workstations
Object structure in the Emerald system
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Using prototypical objects to implement shared behavior in object-oriented systems
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Constraint-based tools for building user interfaces
ACM Transactions on Graphics (TOG) - Special issue on user interface software
The design and evaluation of a high performance Smalltalk system
The design and evaluation of a high performance Smalltalk system
Experiences with the alternate reality kit: an example of the tension between literalism and magic
CHI '87 Proceedings of the SIGCHI/GI Conference on Human Factors in Computing Systems and Graphics Interface
Compiling Smalltalk-80 to a RISC
ASPLOS II Proceedings of the second international conference on Architectual support for programming languages and operating systems
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
A semantics of multiple inheritance
Information and Computation - Semantics of Data Types
Firefly: A Multiprocessor Workstation
IEEE Transactions on Computers - Special issue on architectural support for programming languages and operating systems
TS: an optimizing compiler for smalltalk
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
OOPSLA '87 Addendum to the proceedings on Object-oriented programming systems, languages and applications (Addendum)
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Strong typing of object-oriented languages revisited
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Effective sounds in complex systems: the ARKOLA simulation
CHI '91 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Cone Trees: animated 3D visualizations of hierarchical information
CHI '91 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Parents are shared parts of objects: inheritance and encapsulation in SELF
Lisp and Symbolic Computation
Preliminary experiments with a distributed, multi-media, problem solving environment
Studies in computer supported cooperative work
Making pure object-oriented languages practical
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
The use-mention perspective on programming for the interface
Languages for developing user interfaces
Prototype-based languages: from a new taxonomy to constructive proposals and their validation
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
Debugging optimized code with dynamic deoptimization
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
The early history of Smalltalk
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Direct programming using a unified object model (abstract)
OOPSLA '92 Addendum to the proceedings on Object-oriented programming systems, languages, and applications (Addendum)
Strongtalk: typechecking Smalltalk in a production environment
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Pygmalion: an executable electronic blackboard
Watch what I do
Rehearsal world: programming by rehearsal
Watch what I do
Animation: from cartoons to the user interface
UIST '93 Proceedings of the 6th annual ACM symposium on User interface software and technology
Object-oriented programming with prototypes
Object-oriented programming with prototypes
Optimizing dynamically-dispatched calls with run-time type feedback
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Prototype-based languages (panel): object lessons from class-free programming
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
A third-generation SELF implementation: reconciling responsiveness with performance
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
A language with distributed scope
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Visual object-oriented programming
Animating direct manipulation interfaces
Proceedings of the 8th annual ACM symposium on User interface and software technology
Directness and liveness in the morphic user interface construction environment
Proceedings of the 8th annual ACM symposium on User interface and software technology
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Using a prototype-based language for user interface: the Newton project's experience
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Annotating objects for transport to other worlds
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
A theory of primitive objects: untyped and first-order systems
Information and Computation - special issue: symposium on theoretical aspects of computer software TACS '94
Automatic inheritance hierarchy restructuring and method refactoring
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A simple and unifying approach to subjective objects
Theory and Practice of Object Systems - Special issue on subjectivity in object-oriented systems
Specifying subject-oriented composition
Theory and Practice of Object Systems - Special issue on subjectivity in object-oriented systems
From Kansas to Oz: collaborative debugging when a shared world breaks
Communications of the ACM
The Amulet Environment: New Models for Effective User Interface Software Development
IEEE Transactions on Software Engineering
Design and implementation of Pep, a Java just-in-time translator
Theory and Practice of Object Systems
A refactoring tool for Smalltalk
Theory and Practice of Object Systems - Special issue object-oriented software evolution and re-engineering
The Jalapeño dynamic optimizing compiler for Java
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
OOPWORK '86 Proceedings of the 1986 SIGPLAN workshop on Object-oriented programming
Dynamo: a transparent dynamic optimization system
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
ACM Transactions on Programming Languages and Systems (TOPLAS)
On the criteria to be used in decomposing systems into modules
Communications of the ACM
SIMULA: an ALGOL-based simulation language
Communications of the ACM
Applying cartoon animation techniques to graphical user interfaces
ACM Transactions on Computer-Human Interaction (TOCHI)
Partial method compilation using dynamic profile information
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Programming distributed systems with the delegation-based object-oriented language dSelf
Proceedings of the 2002 ACM symposium on Applied computing
Lisaac: the power of simplicity at work for operating system
CRPIT '02 Proceedings of the Fortieth International Conference on Tools Pacific: Objects for internet, mobile and embedded applications
Orthogonally persistent object systems
The VLDB Journal — The International Journal on Very Large Data Bases - Persistent object systems
A lambda calculus of objects and method specialization
Nordic Journal of Computing
Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Object-Oriented Multi-Methods in Cecil
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
Programming as an Experience: The Inspiration for Self
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Do Object-Oriented Languages Need Special Hardware Support?
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Definition of a Reflective Kernel for a Prototype-Based Language
Proceedings of the First JSSST International Symposium on Object Technologies for Advanced Software
Design, implementation and evaluation of adaptive recompilation with on-stack replacement
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
Warping to Enhance 3D User Interfaces
APCHI '98 Proceedings of the Third Asian Pacific Computer and Human Interaction
Efficient implementation of the smalltalk-80 system
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Dynamic Incremental Compiler of APL\3000
APL '79 Proceedings of the international conference on APL: part 1
Generation Scavenging: A non-disruptive high performance storage reclamation algorithm
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Hints on programming language design.
Hints on programming language design.
Mirrors: design principles for meta-level facilities of object-oriented programming languages
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Constructing a metacircular Virtual machine in an exploratory programming environment
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
SelfSync: a dynamic round-trip engineering environment
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Experiments comparing face-to-face with virtual collaborative learning
CSCL '99 Proceedings of the 1999 conference on Computer support for collaborative learning
JavaScript: The Definitive Guide
JavaScript: The Definitive Guide
Supporting the distributed synchronous learning of probability: learning from an experiment
CSCL '97 Proceedings of the 2nd international conference on Computer support for collaborative learning
Prototypes with multiple dispatch: an expressive and dynamic object model
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Self-Sustaining Systems
Zero-a blend of static typing and dynamic metaprogramming
Computer Languages, Systems and Structures
A modeling language's evolution driven by tight interaction between academia and industry
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
A programming environment supporting a prototype-based introduction to OOP
Proceedings of the International Workshop on Smalltalk Technologies
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Polymorphic identifiers: uniform resource access in objective-smalltalk
Proceedings of the 9th symposium on Dynamic languages
Hi-index | 0.00 |
The years 1985 through 1995 saw the birth and development of the language Self, starting from its design by the authors at Xerox PARC, through first implementations by Ungar and his graduate students at Stanford University, and then with a larger team formed when the authors joined Sun Microsystems Laboratories in 1991. Self was designed to help programmers become more productive and creative by giving them a simple, pure, and powerful language, an implementation that combined ease of use with high performance, a user interface that off-loaded cognitive burden, and a programming environment that captured the malleability of a physical world of live objects. Accomplishing these goals required innovation in several areas: a simple yet powerful prototype-based object model for mainstream programming, many compilation techniques including customization, splitting, type prediction, polymorphic inline caches, adaptive optimization, and dynamic deoptimization, the application of cartoon animation to enhance the legibility of a dynamic graphical interface, an object-centered programming environment, and a user-interface construction framework that embodied a uniform use-mention distinction. Over the years, the project has published many papers and released four major versions of Self. Although the Self project ended in 1995, its implementation, animation, user interface toolkit architecture, and even its prototype object model impact computer science today (2006). Java virtual machines for desktop and laptop computers have adopted Self's implementation techniques, many user interfaces incorporate cartoon animation, several popular systems have adopted similar interface frameworks, and the prototype object model can be found in some of today's languages, including JavaScript. Nevertheless, the vision we tried to capture in the unified whole has yet to be achieved.