How does a newbie get past the feeling thay he is trying to understand an elephant whilst looking through a keyhole?

Dan Shafer dan at
Wed May 10 21:57:05 UTC 2006


Thanks for the great feedback. Glad you found the post interesting.

I did in fact overcome all of this. I am re-emerging into the world  
of Squeak/Smalltalk with tentative steps these days as I evaluate it  
vs. PythonCard as my next development tool of choice. You can follow  
my thinking and my progress in bits and pieces on my blog if you're  
so inclined ( I was recording here  
my very early experiences and fears; they are long since dismissed  
and I find that I now have a proliferation of images containing all  
sorts of stuff and experiments. Playing God in the Image is certainly  
fun. (An aside: I'm a spiritual teacher and writer by profession, so  
I couldn't help but turn your note into a little saying. "The Bible  
tells us we are made in the image and likeness of God. In Smalltalk,  
your image is created by a likeness of God." FWIW.)

On May 8, 2006, at 2:30 PM, Chris Muller wrote:

> Nice post Dan,

> <snip>
> Well, I think "familiar" is the key word here, because this is  
> indeed a
> cakewalk in Smalltalk too:
>   "print it"
>   String streamContents:
> 	[ : stream |
> 	(1 to: 10) collect:
> 		[ : n |
> 		stream cr.
> 		1 to: 3 do:
> 			[ : exp |
> 			stream
> 				tab;
> 				print: (n raisedTo: exp) ] ] ]
> Coding time:  2 minutes.  I doubt I could do it in Pascal in < 10
> minutes though.  It's just familiarity, thats all.
>> Five
>> minutes after I opened and installed Basic, I had it working. Pascal
>> took longer but that was because the install took longer and I had to
>> learn about compilation. I could not get it to run in Smalltalk/V to
>> save my gluteus maximus. I can't now remember all the gyrations I
>> went through before I finally threw up my hands and asked for help.
> When looking at the simple code above, what do you think is the reason
> it eluded you so?
Well, your result is nothing like I ended up with; you found a much  
more elegant solution (iterating over the exp for example). But note  
that to create that code I'd have to know about the class String,  
streams, collect: (a powerful but really new concept) and the  
raisedTo: method. Not hard stuff, of course, but, as you properly  
say, it's a question of familiarity and only that.

In Basic, it's something like:

repeat with i = 1 to 10
   print i; i*i, i*i*i
end repeat

Essentially the same in Pascal. But note that the "print" statement  
just prints stuff in a predictable place. When I solved the problem  
in Smalltalk, I ended up believing that I needed to use the  
Transcript for output, which involved figuring out how to get one to  
open and print stuff.

Also, I should note that this was my first attempted program out of  
the box without reading any docs. That's how I'd done it in Basic and  
Pascal, so I expected a similar result form Smalltalk. It was my  
familiarity with other environments and my inaccurate expectation at  
work. But I suspect a LOT of folks who encounter Smalltalk do so with  
a similar mind set and walk away bewildered.


More information about the Squeak-dev mailing list