self: the power of simplicity david ungar and randall b. smith presenter: jonathan aldrich 15-819

Post on 23-Dec-2015

212 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Self:The Power of Simplicity

David Ungar and Randall B. Smith

Presenter: Jonathan Aldrich

15-819

History: Smalltalk

• First “modern” OO language – Alan Kay, 1970s– Everything is an object (e.g., the number 15, the class List)– Garbage collection– Closures

• Exploratory programming– Designed for kids– Dynamically typed– Add new code/evaluate exprs with no compilation required

• Extraordinary development environment– 10-20 years ago, better than the best IDE today

• Try it (Squeak)

Self’s Simplicity

• No classes (clone objects instead)

• No variables (use messages)

• No control structures (use polymorphism)

• Everything is an object

Classes vs. Prototypes

• Classes– Hold behavior

– Inherit from another class

– Can be instantiated

• Objects– Hold state

– Are an instance of a class

• Prototypes– Hold behavior

– Delegate (inherit) to another object

– Can be cloned

– Hold state

Classes vs. Prototypes

Instantiation vs. Cloning

Self Flexibility

Control Structures

Modeling closures

• Just prototype objects– Cloned when closure is invoked– Slots for local variables– parent pointer refers to enclosing environment

• For closures, just the enclosing method

• For methods, set to receiver object

Closures

Multiple Inheritance

Code Example

Expressiveness

• Examples in paper– Sharing state between objects– Singleton objects– Easily replace variable with method

• Run-time behavior changes– Add/remove methods– Dynamic Inheritance: Add/remove/change

parent links

Dynamic Inheritance Example

ReactorController

parent*…

NormalController

operate = { … if (badness) parent*: SafetyController … }

SafetyController

restart = { … if (safe condition) parent*: NormalController … }

Checking

• Dynamically typed– Errors are caught at run time

• This slide is largely a placeholder– Will be important part of discussion in other

papers

Claimed Engineering Benefits(in addition to expressiveness)

• Concreteness of prototypes

• Simplicity of cloning

• [Eliminates infinite meta-regress of Smalltalk]

Engineering Challenges

• Are classes too useful to programmers to give up?

• Difficulty of reasoning about dynamism

• Typechecking [Andi’s research]

Secret Agenda

• Development of new language: Plaid– Prototype-based

• Unifies objects, classes, modules

– Type-safe dynamic inheritance– Other features

• Multi-methods, aspects, typestate, ownership

• Emphasis: safe component-based SE

top related