Blocks (Re: Fear and loathing of the "perification" of Smalltalk)

Marcel Weiher marcel at metaobject.com
Sun Sep 16 09:52:49 UTC 2007


On Sep 14, 2007, at 3:51 PM, Alan Kay wrote:

> Re: unification of blocks and methods (procedures).
>
> I first saw this in EULER (Wirth and Weber ca 1966), but then saw an  
> earlier similar notion by Landin in ISWIM and its predessors. I used  
> the idea in my first OOP language (FLEX ca 1967-9), which also had  
> complete static nesting of scopes, etc.
>
> But later I decided I didn't like blocks as values because they are  
> super time bombs when passed around and completely violate  
> encapsulation. I really wanted external objects (not internal  
> blocks) to be passed around, and wanted a simpler way to think of  
> contexts internally. So we left them out of the first few  
> Smalltalks. (I still don't like them ...)

I am glad I am not completely alone in my dislike of, or shall we say:  
discomfort with blocks.

Of course, if you are going to have blocks, then unifying the two  
concepts is quite obviously a good thing (IMHO).  A block is just an  
unattached/anonymous method body and a method just a block with a name  
that's attached to a class.   However, with that unified view it  
becomes immediately obvious that there is something wrong with  
blocks.  After all, we don't directly call methods in other cases,  
that's early binding and a Bad Thing.  Instead we send messages to  
objects.  How does not naming the method body make this type of early  
binding and leaking implementation better?

On the other hand, having blocks is vastly superior to not having any  
useful higher order mechanism, and blocks are extremely powerful.   
Possibly too powerful, one of those "better old things" (lambda/ 
anonymous functions) that is so useful and powerful that it stops us  
looking for the actual "new" thing.

Marcel

p.s.:  your message about the Internet being an OO system didn't reach  
me, I only just saw it on the list archives.  I obviously(?) agree  
wholeheartedly, it is an OO system, but one that is quite different  
from Smalltalk.  And the way to make things gel is probably not to try  
to "extend the image" (distributed Smalltalk, NetMorphs [as cool as  
they are], CORBA, SOAP), but rather to bring "the net" into "the  
image" in a deep way.  Well, it probably wouldn't be an image as we  
think of it.




More information about the Squeak-dev mailing list