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