Your SlideShare is downloading. ×
0
The Power of Abstraction

       Barbara Liskov
       November 2009
Outline
 Inventing abstract data types
 CLU
 Type hierarchy
 What next
Data Abstraction Prehistory
 The Venus machine
The Interdata 3
Data Abstraction Prehistory
 The Venus machine
 The Venus operating system
Data Abstraction Prehistory
 The Venus machine
 The Venus operating system
 Programming methodology
Programming Methodology
 How should programs be designed?
 How should programs be structured?
The Landscape
 E. W. Dijkstra. Go To Statement
 Considered Harmful. Cacm, Mar. 1968
The Landscape
 N. Wirth. Program Development by
 Stepwise Refinement. Cacm, April 1971
The Landscape
 D. L. Parnas. Information Distribution
 Aspects of Design Methodology. IFIP
 Congress, 1971

 “The connecti...
Partitions
 B. Liskov. A Design Methodology for
 Reliable Software Systems. FJCC, Dec.
 1972
Partitions

             op1 op2 op3




             Partition state
From Partitions to ADTs
 How can these ideas be applied to
 building programs?
Idea
 Connect partitions to data types
Meeting in Savanah
 ACM Sigplan-Sigops interface meeting.
 April 1973. (Sigplan Notices, Sept.
 1973)
 Started to work wit...
The Landscape
 Extensible Languages
   S. Schuman and P. Jourrand. Definition
   Mechanisms in Extensible Programming
   L...
The Landscape
 O-J. Dahl and C.A.R. Hoare. Hierarchical
 Program Structures. Structured
 Programming, Academic Press, 1972
The Landscape
 J. H. Morris. Protection in Programming
 Languages. Cacm. Jan. 1973
The Landscape
 W. Wulf and M. Shaw. Global Variable
 Considered Harmful. Sigplan Notices.
 Feb. 1973.
Abstract Data Types
 B. Liskov and S. Zilles. Programming
 with Abstract Data Types. ACM Sigplan
 Conference on Very High ...
What that paper proposed
 Abstract data types
   A set of operations
   And a set of objects
   The operations provide the...
What that paper proposed
 Abstract data types
   Clusters with encapsulation
 Polymorphism
 Static type checking (we hoped...
From ADTs to CLU
 Participants
   Russ Atkinson
   Craig Schaffert
   Alan Snyder
Why a Programming
Language?
 Communicating to programmers
 Do ADTs work in practice?
 Getting a precise definition
 Achiev...
Language Design
 Goals
   Expressive power, simplicity, performance,
   ease of use

   Minimality
   Uniformity
   Safety
Language Design
 Restrictions
   No concurrency
   No go tos
   No inheritance
Some Assumptions/Decisions
 Heap-based with garbage collection!
 No block structure!
 Separate compilation
 Static type ch...
CLU Mechanisms
 Clusters
 Polymorphism
 Exception handling
 Iterators
Clusters
IntSet = cluster is create, insert, delete, isIn, …

end IntSet
Clusters
IntSet = cluster is create, insert, delete, …
end IntSet


IntSet s := IntSet$create( )
IntSet$insert(s, 3)
Clusters
  IntSet = cluster is create, insert, delete, …

     rep = array[int]
Clusters
  IntSet = cluster is create, insert, delete, …

     rep = array[int]

     create = proc ( ) returns (cvt)
    ...
Polymorphism
 Set = cluster[T: type] is create, insert, …
 end Set



 Set[int] s := Set[int]$create( )
 Set[int]$insert(s...
Polymorphism
Set = cluster[T: type] is create, insert, …
  where T has equal: proctype(T, T)
     returns (bool)
Polymorphism
Set = cluster[T: type] is create, insert, …
  where T has equal: proctype(T, T)
     returns (bool)

   rep =...
Exception Handling
 J. Goodenough. Exception Handling:
 Issues and a Proposed Notation. Cacm,
 Dec. 1975
   Termination vs...
Exception Handling
choose = proc (x: cvt) returns (T)
  signals (empty)
    if rep$size() = 0 then signal empty
    …
Exception Handling
choose = proc (x: cvt) returns (T)
 signals (empty)
   if rep$size() = 0 then signal empty
   …

set[T]...
Exception Handling
 Handling
 Propagating
 Shouldn’t happen
   The failure exception
 Principles
   Accurate interfaces
  ...
Iterators
 For all x in C do S
Iterators
 For all x in C do S
   Destroy the collection?
   Complicate the abstraction?
Visit to CMU
 Bill Wulf and Mary Shaw, Alphard
 Generators
Iterators
sum: int := 0
for e: int in Set[int]$members(s) do
  sum := sum + e
  end
Iterators
Set = cluster[T] is create, …, members, …

    rep = array[T]

    members = iter (x: cvt) yields (T)
     for z...
After CLU
 Argus and distributed computing
 Type Hierarchy
The Landscape
 Inheritance was used for:
   Implementation
   Type hierarchy
Implementation Inheritance
 Violated encapsulation!
Type hierarchy
 Wasn’t well understood
 E.g., stacks vs. queues
The Liskov Substitution
Principle (LSP)
 Objects of subtypes should behave like
 those of supertypes if used via
 supertyp...
Polymorphism
 where T has …    vs.
 where T subtype of S

 Proofs happen at different times!
What Next?
 Modularity based on abstraction is the
 way things are done
Challenges
 New abstraction mechanisms?
 Massively Parallel Computers
 Internet Computer
   Storage and computation
   Sem...
The Power of Abstraction

        Barbara Liskov
        October 2009
The power of abstraction
Upcoming SlideShare
Loading in...5
×

The power of abstraction

2,563

Published on

Published in: Technology
1 Comment
1 Like
Statistics
Notes
  • why I can't receive the email?~~~~~~~~ORC~~~~~~
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
2,563
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
36
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "The power of abstraction"

  1. 1. The Power of Abstraction Barbara Liskov November 2009
  2. 2. Outline Inventing abstract data types CLU Type hierarchy What next
  3. 3. Data Abstraction Prehistory The Venus machine
  4. 4. The Interdata 3
  5. 5. Data Abstraction Prehistory The Venus machine The Venus operating system
  6. 6. Data Abstraction Prehistory The Venus machine The Venus operating system Programming methodology
  7. 7. Programming Methodology How should programs be designed? How should programs be structured?
  8. 8. The Landscape E. W. Dijkstra. Go To Statement Considered Harmful. Cacm, Mar. 1968
  9. 9. The Landscape N. Wirth. Program Development by Stepwise Refinement. Cacm, April 1971
  10. 10. 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.”
  11. 11. Partitions B. Liskov. A Design Methodology for Reliable Software Systems. FJCC, Dec. 1972
  12. 12. Partitions op1 op2 op3 Partition state
  13. 13. From Partitions to ADTs How can these ideas be applied to building programs?
  14. 14. Idea Connect partitions to data types
  15. 15. Meeting in Savanah ACM Sigplan-Sigops interface meeting. April 1973. (Sigplan Notices, Sept. 1973) Started to work with Steve Zilles
  16. 16. The Landscape Extensible Languages S. Schuman and P. Jourrand. Definition Mechanisms in Extensible Programming Languages. AFIPS. 1967 R. Balzer. Dataless Programming. FJCC 1967
  17. 17. The Landscape O-J. Dahl and C.A.R. Hoare. Hierarchical Program Structures. Structured Programming, Academic Press, 1972
  18. 18. The Landscape J. H. Morris. Protection in Programming Languages. Cacm. Jan. 1973
  19. 19. The Landscape W. Wulf and M. Shaw. Global Variable Considered Harmful. Sigplan Notices. Feb. 1973.
  20. 20. Abstract Data Types B. Liskov and S. Zilles. Programming with Abstract Data Types. ACM Sigplan Conference on Very High Level Languages. April 1974
  21. 21. 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
  22. 22. What that paper proposed Abstract data types Clusters with encapsulation Polymorphism Static type checking (we hoped) Exception handling
  23. 23. From ADTs to CLU Participants Russ Atkinson Craig Schaffert Alan Snyder
  24. 24. Why a Programming Language? Communicating to programmers Do ADTs work in practice? Getting a precise definition Achieving reasonable performance
  25. 25. Language Design Goals Expressive power, simplicity, performance, ease of use Minimality Uniformity Safety
  26. 26. Language Design Restrictions No concurrency No go tos No inheritance
  27. 27. Some Assumptions/Decisions Heap-based with garbage collection! No block structure! Separate compilation Static type checking
  28. 28. CLU Mechanisms Clusters Polymorphism Exception handling Iterators
  29. 29. Clusters IntSet = cluster is create, insert, delete, isIn, … end IntSet
  30. 30. Clusters IntSet = cluster is create, insert, delete, … end IntSet IntSet s := IntSet$create( ) IntSet$insert(s, 3)
  31. 31. Clusters IntSet = cluster is create, insert, delete, … rep = array[int]
  32. 32. Clusters IntSet = cluster is create, insert, delete, … rep = array[int] create = proc ( ) returns (cvt) return (rep$create( )) end create
  33. 33. Polymorphism Set = cluster[T: type] is create, insert, … end Set Set[int] s := Set[int]$create( ) Set[int]$insert(s, 3)
  34. 34. Polymorphism Set = cluster[T: type] is create, insert, … where T has equal: proctype(T, T) returns (bool)
  35. 35. Polymorphism Set = cluster[T: type] is create, insert, … where T has equal: proctype(T, T) returns (bool) rep = array[T] insert = proc (x: cvt, e: T) … if e = x[i] then …
  36. 36. Exception Handling J. Goodenough. Exception Handling: Issues and a Proposed Notation. Cacm, Dec. 1975 Termination vs. resumption How to specify handlers
  37. 37. Exception Handling choose = proc (x: cvt) returns (T) signals (empty) if rep$size() = 0 then signal empty …
  38. 38. Exception Handling choose = proc (x: cvt) returns (T) signals (empty) if rep$size() = 0 then signal empty … set[T]$ choose(s) except when empty: …
  39. 39. Exception Handling Handling Propagating Shouldn’t happen The failure exception Principles Accurate interfaces Avoid useless code
  40. 40. Iterators For all x in C do S
  41. 41. Iterators For all x in C do S Destroy the collection? Complicate the abstraction?
  42. 42. Visit to CMU Bill Wulf and Mary Shaw, Alphard Generators
  43. 43. Iterators sum: int := 0 for e: int in Set[int]$members(s) do sum := sum + e end
  44. 44. Iterators Set = cluster[T] is create, …, members, … rep = array[T] members = iter (x: cvt) yields (T) for z: T in rep$elements(x) do yield (z) end
  45. 45. After CLU Argus and distributed computing Type Hierarchy
  46. 46. The Landscape Inheritance was used for: Implementation Type hierarchy
  47. 47. Implementation Inheritance Violated encapsulation!
  48. 48. Type hierarchy Wasn’t well understood E.g., stacks vs. queues
  49. 49. 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
  50. 50. Polymorphism where T has … vs. where T subtype of S Proofs happen at different times!
  51. 51. What Next? Modularity based on abstraction is the way things are done
  52. 52. Challenges New abstraction mechanisms? Massively Parallel Computers Internet Computer Storage and computation Semantics, reliability, availability, security
  53. 53. The Power of Abstraction Barbara Liskov October 2009
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×