[Newbies] Re: Best way to implement two-dimensional array

Bert Freudenberg bert at freudenbergs.de
Tue Sep 4 22:38:57 UTC 2007

Also, you easily can inflate your image to ridiculous sizes with  
class variables accidentally holding onto huge structures.  
Maintaining an image requires a bit of discipline. It's an organic  
thing, which quite literally has been nurtured for 30 years now (with  
periods of hibernation of course).

- Bert -

On Sep 4, 2007, at 15:31 , John Almberg wrote:

> Yes, that's clear, and I do intend to initialize this big table  
> with code, mainly to make it easy for me to spot and fix typos.  
> However, it's still cool to gain a sense of the concreteness of  
> Smalltalk classes.
> And I find myself trying out code in a Workspace to see how things  
> work, before encoding it in a method. I suspect interactively  
> tweaking a class might help me figure things out before committing  
> it to an initialize method.
> -- John
> On Sep 4, 2007, at 5:29 PM, nicolas cellier wrote:
>> However, Classes and methods are Objects which have well defined  
>> tools to help them migrating from an image to another, even to  
>> another Smalltalk dialect. This ease code sharing.
>> This is less clear for arbitrary objects...
>> That's why I restrict myself to initialize these class vars in an  
>> initialize method in the class side, and loose some of the power  
>> of the image...
>> But there is a better reason:
>> if you construct your object with some snippets of code, say in an  
>> inspector or a debugger:
>> 	MyTable at: 1 put: 30 degreesToRadians cos * 4
>> Then your image will loose the history of construction.
>> All it retains is 3.464101615137755 which is somehow less expressive.
>> Nicolas
>> Bert Freudenberg a écrit :
>>> Seems you've made the first step to truly understanding Smalltalk :)
>>> Also you must realize that the browser is just a view into that  
>>> live system of objects we call classes and is simply modifying  
>>> those live objects. You could do that in an inspector as well,  
>>> but the class browser is more specialized so it is easier to use  
>>> for that purpose.
>>> Welcome to Real Objects.
>>> - Bert -
>>> On Sep 4, 2007, at 12:19 , John Almberg wrote:
>>>> Whoa... that worked, but the implications are a bit hard to  
>>>> digest...
>>>> So MyClass is an object in my Smalltalk image, and it can have  
>>>> variables that I can set interactively, and the values contained  
>>>> therein are now part of the class...
>>>> I keep reading that classes are objects, but this is the first  
>>>> time I've seen something that makes me realize that they are  
>>>> fundamentally different than objects in other languages. I guess  
>>>> because they are 'live', in some sense, in the Smalltalk  
>>>> environment. That is, not just source code, but an instantiated  
>>>> object.
>>>> Talk about paradigm whiplash... I'm going to have to think about  
>>>> this, a bit :-)
>>>> Thanks!
>>>> -- John
>>>>> Type "MyClass", select it, press Cmd-i (or Alt-i). You get an  
>>>>> inspector on a class - which of course is the instance of  
>>>>> another class, as everything is an object (and hence an  
>>>>> instance of a class) in Smalltalk. Anyway, you should see a  
>>>>> reference to the superclass, a dictionary of all the methods,  
>>>>> the list of instance variables and subclasses etc. Class  
>>>>> variables are simply held in a Dictionary in the "classPool"  
>>>>> instance variable of that class. So by inspecting that and  
>>>>> drilling down into your class var you can modify it.
>>>>> A simpler way to get at the contents of your class var is just  
>>>>> selecting its name in a browser showing any method of your  
>>>>> class, and press Cmd-i there. That works because in the  
>>>>> browser, code is evaluated in the context of the selected class.
>>>>> - Bert -

More information about the Beginners mailing list