[squeak-dev] Evolution from the primordial stew (was: The Trunk: System-dtl.609.mcz)

Frank Shearar frank.shearar at gmail.com
Sat Oct 26 08:33:02 UTC 2013


On 26 October 2013 04:10, David T. Lewis <lewis at mail.msen.com> wrote:
> On Fri, Oct 25, 2013 at 10:58:49PM +0000, commits at source.squeak.org wrote:
>>
>> Item was changed:
>>   Object subclass: #DeepCopier
>>       instanceVariableNames: 'references uniClasses newUniClasses'
>> +     classVariableNames: ''
>> -     classVariableNames: 'NextVariableCheckTime'
>>       poolDictionaries: ''
>>       category: 'System-Object Storage'!
>
> One thing that I find rather appealing about Squeak is that its stew of
> living objects contains things that have existed since before my time.
> Even if the so-called "code" changes, the objects still can survive.
>
> Every once in a while this turns out to have some practical benefit. For
> example, the class DeepCopier had a class variable that kept track of some
> sort of time stamp (in the form of NextVariableCheckTime seconds). Some
> time in an earlier millenium, a primeval user of the class had set this
> variable, then wandered off into a tar pit. We do not really know who that
> may have been, but the original object (class DeepCopier) has survived in
> the image, and the last updated value of its NextVariableCheckTime has
> remained undisturbed since those early days. Thus when I became curious
> about whether this class variable was being used, I was able to look at
> its value and convert it to a DateAndTime to see that it had not been
> updated in the last dozen years or so.
>
> It's a small thing, but just try keeping track of that with a version
> control system.

It's a pity this here hammer doesn't work well driving in screws :)
Or, more Zen-like, "mu".

Except, maybe not, actually. I mean, I stand by the above if by
"version control system" you mean Git or Monticello. Those only track
definitions, anyway, not state. (Look at the contortions you have when
writing database migrations: yes, they're under version control. No,
they won't Just Work all by themselves.)

But a version control system just tracks changes in things, at its
root. The problem with DeepCopier's NextVariableCheckTime here is that
you only have the most recent version of the thing. A proper version
control system would allow you to say "this thing that you call
'DeepCopier's NextVariableCheckTime' has had several states, the most
recent being this one". (I'm hinting very strongly at Clojure's
separation of state and identity.)

frank

> Dave
>
>


More information about the Squeak-dev mailing list