4 ms·
Alan Kay’s immortal quote about OOP: > OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of
by bradrn 4y ago
Alan Kay’s immortal quote about OOP:
> 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.
[http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay...]
His reference to ‘LISP’ is, of course, referring to CLOS.
- ngcc_hk 4y agoAnd the message idea live on objective c and lisp, but not the other c++ system.
- signa11 4y agodon’t forget erlang !
- mikelevins 4y agoMaybe, though Alan Kay is certainly familiar with other object-oriented programming systems for Lisp that predate the design of CLOS.
- phtrivier 4y agoI bet Erlang/OTP also fits (which the added niceties of potentially distributing the object graph.)
- deckard1 4y ago> His reference to ‘LISP’ is, of course, referring to CLOS. Definitely not. The all-caps "LISP" should be the strongest hint, but he name drops McCarthy and Carl Hewitt. McCarthy's LISP didn't have closures, so I'm thinking Alan is referring to something closer to Scheme. Which might make sense as Scheme is based on ideas from Hewitt (actors, message passing, etc.). But Alan isn't being terribly specific. You have to understand there are thousands of different "LISP" systems in the world. Many of which are just in some thesis or white paper.
- bradrn 4y agoHmm, this is interesting. Rereading that post, it looks to me like McCarthy and Hewitt are mentioned as influences rather than a manifestation of ‘OOP’ as such, and I can’t quite think of any OOP system in Lisp he could be referring to other than CLOS, but then again I don’t know sufficiently much about this area to be sure either way.
- arunix 4y agoThat reminded me of Peter Norvig's comment: > Depending on your definition, CLOS is or is not object-oriented. It doesn't support encapsulation. Lack of encapsulation would preclude the protection and hiding of state-process.
- dreamcompiler 4y agoIt depends on what you mean by encapsulation. CLOS classes don't own their methods, which makes CLOS much more flexible than other OOP systems. But it also means there are no "private" methods, or slots for that matter. One way to "privatize" slots or methods is to put them in a special package, which serves as a private namespace. This doesn't prevent programmers from seeing them but it can flag any use of them as "odd" style in the source code.
- deterministic 4y agoErlang is AFAIK the only production programming language that is OO by this definition.