Hi guys,

I think such discussions should be done in pharo-users. These discussions will 
be very interesting to follow by users/beginners.

Pharo-dev is more about contributions/discussions aboit core development of 
Pharo.
Thank you

Envoyé de mon iPhone

> Le 4 oct. 2016 à 05:00, Ben Coman <[email protected]> a écrit :
> 
>> On Tue, Oct 4, 2016 at 9:37 AM, CodeDmitry <[email protected]> wrote:
>> Oh! I see where I got confused now!
>> 
>> "static" variables in Pharo outlive their Playground call!
> 
> More than that. They outlive closing the image. The paradigm*** shift
> you need to make is that while the lifetime of "static" variables of a
> C/C++ program ends when program execution ends, and even though you
> stop and start execution of the VM, the execution of the "Image"
> *never* ends, it is only suspended.
> 
> Try this experiment...
> 
> In the System Browser...
>  Morph subclass: #MyMorph
>    instanceVariableNames: ''
>    classVariableNames: ''
>    package: 'AnExperiment'
> 
>  MyMorph>>step
>    self right > Display width ifTrue: [  self left: 0 ].
>    self left: self left + 10.
> 
>  MyMorph>>stepTime
>    ^100
> 
> In Playground...
>  (m := MyMorph new) openInWorld.
>  "After it has been running a while, Save & Quit the image**, then
> restart it. Notice the movement of the morph continues from where it
> left off."
>  m delete. "...sometime later"
> 
> **Even copy the image and changes to another machine they start it up there.
> 
> *** and perhaps you might notice a change in your perception of "what
> is possible" from exposure in your course to the "dead" language of
> Smalltalk.  And further,  consider MyMorph is part of a control system
> for a nuclear power plant or financial trading system operating 365x24
> and you want to change MyMorph from moving right to moving left.
> Consider how you would do that in C++ without stopping the system for
> even a second, compared to doing that in Pharo.  Now Pharo may not be
> production ready (i.e. $$$) to run a nuclear power plant, but the
> concept of making such "live" changes to compiled code is now a
> concept you can carry forward to other disciplines.
> 
> cheers -ben
> 
>> 
>> If I call
>> 
>> Greeter greet.
>> Greeter greeting: 'Hi!'.
>> Greeter greet.
>> 
>> Even if greet sets greeting to an initial value if it is nil, it will
>> forever then stay 'Hi!' until I change it or reset it.
>> 
>> So it is not unreasonable to get a response 'Hi! Hi!' in the playground even
>> though 'Hi!' only gets set after greet is called, since the global state
>> outlives the Transcript!
> 

Reply via email to