<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><br><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(127, 127, 127, 1.0);"><b>From: </b></span><span style="font-family:'Helvetica'; font-size:medium;">David Ungar <<a href="mailto:ungar@me.com">ungar@me.com</a>><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(127, 127, 127, 1.0);"><b>Date: </b></span><span style="font-family:'Helvetica'; font-size:medium;">December 28, 2010 10:08:54 AM PST<br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(127, 127, 127, 1.0);"><b>To: </b></span><span style="font-family:'Helvetica'; font-size:medium;">"<a href="mailto:self-interest@yahoogroups.com">self-interest@yahoogroups.com</a>" <<a href="mailto:self-interest@yahoogroups.com">self-interest@yahoogroups.com</a>><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(127, 127, 127, 1.0);"><b>Subject: </b></span><span style="font-family:'Helvetica'; font-size:medium;"><b>Re: Self on Windows  (was:  RE: [self-interest] have to get this off my heart)</b><br></span></div><br><br><div bgcolor="#FFFFFF"><div>It would be great to have one.<br><br>- David (from iPad, typos likely)</div><div><br>On Dec 28, 2010, at 1:32 AM, Shaping Shaping <<a href="mailto:shaping1@rocketmail.com">shaping1@rocketmail.com</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div>

<span style="display:none"> </span>

    <div id="ygrp-text"><div><br class="webkit-block-placeholder"></div><div style="font-family:'times new roman', 'new york', times, serif;font-size:12pt;"><div><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D;">Hi David/everyone.<o></o></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D;"><o> </o></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D;">I've been following Self in the background for a number of
years, am intrigued by it, and very much want to immerse myself in it for a
time, to more fully determine its merits, its potential, and my potential with
it.  However,  I use a Windows machine.   I don't remember
when the question was last asked, but:  Why have we still no Windows
version of Self?  <o></o></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D;"><o> </o></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D;"><o> </o></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D;">Shaping<o></o></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D;"><o> </o></span></p><p class="MsoNormal"><b><span style="font-size:10.0pt;">From:</span></b><span style="font-size:10.0pt;"> <a href="mailto:self-interest@yahoogroups.com"></a><a href="mailto:self-interest@yahoogroups.com">self-interest@yahoogroups.com</a> <a href="mailto:[mailto:self-interest@yahoogroups.com]">[mailto:self-interest@yahoogroups.com]</a>
<b>On Behalf Of </b><a href="mailto:ungar@mac.com"></a><a href="mailto:ungar@mac.com">ungar@mac.com</a><br>
<b>Sent:</b> 2010-December-27, 20:44<br>
<b>To:</b> <a href="mailto:self-interest@yahoogroups.com"></a><a href="mailto:self-interest@yahoogroups.com">self-interest@yahoogroups.com</a><br>
<b>Subject:</b> Re: [self-interest] have to get this off my heart<o></o></span></p><p class="MsoNormal"><o> </o></p><div>  <br class="webkit-block-placeholder"></div><p><o> </o></p><p class="MsoNormal">On Dec 26, 2010, at 5:12 AM, Jan-Paul Bultmann wrote:</p><p class="MsoNormal"><o> </o></p><div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; ">  <br class="webkit-block-placeholder"></div><p style="background:white;">I didn't say that they are useless :D</p><p class="MsoNormal">No, but you implied that when you said that you hated them
and that their functions could be performed by invisible slots, whatever that
means.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal" style="background:white;">But they are one of those black
magic things that happen in the VM and don't emerge out of existing concepts a
bit like resends. Even though they are implemented nicely through the use of
mirrors.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">Sorry, but everything happens in the VM: slots, methods,
method invocation, and objects. Resend, too. So, I don't see why annotations
are any more</p><p class="MsoNormal">magical than anything else.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal" style="background:white;">They also create a problem that is
best known form  XML, what is property and what is content.</p><p class="MsoNormal" style="background:white;">Should a comment go into the method
or in to the annotation, why is the storeString stuff not in the annotation as
well as prototype information.</p><p class="MsoNormal" style="background:white;">They could be purely for meta
information like store-strings, comments and categorisation, but then we should
put everything that is not necessary for the function of the object into them.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">When you speak of property and content, you embrace a
dichotomy that is context-relative without owning up to its multiordinality.</p><p class="MsoNormal">In other words, just as with deep-copy, what is property vs
content depends on one's purpose at the moment.</p><p class="MsoNormal">Methods already contained lots of "meta
information", for instance temporary variable names, indentation, etc.
etc.</p><p class="MsoNormal">Yes, it would be nice to handle all of that better--see
Simonyi's intentional programming--BUT, in Self there is a clear distinction:</p><p class="MsoNormal">what we thought of as a method--remember we started from
Smalltalk--was in the method; what we thought of as in the environment</p><p class="MsoNormal">(including the transporter) went into the annotations. When
I read your remarks, I feel that you haven't thought about as many scenarios,</p><p class="MsoNormal">or as many previous systems, as one would have to do to
understand the design space and all of the tradeoffs involved.</p><p class="MsoNormal">Many of my own designs for, say the transporter, seemed
great for the first few objects saved, but failed miserably later on.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal" style="background:white;">Even though they tend to contradict
the principle of simplicity in my opinion, when they are there they should be
part of the family and not some distant cousin you don't talk about.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">When I read the above, I wondered if perhaps you had not
heard of the principle of progressive disclosure.</p><p class="MsoNormal">Once designs a conceptual system so it can be learned in
pieces. In the case of Self, there is a run-time story of objects and slots.</p><p class="MsoNormal">No annotations. They have no effect on the dynamic behavior
of base-level programs.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">Then, as you learn more, you can encounter object and slots
comments, and finally the transporter.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">I understand simplicity differently than you do. Following
Shannon's information theory, simplicity has to do with how much once has to
hear,</p><p class="MsoNormal"><b>given one's prior (i.e. what you know already), </b>to
understand a system. Again, I would love to see a system that did all Self
does,</p><p class="MsoNormal">without something like annotations. Design one, make it
work, make it work on the scale of programs that Self does, and I would be</p><p class="MsoNormal">delighted to read about it.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal" style="background:white;">When describing a Object we can no
longer say it is composed of slots, and those slots hold information.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">Yes we can, when describing its dynamic behavior. You seem
to not understand or to discount the idea of context.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal" style="background:white;">We have to say that a Object is
composed of slots and Meta information in form of an annotation object, and
those slots hold Information and meta information.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">Yes, when it's time to file something out, or name it.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;">So it is not the idea that a
Object can hold meta information that I don't like, it is more the fact
that we should embrace them as a part of the language we are proud of, (like
the totally awesome namespace ;) and cloning ) or we should find a different
way.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">I really don't understand the gripe. You seem to want to
embrace a concept of "the language" that has no meaning to me.</p><p class="MsoNormal">Is the environment part of your "language"? It
certainly makes a different for the programming experience.</p><p class="MsoNormal">What about the pre-programmed pieces that come with the image?</p><p class="MsoNormal">What about the concurrency model?</p><p class="MsoNormal">What about the fact that, in Self, you can split up your
methods with no performance cost whatsoever? I would say that's part of
"the language"</p><p class="MsoNormal">since it changes how you program.</p><p class="MsoNormal">What about the quality of the syntax error messages?</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">Every one of these things both is and is-not the
"language." All matter.</p><p class="MsoNormal">I have heard many with too much mathematical training assert
that Scheme Lambdas are "the same as" Smalltalk blocks.</p><p class="MsoNormal">But there is a huge difference in syntactic weight, and
incorporation into common idioms.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">What Randy & I cared about was the complete experience,
the ability to unleash creativity.</p><p class="MsoNormal">Is the result of that project perfect? No.</p><p class="MsoNormal">But I'm afraid that I just don't resonate with any of these
criticisms of yours.</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">Take care,</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal">- David</p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;">Cheers Jan</p><p class="MsoNormal" style="background:white;">On Dec 26, 2010, at 8:21 AM, <a href="mailto:ungar@mac.com"></a><a href="mailto:ungar@mac.com">ungar@mac.com</a> wrote:</p><p class="MsoNormal" style="background:white;"><o> </o></p><div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; ">  <br class="webkit-block-placeholder"></div><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;">I put annotations in to support the
other world; not the world at execution-time, but the world at programming
time.</p><p class="MsoNormal" style="background:white;">I have yet to see a model of
execution that supports all of the structure a programmer needs to impose upon
the world.</p><p class="MsoNormal" style="background:white;">For instance, if you are going to
file out a subset of objects or slots and then file them in to another world of
objects, I am convinced</p><p class="MsoNormal" style="background:white;">that you need more information than
just what is needed to run the objects. See my OOPSLA transporter paper for
details.</p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;">Also, it is very useful to have
categories within a single object. At run-time you need just one object, but at
concept-time, you need</p><p class="MsoNormal" style="background:white;">some way to group things, although
a strict hierarchy may not be optimal.</p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;">So, if you need some information
that plays no role in execution, it must only exist in the reflective domain.</p><p class="MsoNormal" style="background:white;">I don't see how you get anything
much different than annotations, but I would enjoy seeing proposals.</p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;">Copy-down is a bit of a different
matter. It sort of straddles programming time and run time, though only
REFLECTIVE run-time.</p><p class="MsoNormal" style="background:white;">Maybe the folks at Vrije have a
better way, or maybe Ly, my latest object system design is better. (I think
so.)</p><p class="MsoNormal" style="background:white;">In Ly, all non-constant slots are
copied-down, as part of the language.</p><p class="MsoNormal" style="background:white;">You like names that are not
googable, don't you ;D</p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;">It's easy to complain about
something, but think about why it's there and how else you would do it.</p><p class="MsoNormal" style="background:white;">In my experience, one ends up
sweeping dirt around under the carpet; it doesn't go away. </p><p class="MsoNormal" style="background:white;">Once in a while there is a nice
unification. If you don't like annotations, let's see you find that
unification.</p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;">- David</p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;">On Dec 25, 2010, at 10:39 PM, Josh
Flowers wrote:</p><p class="MsoNormal" style="background:white;"><o> </o></p><div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; ">  <br class="webkit-block-placeholder"></div><p style="background:white;">Not sure I'd have been quite
so diplomatic about it - but I don't disagree.<br>
> First of all I wish you all the best :D.<br>
> <br>
> I hate annotation.<br>
> They are like a language in a language.<br>
> Why not create invisible slots or something that are simply hidden my the
> C'mon they managed to do the fricking namespaces with objects and slots...
why then staple something on top later.<br>
> This has kept me up all week, what a relief.<br>
> <br>
> Happy Holidays, Jan<br>
> <br>
> <br>
> ------------------------------------<br>
> <br>
> Yahoo! Groups Links<br>
> <br>
> <br>
> </p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal" style="background:white;"><o> </o></p><p class="MsoNormal"><o> </o></p><p class="MsoNormal"><span style="color:white;"><o></o></span></p></div><div></div>

</div><br><div><br class="webkit-block-placeholder"></div>



<!-- end group email -->