The Power of Abstraction

52
The Power of Abstraction Barbara Liskov May 2013 MIT CSAIL

description

The Power of Abstraction. Barbara Liskov May 2013 MIT CSAIL. Software is Complex. Systems are big and they do complicated things and they may be distributed and/or concurrent. Addressing Complexity. Algorithms, data structures, protocols. Addressing Complexity. - PowerPoint PPT Presentation

Transcript of The Power of Abstraction

Page 1: The Power of Abstraction

The Power of Abstraction

Barbara LiskovMay 2013MIT CSAIL

Page 2: The Power of Abstraction

Software is Complex Systems are big and they do complicated things and they may be distributed and/or

concurrent

Page 3: The Power of Abstraction

Addressing Complexity Algorithms, data structures,

protocols

Page 4: The Power of Abstraction

Addressing Complexity Algorithms, data structures,

protocols

Programming methodology Programming languages

Page 5: The Power of Abstraction

This Talk Programming methodology as it

developed Programming languages Programming languages today

Page 6: The Power of Abstraction

The Situation in 1970 The software crisis!

Page 7: The Power of Abstraction

Programming Methodology How should programs be

designed? How should programs be

structured?

Page 8: The Power of Abstraction

The Landscape E. W. Dijkstra. Go To Statement

Considered Harmful. Cacm, Mar. 1968

Page 9: The Power of Abstraction

The Landscape N. Wirth. Program Development by

Stepwise Refinement. Cacm, April 1971

Page 10: The Power of Abstraction

The Landscape D. L. Parnas. Information

Distribution Aspects of Design Methodology. IFIP Congress, 1971

“The connections between modules are the assumptions which the modules make about each other.”

Page 11: The Power of Abstraction

Modularity A program is a collection of

modules

Page 12: The Power of Abstraction

Modularity A program is a collection of

modules Each module has an interface,

described by a specification

Page 13: The Power of Abstraction

Modularity A program is a collection of

modules Each has an interface, described

by a specification A module’s implementation is correct

if it meets the specification A using module depends only on the

specification

Page 14: The Power of Abstraction

Modularity A program is a collection of modules Each has an interface, described by

a specification A module’s implementation is correct if

it meets the specification A using module depends only on the

specification E.g. a sort routine sort(a)

Page 15: The Power of Abstraction

Benefits of Modularity Local reasoning Modifiability Independent development

Page 16: The Power of Abstraction

The Situation in 1970 Procedures were the only type of

module Not powerful enough, e.g., a file

system Not used very much Complicated connections

Page 17: The Power of Abstraction

Partitions B. Liskov. A Design Methodology

for Reliable Software Systems. FJCC, Dec. 1972

Page 18: The Power of Abstraction

Partitions

Partition state

op1 op2 op3

Page 19: The Power of Abstraction

From Partitions to ADTs How can these ideas be applied to

building programs?

Page 20: The Power of Abstraction

Idea Connect partitions to data types

Page 21: The Power of Abstraction

Partitions as Data Types

Partition state

op1 op2 op3

Page 22: The Power of Abstraction

Exploring Abstract Data Types Joint work with Steve Zilles

Page 23: The Power of Abstraction

The Landscape Extensible Languages

S. Schuman and P. Jourrand. Definition Mechanisms in Extensible Programming Languages. AFIPS. 1970

R. Balzer. Dataless Programming. AFIPS. 1967

Page 24: The Power of Abstraction

The Landscape O-J. Dahl and C.A.R. Hoare.

Hierarchical Program Structures. Structured Programming, Academic Press, 1972

Page 25: The Power of Abstraction

The Landscape J. H. Morris. Protection in

Programming Languages. Cacm. Jan. 1973

Page 26: The Power of Abstraction

Abstract Data Types B. Liskov and S. Zilles.

Programming with Abstract Data Types. ACM Sigplan Conference on Very High Level Languages. April 1974

Page 27: The Power of Abstraction

What that paper proposed Abstract data types

A set of operations And a set of objects The operations provide the only way

to use the objects A sketch of a programming

language

Page 28: The Power of Abstraction

From ADTs to CLU Participants

Russ Atkinson Craig Schaffert Alan Snyder

Page 29: The Power of Abstraction
Page 30: The Power of Abstraction

Why a Programming Language? Communicating to programmers Do ADTs work in practice? Getting a precise definition Achieving reasonable performance

Page 31: The Power of Abstraction

Some Facts about CLU Static type checking Heap-based Separate compilation No concurrency, no gotos, no

inheritance

Page 32: The Power of Abstraction

CLU Mechanisms Clusters Polymorphism (generics) Iterators Exception handling

Page 33: The Power of Abstraction

ClustersIntSet = cluster is create, insert, delete, … % representation for IntSet objects % implementation of the operationsend IntSet

Page 34: The Power of Abstraction

ClustersIntSet = cluster is create, insert, delete, … % representation for IntSet objects % implementation of the operationsend IntSet

IntSet s = IntSet$create( )IntSet$insert(s, 3)

Page 35: The Power of Abstraction

PolymorphismSet = cluster[T: type] is create, insert,

… % representation for Set object % implementation of Set operations end Set

Set[int] s := Set[int]$create( )Set[int]$insert(s, 3)

Page 36: The Power of Abstraction

PolymorphismSet = cluster[T: type] is create, insert, … where T has equal: proctype(T, T) returns (bool)

Page 37: The Power of Abstraction

Iterators For all x in C do S

Page 38: The Power of Abstraction

Iterators For all x in C do S

Destroy the collection? Complicate the abstraction?

Page 39: The Power of Abstraction

Visit to CMU Bill Wulf and Mary Shaw, Alphard Generators

Page 40: The Power of Abstraction

Iteratorssum: int := 0for e: int in Set[int]$members(s) do sum := sum + e end

Page 41: The Power of Abstraction

Also Exception handling

Strong specifications, e.g., IntSet$choose

First class procedures and iterators

Page 42: The Power of Abstraction

After CLU Argus and distributed computing Programming methodology

Modular program design Reasoning about correctness Type hierarchy

Page 43: The Power of Abstraction

From CLU to Object-Oriented Programming SmallTalk provided inheritance

Page 44: The Power of Abstraction

The Landscape Inheritance was used for:

Implementation Type hierarchy

Page 45: The Power of Abstraction

Type Hierarchy Wasn’t well understood

E.g., stacks vs. queues

Page 46: The Power of Abstraction

The Liskov Substitution Principle (LSP) Objects of subtypes should behave

like those of supertypes if used via supertype methods

B. Liskov. Data abstraction and hierarchy. Sigplan notices, May 1988

Page 47: The Power of Abstraction

What Next? Modularity based on abstraction is

the way things are done

Page 48: The Power of Abstraction

Programming Languages Today Languages for experts, e.g., Java,

C#

Page 49: The Power of Abstraction

Programming 1A E.g., Python

Page 50: The Power of Abstraction

Challenges A programming language for

novices and experts Ease of use vs. expressive power Readability vs. writeability Modularity and encapsulation Powerful abstraction mechanisms State matters

Page 51: The Power of Abstraction

Challenges Massively-parallel computers

Programming methodology Programming language support

Page 52: The Power of Abstraction

The Power of Abstraction

Barbara LiskovMay 2013MIT CSAIL