[comp.object] Defining OOP

jeff@aiai.ed.ac.uk (Jeff Dalton) (01/18/90)

In article <644@ajpo.sei.cmu.edu> eberard@ajpo.sei.cmu.edu (Edward Berard) writes:
>To be sure, the introduction of Simula, preceded the first
>introduction of Smalltalk by at least 6 years. [...]

>                               However, Smalltalk is significantly
>different from Simula. Specifically, it contains features which are
>"lacking" in Simula, and many consider these "missing" features
>essential to an object-oriented language.

Well, maybe they do, but many consider them wrong.  

I think we should ask ourselves how we might determine what is
essential (ie, necessary) for a language to be object-oriented.  It
clearly won't do to take every language anyone has ever said to be
object-oriented and then see what the languages have in common.
Indeed, it may be that there is nothing that all object-oriented
languages (let alone all the languages anyone's ever said to be
object-oriented) have in common.  (Think of Wittgensteins's remarks on
games, for example.  [He argued that there aren't any characteristics
common to all games.])

If we want the term to have any meaning, however, and do not want to
do too much violence to the past, we have to find a middle ground.  If
we include every language that has abstract types, for example, we
lose the distinction between object-oriented and abstract types.  On
the other hand, if we insist that object-oriented languages must have
classes, or inheritance, or explicitly use a message-sending metaphor,
we rule out languages where classes are not a different kind of
object, or languages that use delegation instead of inheritance, or
languages that use a function-call syntax -- which I would argue
does too much violence to how the term has been used in the past.

We should also bear in mind that we may have to change our mind.
Right now, I'm inclined to think that "dynamic binding" is necessary,
but it's possible (I think) that tomorrow I may learn about a language
that doesn't have dynamic binding but still seems to be object-oriented.

>[Note: It is interesting to watch some people discuss the origins of
>object-oriented programming languages. On one hand, they wish to cite
>the introduction of Simula as the beginning of object-oriented
>programming. This provides the "credibility" of being around for about
>24 years. On the other hand, some of these same people will say that
>"Smalltalk was the first 'true' object-oriented programming language."
>However, this gives them only about 18 years of longevity, i.e., going
>from Smalltalk-72.]

This is a very strange remark.  It would be at least as convincing
to say that advocates of oop want to show it's something new, not
something that's been around for 24 years.  Why do you conclude
that that's what motivated people in these cases?

This is not to say that people such as you describe do not exist,
but bringing them up in this way just looks like a backhanded way
to discredit the idea that Simula was object oriented.

-- Jeff