[self-interest] Language enhancements

Jecel Assumpcao Jr jecel at merlintec.com
Fri Jun 25 23:21:31 UTC 2004

On Friday 25 June 2004 17:12, Michael Latta wrote:
> The current license basically says do what you want with it so long
> as we do not get blamed.

All versions that Sun has released had a similar license, though the 
early versions had the infamous "advertising clause" (which I don't 
mind at all).

The Self 1.X VMs were never released at all. I don't remember about 2.0, 
but at least I don't have a copy of it. And Self 4.1 was internal to 
Sun four about three years before being finally released under the 
current license.

> >> 1) I am considering making the inheritance of structural slots
> >> declarative.  Rather than listing the copydowns in each child
> >> object, allowing the parent to annotate a slot as copied.  The
> >> child objects would still need to be able to exclude those they
> >> replace with behavior.

This is actually how it is done in the programming environment (you set 
the slots in the parent as "copydown" and they show as pink in the 
outliner) even though saving a module as text creates some code to 
actually implement this imperatively.

> >> 2) I am considering adding an annotation to a slot that will cause
> >> it to be cloned when the object is cloned.
> >>
> >> These ideas come from working with modeling where there is more
> >> declarative work.  The items above would also need syntax to
> >> support textual definition of those aspects.  For example 2 above
> >> could be <slot>+ to indicate aggregation.  The idea is to reduce
> >> errors and reduce code to manage these aspects of a system.

Ok, so you want to control "deep copies". It wasn't clear to me what you 
meant above by "cloning a slot". This is a very interesting issue. When 
you clone a morph, you certainly want to clone its submorphs too.

> >> Let me know what you think, or if there are good reasons to leave
> >> it in code.

It is easy to come up with interesting features that make some example 
or other nicer, as David Ungar always says in his talks. The problem is 
that language complexity grows exponentially since each new feature 
interacts with all previous ones.

Both issues you mentioned can be viewed as particular instances of 
something larger - how can you organize stuff so sometimes you see a 
single object and sometimes you see smaller pieces which can be shared 
in interesting ways?

My first suggestion would be for you to read the Us paper (a subjective 
version of Self): http://citeseer.ist.psu.edu/smith96simple.html

This won't solve your problems, but should help you think in a more 
general way about them.

The "an object is really a tree of stuff and not just the root" thing 
was a major complication for me in parallelizing Self in tinySelf 1 and 
in my current work. Beyond subjects/viewpoints, there is an interesting 
idea I used in a language called NeoLogo which is "roles". I won't go 
into details here, but at first I thought that viewpoints was a good 
replacement for this, but now I see that though very similar they 
actually complement each other.

I would like one solution to all of these problems, and which made the 
resulting language even simpler. Never, ever forget "the power of 

Kyle Hayes wrote:
> > A little off track, but, I'd like to see the following in Self:
> >
> > 1) a drastically simplified VM so that it can be more easily
> > ported. All
> > ports but the Sparc and Mac are a little flaky in my experience
> > (sometimes
> > a lot flaky).  Having a VM that is so difficult to port makes
> > support and
> > expansion of the Self "marketplace" more difficult.

A proper Self implementation should be in Self.

> > 2) move more of the optimization into Self rather than hardcoded in
> > the VM
> > in C++.

See 1 ;-)

> > I like your ideas about the language!  While I like Self's
> > simplicity a lot, it is often nice to have reasonable short cuts
> > for very common idioms
> > like those you've covered above.

Unless you want to use it in a scripting language style (like 3.0 and 
earlier), Self is a language and an environment. We can have as many 
shortcuts as you want in the latter without having to complicate the 
former. The copydown thing is a good example.

-- Jecel

More information about the Self-interest mailing list