A Lisper asks, "Am I supposed to like Smalltalk?"

Alejandro F. Reimondo aleReimondo at smalltalking.net
Thu May 18 13:34:49 UTC 2006

There is no "program" in Smalltalk.

If we want to create(instantiate) aProgram in Smalltalk...
 we must create the class Program and then instantiate it.

IMHO, it is not correct to use the word "program" in smalltalk,
 if we want to talk about an abstract specification that
 instantiates aMachine, we must use "framework".

The use of the word "program" is valid
 in first stages in Smalltalk introductions
 and tutorials.


----- Original Message ----- 
From: "Nevin Pratt" <nevin at bountifulbaby.com>
To: "The general-purpose Squeak developers list"
<squeak-dev at lists.squeakfoundation.org>
Sent: Wednesday, May 17, 2006 10:15 PM
Subject: Re: A Lisper asks, "Am I supposed to like Smalltalk?"

> >
> > For example, one of the people who responded to the blog message said
> > "A program is text".  But in Smalltalk, a program is not text, it is
> > objects.  ....Smalltalk is objects all
> > the way down.....We live in an
> > "image", which is an executing program.  We modify our applications in
> > the middle of their execution.  There is no "main".  When we write a
> > program, we are not just reusing some code that is thirty years old,
> > we are making it by modifying a program that started executing thrity
> > years ago and that has been changed by thousands of people ever since.
> >
> And, the act of modifying the executing program is done by nothing more
> than sending messages to the executing objects in this same program that
> started executing thirty years ago.
> Which I would argue makes even the concept of "source code" an ambiguous
> concept in Smalltalk.
> What is Smalltalk source code?
> An argument could be made for defining Smalltalk "source code" as a
> transcript of the messages sent by the programmer (i.e., the contents of
> the changes file).  This wouldn't be a widely accepted definition, but
> never-the-less, I believe a good argument could be made for defining it
> this way.
> Another argument could be made for defining Smalltalk "source code" as
> the string (text) result of asking each of the contents of the method
> dictionaries of the classes to print themselves.  This would be a more
> popularly accepted definition, but why?  Why would this definition be
> any more correct than the previous one?
> I would argue that there really is no "source code".  At best, you can
> ask the system to recreate a sequence of message sends that you hope,
> when replayed, with transform the internal state of the executing
> program from one known state into another known state that you need and
> want.  That's what a file-out is.  It is a synthesized sequence of
> message sends, synthesized by the executing Smalltalk system, in a hope
> that it can be replayed by yet another Smalltalk system to transform it
> into what you want.
> Thus, I would argue that Smalltalk really doesn't have source code.  It
> has message sends, sent to live objects.  And I like it just fine that
> way, thank you.
> If you choose to define "source code" as a printed sequential list of
> some known subset of message sends that can later be replayed, then you
> can argue that Smalltalk has source code.
> Nevin

More information about the Squeak-dev mailing list