[Newbies] Re: Smalltalk Data Structures and Algorithms

Benjamin L. Russell dekudekuplex at yahoo.com
Mon Jun 29 10:00:18 UTC 2009

--- On Mon, 6/29/09, K. K. Subramaniam <subbukk at gmail.com> wrote:

> On Monday 29 Jun 2009 10:07:30 am
> Benjamin L. Russell wrote:
> > Is there a counterpart to SICP (_Structure and
> Interpretation of
> > Computer Programs_; see http://mitpress.mit.edu/sicp/) focusing on
> > roughly the same topics from a purely object-oriented
> standpoint, but
> > using Smalltalk, in particular Squeak, as a means
> rather than as an
> > end?
> There is no single book to my knowledge. Concepts in Squeak
> have their origins 
> in biology rather than in computational math. The boundary
> between 'hardware' 
> and 'software' is blurry. See the reading list at
>    http://www.squeakland.org/resources/books/readingList.jsp
> particularly "The Selfish Gene" by Richard Dawkins.

Fascinating.  So an object is an abstract representation of a gene,
rather than a blueprint for a computational process....  This is a

> > One aspect that I really miss in Squeak is more focus
> on theory.  It
> > would be nice if somebody presented a proof of
> correctness of a purely
> > object-oriented algorithm that was
> implementation-independent.
> Squeak is conceived to work more like an organism than a
> mechanism so concepts 
> like proof of correctness does not translate easily into
> such an environment. 
> PoC applies to computations small enough to be
> 'intellectually manageable' 
> while Squeak tackles the big picture as a continously
> evolving gestalt of 
> objects and interactions. The closest document that
> captures the essence of 
> Squeak is the NSF Proposal at
>    http://www.vpri.org/pdf/rn2006002_nsfprop.pdf

Yes, that paper is indeed interesting: in particular, the following

>In Biology [Bio], one of our favorite sources of fruitful analogies, 
>the scaling of entities is not smooth but jumps from rather small 
>carbon based molecules to much larger entire cells that can play 
>many kinds of roles derived from very similar architectures.
>Looking ahead to even more interesting possible analogies with 
>Biology are the recent advances in understanding
>developmental processes of multicelled animals....
>These large plateaus for stable structures suggest we take a 
>similar and somewhat “theatrical view” of a system in which every 
>entity at every level is portrayed by an intelligent actor wearing 
>appropriate costumes and simply playing a role. Here we are “not 
>multiplying entities unnecessarily”, but are putting the burden on a 
>single kind of object (and we hope that it can be explained simply 
>enough to make the larger system much easier to understand than 
>if it had been built from many thousands of seemingly different entities....)

The above section on the analogy with biology (notice the two
references to "cells") contrasts rather sharply with the following
view taken in [1] (see the "Forward," by Alan J. Perlis, at
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-5.html) (notice
the reference to "mechanisms"):

>Our traffic with the subject matter of this book involves us with three 
>foci of phenomena: the human mind, collections of computer 
>programs, and the computer. Every computer program is a model, 
>hatched in the mind, of a real or mental process. These processes, 
>arising from human experience and thought, are huge in number, 
>intricate in detail, and at any time only partially understood. They are 
>modeled to our permanent satisfaction rarely by our computer programs.
>Thus even though our programs are carefully handcrafted discrete 
>collections of symbols, mosaics of interlocking functions, they continually 
>evolve: we change them as our perception of the model deepens, 
>enlarges, generalizes until the model ultimately attains a metastable 
>place within still another model with which we struggle. The source of 
>the exhilaration associated with computer programming is the continual 
>unfolding within the mind and on the computer of mechanisms 
>expressed as programs and the explosion of perception they generate. 
>If art interprets our dreams, the computer executes them in the guise 
>of programs!

Cells versus mechanisms:  This seems to be one essence of the purely
object-oriented vs. Lisp-style methodologies.  So in order to
appreciate Smalltalk (and more generally, purely object-oriented
programming), it seems that one must learn to think of computation in
terms of cells, rather than mechanisms.  Or perhaps even more
generally, one must learn to abandon thinking in terms of computation
entirely, and instead think in terms of selfish genes, a la Dawkins.

> Also see the (somewhat long) discussion thread
>    http://www.nabble.com/Dynabook-hw-cost-td10732041i20.html

The following portion by "Lex Spoon-3" (see
http://www.nabble.com/Re%3A-Dynabook-hw-cost-p10849141.html) in the
above-mentioned thread in [2] seems particularly relevant:

>It would be really neat to have a subset of Squeak that was designed
>to be amenable to proof, and then to teach one of the existing proof
>systems about this subset.  If you include blocks, but reject
>inheritance, then you could come up with something close to the
>lambda-calculus-like languages that the existing proof tools are so
>good at.  You would not like programming this way, compared to using
>full Squeak, but for core things like Semaphore and SharedQueue it
>would seem useful. 

Yes, for theoretical purposes, a minimal subset of Squeak designed to
be amenable to proof would indeed be useful.  This would be similar to
picoProlog (see _An Introduction to Logic Programming through Prolog_
([3]), a textbook by Michael Spivey that uses such a dialect) or, in
some ways, to Haskell 98 or R5RS (or more accurately R4RS) Scheme.
What would be nice about such a dialect is that it would facilitate
education and research on purely object-oriented principles,
independent of the implementation.  Focus on this area seems to be
somewhat lacking in most Smalltalk discussion circles, if I understand
the situation, compared to in corresponding, say, functional or logic
programming circles.

Incidentally, would you happen to know what happened to the
"preposterous proposal" mentioned by Alan Kay in the following

>See what you think of the "preposterous proposal" (as one reviewer termed it).

in the following message in your above-described thread in [4]?

>Re: Dynabook hw cost

Also, would you happen to know of any Squeak-related (or
Smalltalk-related) discussion circles focusing on the kind of
discussion in this thread; specifically, on the evolution and
conceptual basis of Smalltalk?

-- Benjamin L. Russell


[1] Abelson, Harold and Sussman, Gerald Jay with Sussman, Julie.
_Structure and Interpretation of Computer Programs, Second Edition._
Cambridge, MA: The MIT Press and New York: McGraw-Hill, 1996.

[2] Lex Spoon-3. "Re: Dynabook hw cost." Nabble(TM). 29 May 2007. 29
June 2009.

[3] Spivey, J. M. _An Introduction to Logic Programming through
Prolog._ Oxford: Michael Spivey, 2002.

[4] Kay, Alan. "Re: Dynabook hw cost." Nabble(TM). 30 May 2007. 29
June 2009.
Benjamin L. Russell  /   DekuDekuplex at Yahoo dot com
Translator/Interpreter / Mobile:  +011 81 80-3603-6725
"Furuike ya, kawazu tobikomu mizu no oto." 
-- Matsuo Basho^ 

More information about the Beginners mailing list