Dynamic ADTs: a "don't ask, don't tell" policy for data abstraction

We outline an approach to abstract data types (ADTs) that allows an object of the type specified by the ADT to take on one of many possible representations. A dynamic abstract data type (DADT) is dual to dynamic algorithm selection and facilitates profiling of data in conjunction with the profiling of code. It also permits a programmer to delay or ignore details pertaining to data representation and enhance the efficiency of some algorithms by changing representations at run time without writing code extraneous to the algorithm itself. Additionally, we demonstrate that run time optimization of data objects is possible and allows for acceptable performance compared to traditional ADTs. An implementation is presented in Common Lisp.

[1]  Julian Richardson Automating changes of data type in functional programs , 1995, Proceedings 1995 10th Knowledge-Based Software Engineering Conference.

[2]  Paul Rovner,et al.  Techniques for the automatic selection of data structures , 1976, POPL.

[3]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

[4]  John R. White,et al.  On the Multiple Implementation of Abstract Data Types Within a Computation , 1983, IEEE Transactions on Software Engineering.

[5]  Michael Franz,et al.  Continuous program optimization: A case study , 2003, TOPL.

[6]  Douglas R. Smith,et al.  KIDS: A Semiautomatic Program Development System , 1990, IEEE Trans. Software Eng..

[7]  Elena Zucca,et al.  From Static to Dynamic Abstract Data-Types: An Institution Transformation , 1999, Theor. Comput. Sci..

[8]  Nicolas Magaud Changing Data Representation within the Coq System , 2003, TPHOLs.

[9]  Richard P. Gabriel,et al.  Conscientious software , 2006, OOPSLA '06.

[10]  Hartmut Ehrig,et al.  Dynamic Abstract Data Types: An informal Proposal , 1994, Bull. EATCS.

[11]  David Aspinall,et al.  Formalising Java's Data Race Free Guarantee , 2007, TPHOLs.

[12]  Micha Sharir,et al.  An Automatic Technique for Selection of Data Representations in SETL Programs , 1981, TOPL.

[13]  Edmond Schonberg,et al.  Programming with Sets: An Introduction to SETL , 1986 .

[14]  Philip Wadler,et al.  Views: a way for pattern matching to cohabit with data abstraction , 1987, POPL '87.

[15]  Jens Brandt,et al.  Theorem Proving in Higher Order Logics , 1997, Lecture Notes in Computer Science.

[16]  W. Armstrong,et al.  Dynamic Algorithm Selection Using Reinforcement Learning , 2006, 2006 International Workshop on Integrating AI and Data Mining.

[17]  Jr. Nicholas John Carriero Implementation of tuple space machines , 1987 .

[18]  Guy E. Blelloch,et al.  An experimental analysis of self-adjusting computation , 2009 .

[19]  Martin H. Levinson Creativity: Flow and the Psychology of Discovery and Invention , 1997 .

[20]  Martin Rinard,et al.  Acceptability-oriented computing , 2003, SIGP.

[21]  Clifford Stein,et al.  Introduction to Algorithms, 2nd edition. , 2001 .

[22]  R. K. Shyamasundar,et al.  Introduction to algorithms , 1996 .

[23]  Donald E. Knuth,et al.  The art of computer programming, volume 3: (2nd ed.) sorting and searching , 1998 .

[24]  Allen Goldberg,et al.  DTRE - A Semi-Automatic Transformation System , 1991 .