Programming with Abstract Data Types

B. Liskov & S.Zilles,

ACM SIGPLAN Notices, 1974

Remote PWL #4

Thomas Depierre

@DianaO

Diana Olympos

 

Twitter :

Github :

Survey

Have you heard the name Liskov before ?

Have you heard about Abstract Data Types ?

What is sufficient to define an abstraction ?

Why this paper ?

We build complex systems.

We have 60 years of experience doing it.

Foundation of how we design software today.

Not the only way

Have a look at Human Factors and Ergonomics and System design stuff please :)

Why this paper ?

What an enormous impact this paper has had on how we program today. Has there been any single advance in programming languages since this work (42 years ago) which has made such a big impact on mainstream programming? I can’t think of one.

Are we teaching it ?

Are we learning it ?
Are we using it ?

Survey Results

A bit of Vocabulary

Structured Programming

  • Control structures
  • Subroutines : procedures, functions...
  • Structured program theorem

Objects

  • Not your Class based Objects
  • We are getting back to it later
  • A "thing". Something that exist by itself
  • Mundane definition of object.

Small program interruption !

Small program interruption !

Extensible languages

Standard Abstract Operations

Implementations considerations

  • Not a lot to look at from a modern point of view
  • Still worth noting they define a nice linking table there...

A small thing

Nothing about speed !

Full separation of logical and physical models

This does not work that well in practice

Personal conclusions

  • ADTs are everywhere. Syscall table, API, Interfaces,...
  • We still have work to do on them.
  • Defining a contract between two programs is not a solved problem

Please use the ideas of this paper.

 

They are still as relevant.

Define a public API for your stuff and hide everything behind it.

You can rip the implementation and replace it later.

Look at our history.

We build complex system everyday.

There are papers on Software Design.

The one before Design Pattern and UML please.

And look at Systems stuff and Human Factors and Ergonomics.

I can provide links. Talk to me.

Thank you !

Any questions ?

Programming with Abstract Data Types

By di4nao

Programming with Abstract Data Types

  • 722