home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.misc      General topics about computers not cover      21,759 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 20,773 of 21,759   
   Salvador Mirzo to All   
   Alan Kay on OOP   
   27 Feb 25 09:32:32   
   
   From: smirzo@example.com   
      
   If I recall correctly, the notion of OOP by Alan Kay was discussed not   
   long ago in comp.lang.python.  Stefan Ram shared an amazing e-mail reply   
   given to him by Alan Kay himself.  The e-mail was very enlightening, but   
   I've spent quite some time on the last paragraph, which I'm still far   
   from understanding.   
      
   --8<-------------------------------------------------------->8---   
   Date: Wed, 23 Jul 2003 09:33:31 -0800   
   To: Stefan Ram [removed for privacy]   
   From: Alan Kay [removed for privacy]   
   Subject: Re: Clarification of "object-oriented"   
   [some header lines removed for privacy]   
   Content-Type: text/plain; charset="us-ascii" ; format="flowed"   
   Content-Length: 4965   
      
   [...]   
      
   >     What does "object-oriented [programming]" mean to you?   
   >     (No tutorial-like introduction is needed, just a short   
   >     explanation [like "programming with inheritance,   
   >     polymorphism and encapsulation"] in terms of other concepts   
   >     for a reader familiar with them, if possible. Also, it is   
   >     not neccessary to explain "object", because I already have   
   >     sources with your explanation of "object" from   
   >     "Early History of Smalltalk".)   
      
   (I'm not against types, but I don't know of any type systems that   
   aren't a complete pain, so I still like dynamic typing.)   
      
   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.   
      
   Cheers,   
      
   Alan   
   --8<-------------------------------------------------------->8---   
      
   I've read the Early History of Smalltalk, by the way.  I think I   
   understand what he means by ``messaging'', ``local retention and   
   protection'' and ``hiding of state-process''.  My knowledge reaches its   
   limits a bit in ``extreme late-binding of all things'' and I get   
   certainly puzzled in ``it can be done in Smalltalk and in LISP'' given   
   that he is ``not aware of [others]''.   
      
   I think he mentions late-binding because I suppose that is required for   
   OOP in static languages like C++, say.  But I would like to get a clear   
   undertanding of what is early and late binding, so I probably should   
   look at a text book with examples---homework for me to and I would be   
   grateful if anyone wants to be my adviser here and point out a specific   
   book or example.   
      
   Now, to address my main puzzle.  The email is from 2003.  Alan Kay was   
   certainly aware of Python, Java and so on.  Why would his notion of OOP   
   be impossible in Python or Java?   
      
   My attempt at answering such question is this: Python, for example,   
   doesn't enforce the hiding of state-process because there's no true   
   private members in objects---on purpose.  Is that a reason why Python   
   fails to satisfy Alan Kay's OOP?  So, his notion is that an object   
   should really be completely opaque---the only way *possible* to interact   
   with it would be to send it a message and possibly expect a returning   
   message.   
      
   In some lecture Alan Kay has given (to a class in a university in the   
   US, whose name I can't remember), I remember he mentioned the Internet   
   being a true OO system.  That reinforced my idea above: a computer   
   system cannot, for example, share state with one another in a direct way   
   if their means of communication is a protocol such as IP.   
      
   But I'm still puzzled.  Although I'm sure LISP can do anything any other   
   language ever could, it is also a language so hackable that any of its   
   rules can also be violated by a LISP programmer, unless perhaps if we   
   think of the programmer as the user of a certain interface whose   
   implementation he cannot touch.   
      
   Anyway, my objective here is to understand and be able to write examples   
   in languages such as Common Lisp and Python to illustrate what he means   
   by OOP.  Thanks for any contribution anyone can offer here.  Thanks!   
      
   --- SoupGate-DOS v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca