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

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend