Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

I think I finally get why Harper called

Name: Anonymous 2014-11-22 6:58

OOP "inherently anti-modular".

You see, in object-oriented programming (as opposed to class-oriented programming like C#) objects' structure is mutable. You can add, remove and modify slots and methods any time you want. But what happens if one imports an object from another module and expects that object to have a method hax of the type Anus -> HaxedAnus? That's right, that method could disappear at any time, or it could change to an int -> () at any time (e.g. as a result of sending other messages from that module), and everything breaks down. So in OOP, a module can't really export a reliable abstract specification of itself. The only thing you know about another module without seeing the implementation it encapsulates is... nothing! That's why OOP is indeed inherently and by design anti-modular.

Name: Anonymous 2014-11-23 6:02

>>14
You could, and you would be arguing that that degree of encapsulation and reflection are mutually exclusive (unstoppable force vs. immovable object.) I don't have a problem with that. I don't think Kay would mind either.

http://c2.com/cgi/wiki?AlanKayOnObjects
Smalltalk is not only NOT its syntax or the class library, it is not even about classes. I'm sorry that I long ago coined the term "objects" for this topic because it gets many people to focus on the lesser idea.

The big idea is "messaging" -- that is what the kernal of Smalltalk/Squeak is all about (and it's something that was never quite completed in our Xerox PARC phase). The Japanese have a small word -- ma -- for "that which is in between" -- perhaps the nearest English equivalent is "interstitial".

The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be. Think of the internet -- to live, it (a) has to allow many different kinds of ideas and realizations that are beyond any single standard and (b) to allow varying degrees of safe interoperability between these ideas.

Even his early definition viz Smalltalk doesn't mention reflection, but does talk about encapsulation. At the end of the page there is another reference to his clarification.

http://c2.com/cgi/wiki?AlanKaysDefinitionOfObjectOriented
I have asked Alan Kay about his definition of "object oriented" and he told me in 2003:

OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme LateBinding of all things.

See http://www.purl.org/stefan_ram/pub/doc_kay_oop_en

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List