the power of abstraction the power of abstraction
play

The Power of Abstraction The Power of Abstraction Barbara Liskov - PowerPoint PPT Presentation

The Power of Abstraction The Power of Abstraction Barbara Liskov October 2009 October 2009 Outline Inventing abstract data types CLU CLU Type hierarchy What next h Data Abstraction Prehistory The Venus machine The


  1. The Power of Abstraction The Power of Abstraction Barbara Liskov October 2009 October 2009

  2. Outline  Inventing abstract data types  CLU  CLU  Type hierarchy  What next h

  3. Data Abstraction Prehistory  The Venus machine

  4. The Interdata 3

  5. Data Abstraction Prehistory  The Venus machine  The Venus operating system  The Venus operating system

  6. Data Abstraction Prehistory  The Venus machine  The Venus operating system  The Venus operating system  Programming methodology

  7. Programming Methodology  The software crisis!  Machines were getting cheaper  Machines were getting cheaper  And bigger/faster  E. W. Dijkstra. The Humble Programmer. Cacm, Oct. 1972

  8. Programming Methodology  How should programs be designed?  How should programs be structured?  How should programs be structured?

  9. The Landscape  E. W. Dijkstra. Go To Statement Considered Harmful. Cacm, Mar. 1968 Considered Harmful. Cacm, Mar. 1968

  10. The Landscape  N. Wirth. Program Development by Stepwise Refinement. Cacm, April 1971 Stepwise Refinement. Cacm, April 1971

  11. The Landscape  D. L. Parnas. Information Distribution Aspects of Design Methodology. IFIP p g gy Congress, 1971  “The connections between modules are the assumptions which the modules make about each other.”

  12. The Landscape  D. L. Parnas, On the Criteria to be used in Decomposing Systems into Modules. in Decomposing Systems into Modules. Cacm, Dec. 1972

  13. Partitions  B. Liskov. A Design Methodology for Reliable Software Systems. FJCC, Dec. Reliable Software Systems. FJCC, Dec. 1972

  14. Partitions op1 op2 op3 1 2 3 Partition state

  15. From Partitions to ADTs  How can these ideas be applied to building programs? building programs?

  16. Idea  Connect partitions to data types

  17. Meeting in Savanah  ACM Sigplan-Sigops interface meeting. April 1973. (Sigplan Notices, Sept. April 1973. (Sigplan Notices, Sept. 1973)  Started to work with Steve Zilles  Started to work with Steve Zilles

  18. The Landscape  Extensible Languages  S Schuman and P Jourrand Definition  S. Schuman and P. Jourrand. Definition Mechanisms in Extensible Programming Languages. AFIPS. 1967  R. Balzer. Dataless Programming. FJCC 1967

  19. The Landscape  O-J. Dahl and C.A.R. Hoare. Hierarchical Program Structures. Structured Program Structures. Structured Programming, Academic Press, 1972

  20. The Landscape  J. H. Morris. Protection in Programming Languages. Cacm. Jan. 1973 Languages. Cacm. Jan. 1973

  21. The Landscape  W. Wulf and M. Shaw. Global Variable Considered Harmful. Sigplan Notices. Considered Harmful. Sigplan Notices. Feb. 1973.

  22. Abstract Data Types  B. Liskov and S. Zilles. Programming with Abstract Data Types. ACM Sigplan yp gp Conference on Very High Level Languages. April 1974

  23. What that paper proposed  Abstract data types  A set of operations  A set of operations  And a set of objects  The operations provide the only way to use  The operations provide the only way to use the objects

  24. What that paper proposed  Abstract data types  Clusters with encapsulation  Clusters with encapsulation  Polymorphism  Static type checking (we hoped) St ti t h ki ( h d)  Exception handling

  25. From ADTs to CLU  Participants  Russ Atkinson  Russ Atkinson  Craig Schaffert  Alan Snyder  Alan Snyder

  26. Why a Programming Language?  Communicating to programmers  Do ADTs work in practice?  Do ADTs work in practice?  Getting a precise definition  Achieving reasonable performance h bl f

  27. Language Design  Goals  Ease of use  Ease of use  Simplicity  Expressive power  Expressive power  Performance

  28. Language Design  More goals  Minimality  Minimality  Uniformity  Safety  Safety

  29. Some Assumptions/Decisions  Heap-based with garbage collection!  No block structure!  No block structure!  Separate compilation  Static type checking h k

  30. More Assumptions/Decisions  No concurrency  No go tos  No go tos  No inheritance

  31. CLU Mechanisms  Clusters  Polymorphism  Polymorphism  Exception handling  Iterators

  32. Clusters IntSet = cluster is create, insert, delete, isIn, … end IntSet d I tS t

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

  34. Clusters IntSet = cluster is create, insert, delete, … rep = array[int] [i t]

  35. Clusters IntSet = cluster is create, insert, delete, … rep = array[int] [i t] create = proc ( ) returns (cvt) create = proc ( ) returns (cvt) return (rep$create( )) end create e d c eate

  36. Polymorphism Set = cluster[T: type] is create, insert, … end Set Set[int] s := Set[int]$create( ) Set[int]$insert(s 3) Set[int]$insert(s, 3)

  37. Polymorphism Set = cluster[T: type] is create, insert, … where T has equal: proctype(T, T) q p yp ( , ) returns (bool)

  38. 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 …

  39. Exception Handling  J. Goodenough. Exception Handling: Issues and a Proposed Notation. Cacm, Issues and a Proposed Notation. Cacm, Dec. 1975  Termination vs. resumption  Termination vs. resumption  How to specify handlers

  40. Exception Handling choose = proc (x: T) signals (empty) if rep$size() = 0 then signal empty if rep$size() = 0 then signal empty …

  41. Exception Handling choose = proc (x: T) signals (empty) if rep$size() = 0 then signal empty if rep$size() = 0 then signal empty … set[T]$ choose() t[T]$ h () except when empty: …

  42. Exception Handling  Handling  Propagating  Propagating  Shouldn’t happen  The failure exception Th f il ti  Principles  Accurate interfaces  Avoid useless code

  43. Iterators  For all x in C do S

  44. Iterators  For all x in C do S  Destroy the collection?  Destroy the collection?  Complicate the abstraction?

  45. Visit to CMU  Bill Wulf and Mary Shaw, Alphard  Generators  Generators

  46. Iterators sum: int := 0 for x: int in Set[int]$members(s) do [ ]$ ( ) sum := sum + x end end

  47. 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

  48. After CLU  Argus and distributed computing  Type Hierarchy  Type Hierarchy

  49. The Landscape  Inheritance was used for:  Inplementation  Inplementation  Type hierarchy

  50. Implementation Inheritance  Violated encapsulation!

  51. Type hierarchy  Wasn’t well understood  E g  E.g., stacks vs. queues stacks vs queues

  52. The Liskov Substitution Principle (LSP)  Objects of subtypes should behave like those of supertypes if used via those of supertypes if used via supertype methods  B. Liskov. Data abstraction and hierarchy Sigplan notices May 1988 hierarchy. Sigplan notices, May 1988

  53. Polymorphism  where T has … vs.  where T subtype of S  where T subtype of S  Proofs happen at different times! f h d ff

  54. What Next?  Modularity based on abstraction is the way things are done way things are done

  55. Modern Programming Languages  Are good!

  56. Missing Features  Procedures are important  And closures and iterators  And closures and iterators  Exception handling  Built-in types l  Can’t we do better for “serialization”?

  57. The state of programming  Isn’t great!  Especially web services and browsers  Especially web services and browsers  Return of globals

  58. An aside: persistent storage typically violates abstraction  E.g., a file system or a database  It’s a big space of globals!  It s a big space of globals!  Without support for encapsulation  An object store would be much better b ld b h b  Automatic translation  Type preservation

  59. Programming language research  New abstraction mechanisms?  Concurrency  Concurrency  Multi-core machines  Distributed systems? Di t ib t d t ?

  60. Systems research  Has done well  Distributed hash tables  Distributed hash tables  Map-reduce  Client/server  Client/server  Distributed information flow  …

  61. A Concern  Performance isn’t the most important issue issue  vs. semantics  vs simplicity  vs. simplicity  E.g., one-copy consistency  Failures should be catastrophes Failures should be catastrophes

  62. Systems Problems  Internet Computer  Storage and computation  Storage and computation  Semantics, reliability, availability, security  Massively parallel machines Massively parallel machines

  63. The Power of Abstraction The Power of Abstraction Barbara Liskov October 2009 October 2009

Recommend


More recommend