an oop question

Julieta Shem jshem at yaxenu.org
Wed Nov 2 20:25:30 EDT 2022


ram at zedat.fu-berlin.de (Stefan Ram) writes:

> Julieta Shem <jshem at yaxenu.org> writes:
>>Any book recomendations on getting this thing mathematics-clear?
>
>   OOP cannot be mathematics-clear because it is an /attempt/ to
>   abstract from several different programming languages.
>
>   When you ask Alan Kay (and I did!), the man who coined the term 
>   "object-oriented", he will tell you (in my words):
>   "Object-oriented programming is possible in Smalltalk only.".

That's very interesting.  Would you share the complete thread of e-mail?
I would love to read it word for word.

>   So, to get OOP crystal clear from the one who coined the
>   term, go ahead an learn Smalltalk!

After your message, I looked up

  THE EARLY HISTORY OF SMALLTALK
  https://dl.acm.org/doi/pdf/10.1145/234286.1057828

and gave it a read.  Very nice read.

>   But while Kay coined the term, many ideas of OOP are based
>   on Simula. So, you might think about learning Simula to get
>   the Dahl-flavor of OOP.
>
>   This is comp.lang.python. Here we do Python programming.

The impression I got from Smalltalk in the paper above was that Python
is so much based on it.

>   10 or 20 years ago there were still famous people, such as
>   Robert C. Martin, hanging around in "comp.object", and I would
>   have told you to go there, but today that newsgroup is deserted.

So sad.

>   Here's an excerpt from an older post by me, written in May this year:
>
>   In 2003, I became aware of the fact that Alan Kay, the man
>   who coined the term "object-oriented programming" in 1967
>   (or in the temporal proximity of this year), never has given
>   a definition for it. I asked him via e-mail, and he kindly
>   responded. In that e-mail he also wrote something to the effect
>   that for him only Smalltalk allows object-oriented programming.
>   (On another occasion, he also said, "I invented the term Object-
>   Oriented and I can tell you I did not have C++ in mind.".) So,
>   I think that this point of view by Alan Kay is similar to what
>   Liam wrote about Smalltalk!
>
>   So, what did Alan Kay write to me in 2003? Here's the crucial excerpt:
>
> |OOP to me means only messaging, local retention and protection and
> |hiding of state-process, and extreme late-binding of all things. It
> |can be done in Smalltalk and in LISP. There are possibly other
> |systems in which this is possible, but I'm not aware of them.
> Alan Kay, 2003

I'm wondering how Python fails to satisfy his definition.

>   . I should add that the deepest insight I gained into what is the
>   actual point of OOP (as I wrote in my previous post in this thread)
>   I got from the writings of Robert C. Martin who clarified that
>   OOP makes it easy to add new types but hard to add new operations,
>   while procedural programming makes it easy to add new operations,
>   but hard to add new types.
>
> |Procedural code (code using data structures) makes it easy to
> |add new functions without changing the existing data
> |structures. OO code, on the other hand, makes it easy to add
> |new classes without changing existing functions.
> Robert Cecil Martin
>
> |Procedural code makes it hard to add new data structures
> |because all the functions must change. OO code makes it hard
> |to add new functions because all the classes must change.
> Robert Cecil Martin
>
>   When one first reads this, it might not be obvious why this
>   is so spot on, but one can find this quotation in the book
>   "Clean Code" by Robert C. Martin and read more explanations
>   about it there.

Thank you for the reference.  His comments make sense to me, although
it's not crystal-clear.  I'll eventually read his book.

>   Objects with data abstraction can already be found in CLU by
>   Barbara Liskov. But this is not yet OOP. The crucial feature
>   OOP adds to this is polymorphism ("late binding").

That's helpful.  I saw Alan Kay talking about late binding in the paper
I mentioned above.  Thank you so much.


More information about the Python-list mailing list