[comp.lang.ada] Procedural variables, abstraction mechanisms, ADTs

billwolf@hubcap.clemson.edu (William Thomas Wolfe,2847,) (12/28/88)

From article <5696@medusa.cs.purdue.edu>, by rjh@cs.purdue.edu (Bob Hathaway):
> 
> For yet another Ada 9X extension, I propose procedural variables.  

     This proposal has been given detailed consideration in Chapter 4 of 
     "Abstraction Mechanisms and Language Design", an ACM Distinguished 
     Dissertation by Paul N. Hilfinger.  Hilfinger was a member of the 
     Ada design team (see the Foreword in your LRM), and Chapter 4 is 
     concerned with ways in which the abstraction mechanisms in current 
     Ada can be strengthened even further.  It's published in book form 
     by the MIT Press, and should be available in the Purdue library.

     Another book I would strongly recommend to anyone interested in
     abstraction and programming languages is "Concurrency and Programming
     Languages", by David Harland.  Harland spends 2/3 of the book discussing
     *abstraction* and programming languages, and eventually does get around
     to actually discussing concurrency in Chapter 3.  Harland drives home
     the point that the default must be to maximize expressivity, and the
     burden of proof must fall upon those who argue that certain forms of
     abstraction must not be permitted.  Although I believe that such an
     argument can be made successfully in certain cases, whereas Harland
     apparently does not, the book is nevertheless a very powerful argument
     in favor of "unfettered abstraction", and it will certainly make you
     think.  Harland also takes on Lisp and the functional programming 
     languages; his comments are very terse, and quite devastating.  This  
     book is relatively small, but its intellectual content is tremendous.
     It's definitely a book you'll want to reserve several weekends for. 

     For a more practical look at abstract data types, Grady Booch's
     "Software Components with Ada" is a classic.  I also like Booch's
     definition of object-oriented programming, which essentially states
     that OOP is the practice of applying ADTs in a sensible manner.


                                          Bill Wolfe

                                   wtwolfe@hubcap.clemson.edu