r...@zedat.fu-berlin.de (Stefan Ram) writes: > Julieta Shem <js...@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. -- https://mail.python.org/mailman/listinfo/python-list