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

Ramon Leon rleon at insario.com
Wed May 17 17:52:03 UTC 2006

> 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.  A program is a set of 
> classes.  The classes and methods are not just represented by 
> objects in Smalltalk, they *are* objects in Smalltalk.  The 
> browser is an editor of classes and methods.  Yes, we can 
> export classes and methods to text files, but the text files 
> are not the way Smalltalk programmers think about programs.  
> The browser is how we think about programs, and the browser 
> is an editor of objects that happen to be classes and 
> methods.  In Smalltalk, a program is not text.
> -Ralph Johnson

This for me, was the biggest adjustment to make when coming to
Smalltalk, as well as the most enlightening experience.  There are no
files, only objects.  People from the outside don't understand just how
deep objects go when we say Smalltalk is object oriented, the term
object oriented is so overloaded they don't expect much difference from
Java or C#.  People expect files, text files, compiling and starting a
program, stopping a program, saving and versioning their programs files.
When they don't find these things, their guard goes up, it's an alien
environment and suddenly everything feels wrong.

They don't understand the concept of only "runtime".  When they try
Squeak, they also never play with it long enough to discover its
subtleties, things like adding classes/methods by using an existing
class/method as a template, or just overwriting the existing
class/method and knowing that because the name is different it'll add a
new one.  When I first started Squeak, for the longest time, I couldn't
figure out how to add a class, it never occurred to me that the thing
below was a template meant to be edited, I was afraid to change it
because I thought I'd break something, I was looking for the "add class"
menu option somewhere.  Subtle things like using the mouse over a pane
to control the active pane and the other hand on the keys to navigate
the current pane.  I'm actually annoyed now when not in squeak and the
mouse doesn't activate the pane it's hovering over.  Things like how
much cool stuff is in the context menu, or shift + context menu.
Reclassifying a class or method, I was so in the text mindset, it never
occurred to me that you could just pick up a class/method and move it,
with drag and drop, I actually discovered that by accident.  

Time after time I've tripped over how dam smart the browser is when I
wasn't expecting it to be, and I love it.  The Squeak browser is so
deep, yet seemingly so simply looking, it's impossible not to overlook
how cool it is unless someone actually points it out to you or you have
an extremely open mind and enjoy being totally out of your element.
Trying Squeak, is really a bad way to "get it", watching a video of an
expert Squeaker is much more likely to get someone excited about it.

  -- Ramon Leon

More information about the Squeak-dev mailing list