Are there any books that cover this area for Smalltalk?
Frank wrote:
Are there any books that cover this area for Smalltalk?
I have looked down this avenue...
The Design Patterns Smalltalk Companion (Software Patterns Series) by Sherman Alpert, Kyle Brown, and Bobby Woolf http://www.amazon.com/Design-Patterns-Smalltalk-Companion-Software/dp/020118... Smalltalk Best Practice Patterns by Kent Beck http://www.amazon.com/Smalltalk-Best-Practice-Patterns-Kent/dp/013476904X/re...
The latter is more expensive but neither are pricey and there are secondhand ones on Amazon.
Dave
On Fri, Jun 26, 2009 at 7:29 AM, Frank Church vfclists@googlemail.comwrote:
Are there any books that cover this area for Smalltalk?
-- Frank Church _______________________________________________ Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners
On Friday 26 Jun 2009 2:59:13 am Frank Church wrote:
Are there any books that cover this area for Smalltalk
Yes. See http://stephane.ducasse.free.fr/FreeBooks.html for an annotated list.
BTW, Smalltalk is a object-based system. An object combines the role of data and algorithm into one unit. The computational model is different from that of procedural programming. Are you looking for anything specific?
Subbu
I'd suggest reading "The Design Patterns Smalltalk Companion" Alpert et al.
http://www.amazon.com/Design-Patterns-Smalltalk-Companion-Software/dp/020118...
drafts: http://stephane.ducasse.free.fr/FreeBooks/SmalltalkDesignPatternCompanion/
hth,
2009/6/26 K. K. Subramaniam subbukk@gmail.com:
On Friday 26 Jun 2009 2:59:13 am Frank Church wrote:
Are there any books that cover this area for Smalltalk
Yes. See http://stephane.ducasse.free.fr/FreeBooks.html for an annotated list.
BTW, Smalltalk is a object-based system. An object combines the role of data and algorithm into one unit. The computational model is different from that of procedural programming. Are you looking for anything specific?
Subbu
Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners
On Fri, 26 Jun 2009 07:57:49 +0530, "K. K. Subramaniam" subbukk@gmail.com wrote:
On Friday 26 Jun 2009 2:59:13 am Frank Church wrote:
Are there any books that cover this area for Smalltalk
Yes. See http://stephane.ducasse.free.fr/FreeBooks.html for an annotated list.
BTW, Smalltalk is a object-based system. An object combines the role of data and algorithm into one unit. The computational model is different from that of procedural programming. Are you looking for anything specific?
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?
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.
-- Benjamin L. Russell
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.
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
Also see the (somewhat long) discussion thread http://www.nabble.com/Dynabook-hw-cost-td10732041i20.html
Subbu
On Thu, Jun 25, 2009 at 2:29 PM, Frank Church vfclists@googlemail.comwrote:
Are there any books that cover this area for Smalltalk?
-- Frank Church
Frank, if you're interested in data structures in algorithms, I would highly recommend "Introduction to Algorithms 3rd edition" by Thomas H. Cormen et al. All the algorithms are presented in a language agnostic manner using psuedo-code. Also, I am in agreement with the other responders to your post about getting yourself copies of "Design Patterns Smalltalk Companion" and "Smalltalk Best Practice Patterns".
Good luck,
-Conrad
Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners
--- 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
On Monday 29 Jun 2009 3:27:30 pm Benjamin L. Russell wrote:
Fascinating. So an object is an abstract representation of a gene, rather than a blueprint for a computational process.... This is a revelation.
"In computer terms, Smalltalk is a recursion on the notion of computer itself. Instead of dividing "computer stuff" into things each less strong than the whole--like data structures, procedures, and functions which are the usual paraphernalia of programming languages--each Smalltalk object is a recursion on the entire possibilities of the computer. " Alan Kay http://www.smalltalk.org/smalltalk/TheEarlyHistoryOfSmalltalk_Introduction.h...
An image is a like an Internet in a single bag of bits. You have all these tiny 'computers' exchanging messages with each other all the time to get 'work done'. Once Alan expressed regret for introducing the term 'object-oriented programming' because it downplayed the role of messages. Oops :-)!
Subbu
On Mon, 29 Jun 2009 11:25:34 +0530, "K. K. Subramaniam" subbukk@gmail.com wrote:
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.
Richard O'Keefe refutes this claim in his post [1] "Re: Re: [Haskell] Re: 20 years ago," dated "2009-07-16 01:38:14 GMT," on the Haskell-Cafe mailing list (see http://permalink.gmane.org/gmane.comp.lang.haskell.cafe/61329); _viz._:
Concepts in Squeak [a dialect and implementation of Smalltalk] have
their origins
in biology rather than in computational math....
That posting is wrong.
Smalltalk's roots are very firmly planted in Lisp, with perhaps a touch of Logo (which also had its roots in Lisp). The classic Smalltalk-76 paper even contains a meta-circular interpreter, which I found reminiscent of the old Lisp one. The "biological" metaphor in Smalltalk is actually a SOCIAL metaphor: sending and receiving messages, and a "social" model of agents with memory exchanging messages naturally leads to anthropomorphisms.
The other classic OO language, which inspired C++, which inspired Java, which inspired C#, is Simula 67, which has its roots in Algol 60. While Simula 67 was sometimes used for simulating biological processes, the main background was discrete event systems like factories and shops; there are no biological metaphors in Simula.
-- Benjamin L. Russell
[1] O'Keefe, Richard. "Re: Re: [Haskell] Re: 20 years ago." gmane.comp.lang.haskell.cafe. Gmane. 16 July 2009. 24 July 2009. http://permalink.gmane.org/gmane.comp.lang.haskell.cafe/61329.
I think K.K. is referring to the writings of Alan Kay, who is pretty authoritative when it comes to Smalltalk. In his paper, The Early History of Smalltalk, published by the ACM in History of Programming Languages II (1993).
"My biology minor had focused on both cell metabolism and larger scale morphogenesis with its notions of simple mechanisms controlling complex processes and one kind of building block able to differentiate into all needed building blocks. The 220 file system, the B5000, Sketchpad, and finally Simula, all used the same idea for different purposes. Bob Barton, the main designer of the B5000 and a professor at Utah had said in one of his talks a few days earlier: "The basic principal of recursive design is to make the parts have the same power as the whole." For the first time I thought of the whole as the entire computer and wondered why anyone would want to divide it up into weaker things called data structures and procedures. Why not divide it up into little computers, as time sharing was starting to? But not in dozens. Why not thousands of them, each simulating a useful structure? "
Online here: http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html
On Fri, Jul 24, 2009 at 1:37 AM, Benjamin L. RussellDekuDekuplex@yahoo.com wrote:
On Mon, 29 Jun 2009 11:25:34 +0530, "K. K. Subramaniam" subbukk@gmail.com wrote:
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.
Richard O'Keefe refutes this claim in his post [1] "Re: Re: [Haskell] Re: 20 years ago," dated "2009-07-16 01:38:14 GMT," on the Haskell-Cafe mailing list (see http://permalink.gmane.org/gmane.comp.lang.haskell.cafe/61329); _viz._:
Concepts in Squeak [a dialect and implementation of Smalltalk] have
their origins
in biology rather than in computational math....
That posting is wrong.
Smalltalk's roots are very firmly planted in Lisp, with perhaps a touch of Logo (which also had its roots in Lisp). The classic Smalltalk-76 paper even contains a meta-circular interpreter, which I found reminiscent of the old Lisp one. The "biological" metaphor in Smalltalk is actually a SOCIAL metaphor: sending and receiving messages, and a "social" model of agents with memory exchanging messages naturally leads to anthropomorphisms.
The other classic OO language, which inspired C++, which inspired Java, which inspired C#, is Simula 67, which has its roots in Algol 60. While Simula 67 was sometimes used for simulating biological processes, the main background was discrete event systems like factories and shops; there are no biological metaphors in Simula.
-- Benjamin L. Russell
[1] O'Keefe, Richard. "Re: Re: [Haskell] Re: 20 years ago." gmane.comp.lang.haskell.cafe. Gmane. 16 July 2009. 24 July 2009.
http://permalink.gmane.org/gmane.comp.lang.haskell.cafe/61329.
Benjamin L. Russell / DekuDekuplex at Yahoo dot com http://dekudekuplex.wordpress.com/ Translator/Interpreter / Mobile: +011 81 80-3603-6725 "Furuike ya, kawazu tobikomu mizu no oto." -- Matsuo Basho^
Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners
On Friday 24 Jul 2009 6:48:30 pm David Mitchell wrote:
I think K.K. is referring to the writings of Alan Kay, who is pretty authoritative when it comes to Smalltalk. In his paper, The Early History of Smalltalk, published by the ACM in History of Programming Languages II (1993).
Thanks, David. Yes, that is the reference. In the 60s, there were many ideas floating around for an electronic computer that would 'augment human intellect'. Alan's idea was quite radical for its time. The dominant idea was that of Von Neumann. Tansel had a nice article written in his Squeak e-zines.
Subbu
beginners@lists.squeakfoundation.org