[net.lang.st80] Computation model for object-oriented programming languages

wu@crystal.UUCP (T. Wu) (03/14/86)

I think we can roughly say that:

1) Applicative (functional) languages are based on the computation model
   of lambda calculus,
2) Logical languages are founded on the computation model of resolution-based
   theory proving.

Then what is the proper model for `object-oriented' programming languages ?

I would appreciate any kind of reply.
-- 
-----
Felix S.T. Wu 
{allegra,ihnp4,heurikon,seismo,uwm-evax}!uwvax!wu
wu@crys.wisc.edu

kfr@umich.UUCP (Karl F. Ruehr) (03/15/86)

> I think we can roughly say that:
> 
> 1) Applicative (functional) languages are based on the computation model
>    of lambda calculus,
> 2) Logical languages are founded on the computation model of resolution-based
>    theory proving.
> 
> Then what is the proper model for `object-oriented' programming languages ?
> 

  One pointer I can offer is the paper:

    "A Syntactic Theory of Message Passing",  Stephen A. Ward & Robert
    H. Halstead.  Journal of the ACM, v27#2, April 1980, pp 365-383.

  This describes a calculus similar to lambda calculus but based on the
  notion of message-passing rather than function application.  They also
  make some remarks about connections with multi-processing aspects of
  the calculus and implementation.

  Two remarks I should make here:

    1) Message-passing may be only ONE aspect of object-oriented
    programming that needs to be given a good theoretical model; 
    this depends on your point of view (see various discussions in
    SIGPLAN Notices over the last 2-4 years, esp. Rentsch & MacLennan).
    Other aspects that various people see as being important are
    (multiple) inheritance, persistent local state and the inversion of
    modularity that results from nesting methods (functions) within
    objects (data).  Work by Cardelli and Strom (separately) looks at
    the first 2 of these aspects, but seems to find them independent of
    object-orientation as such (references available on request ...).

    2) The "mu-calculus" is an after-the-fact attempt to formalize
    object-oriented systems, not a theory that inspired a style of
    programming.  Therefore, it is up to people who have strong
    intuitions about what object-orientation is to decide if mu-calculus
    really captures the right ideas.  I am personally not in any
    position to do this, as my own intuitions have mostly to do with the
    functional or applicative style.

  I understand that Carl Hewitt at MIT has done a lot of work on the
  "actor" model of object-oriented programming, but I have never tracked
  down any of the references on this.  I did hear one of his students
  give a talk about relativistic phenomena in a world where different
  actors (think: processors) have different relative notions of time ...
  If anyone can provide references or explanations on that, I would be
  very interested.

							-- K. Fritz Ruehr
							   Univ. of Michigan