--- On Mon, 6/29/09, K. K. Subramaniam subbukk@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 revelation.
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 portion:
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 portion,
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 http://www.nabble.com/Re%3A-Dynabook-hw-cost-p10856407.html
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
References
[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. http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-5.html
[2] Lex Spoon-3. "Re: Dynabook hw cost." Nabble(TM). 29 May 2007. 29 June 2009. http://www.nabble.com/Re%3A-Dynabook-hw-cost-p10849141.html
[3] Spivey, J. M. _An Introduction to Logic Programming through Prolog._ Oxford: Michael Spivey, 2002. http://spivey.oriel.ox.ac.uk/mike/logic/
[4] Kay, Alan. "Re: Dynabook hw cost." Nabble(TM). 30 May 2007. 29 June 2009. http://www.nabble.com/Re%3A-Dynabook-hw-cost-p10856407.html