Hey, I wrote it, you make the workspace, deal? ;)

Happy New Year, btw.

- Bert -

On 31.12.2013, at 12:37, karl ramberg <karlramb...@gmail.com> wrote:

> Make a Welcome Workspace with this info :-)
> 
> Cheers,
> Karl
> 
> 
> On Tue, Dec 31, 2013 at 11:27 AM, Bert Freudenberg <b...@freudenbergs.de> 
> wrote:
> On 31.12.2013, at 08:53, David Holiday <neubu...@rohan.sdsu.edu> wrote:
> 
> > Is there a way to browse the ecosystem of objects in a Smalltalk image?
> 
> Yes, multiple ones in fact. This is a major reason working in Smalltalk feels 
> more immediate than in other environments.
> 
> > I'm not talking about the class browser, what I'm looking for is a way to 
> > see what objects have actually been instantiated and what their state is.
> 
> The basic tool for this is called an Inspector. Whenever you have an 
> expression, like "3 + 4", you press cmd-i to "inspect it", which opens an 
> inspector on the result. This works in any text area. Try for example 
> inspecting "self" in a class browser, and you will inspect the underlying 
> class object (which the browser shows a high-level view of).
> 
> In the Inspector you see the objects referenced by this object (via instance 
> variables or indexed fields) in the left panel. Select any of them and choose 
> "inspect" from the context menu (or press cmd-i again). This way you can 
> inspect all the objects in the system.
> 
> A more modern tool than the Inspector (which was around 40 years ago already) 
> is the Object Explorer. It presents you a tree view of an object and its 
> "children", which again are the instance variables and indexed fields of the 
> object. Open it with cmd-shift-i (or "explore" in the context menu).
> 
> You can also do the reverse. If you choose "objects pointing to this value" 
> you get an inspector showing all the objects that directly point to this 
> object. Similarly there is a "reverse explorer", which you can open by 
> selecting "explore pointers".
> 
> There are two roots to all the objects in the system:
> 
>         Smalltalk specialObjectsArray
> 
> which basically holds everything the Virtual Machine needs to know about, and 
> in turn almost every object in the whole image, and
> 
>         thisContext
> 
> which is the current execution context, holding onto temporary objects. When 
> a garbage collection is performed, any object not reachable form either of 
> these two roots is removed from memory.
> 
> An "interesting" global object to explore is
> 
>         Project current
> 
> which holds your current workspace, in particular
> 
>         Project current world
> 
> , the root of all morphs in the world. And of course
> 
>         Smalltalk
> 
> itself is the dictionary that holds all global objects, including all classes 
> (unless they are defined in a non-global environment).
> 
> There is also a low-level way to enumerate all objects in memory. "self 
> someObject" will return the very first object in memory (which happens to be 
> the nil object), and "anObject nextObject" will return the next one:
> 
>         | object count |
>         count := 0.
>         object := self someObject.
>         [0 == object]
>                 whileFalse: [count := count + 1.
>                         object := object nextObject].
>         count
> 
> Interestingly, this also finds objects that are due to be garbage-collected. 
> For example, if you accidentally closed a text window, there is a good chance 
> its contents will still be in memory, and can be retrieved using an 
> expression like
> 
>         ByteString allInstances last: 10
> 
> This makes use of the someInstance/nextInstance methods, which are similar to 
> someObject/nextObject, but restricted to instances of one class only.
> 
> Hope you have fun poking around in the world of objects :)
> 
> - Bert -
> 
> 
> _______________________________________________
> Beginners mailing list
> Beginners@lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
> 
> _______________________________________________
> Beginners mailing list
> Beginners@lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners



_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to