If you are interested, see the talk Harold Ossher and I gave at SPLASH this past fall.
On Feb 6, 2014, at 5:39 PM, Jecel Assumpcao Jr. jecel@merlintec.com wrote:
Russell Allen wrote:
Slots can be marked as public or private (or unmarked). This is purely documentational and not enforced at all, but slots marked public get bolded by outlines.
This is true in Self 4.x but wasn't the case in Self 1 and 2 where the privacy declaration made a difference in slot lookup. A private slot would be found be an implicit self send but not by a normal send. This meant that "mumble" and "self mumble" might do different things (note that they still might if 'mumble' is a temporary variable in the current method, but that is a different issue).
Unfortunately this privacy stuff combined with parent priorities and the tie breaker rule to make it really hard for programmers to guess what a piece of code would do. So it was all ripped out in Self 3 until a proper solution could be found but the privacy declarations remained as a kind of comment to be ignored by the VM. The proper solution was Us (do we have a link to the relevant papers for that on the site?).
-- Jecel
This one? http://www.infoq.com/presentations/oop-language-context
That's awesome. I really like the transparent context viewer.
You are ending up with a language (system?) which looks like it would be difficult-to-impossible to properly program using just a text editor except for the simplest of programs.
Russell
On 7 Feb 2014, at 12:42 pm, David Ungar ungar@me.com wrote:
If you are interested, see the talk Harold Ossher and I gave at SPLASH this past fall.
On Feb 6, 2014, at 5:39 PM, Jecel Assumpcao Jr. jecel@merlintec.com wrote:
Russell Allen wrote:
Slots can be marked as public or private (or unmarked). This is purely documentational and not enforced at all, but slots marked public get bolded by outlines.
This is true in Self 4.x but wasn't the case in Self 1 and 2 where the privacy declaration made a difference in slot lookup. A private slot would be found be an implicit self send but not by a normal send. This meant that "mumble" and "self mumble" might do different things (note that they still might if 'mumble' is a temporary variable in the current method, but that is a different issue).
Unfortunately this privacy stuff combined with parent priorities and the tie breaker rule to make it really hard for programmers to guess what a piece of code would do. So it was all ripped out in Self 3 until a proper solution could be found but the privacy declarations remained as a kind of comment to be ignored by the VM. The proper solution was Us (do we have a link to the relevant papers for that on the site?).
-- Jecel
David Ungar wrote:
If you are interested, see the talk Harold Ossher and I gave at SPLASH this past fall.
Russell Allen wrote:
This one? http://www.infoq.com/presentations/oop-language-context
Thanks for the link. I was very glad to see a language name that is easy to search for (Korz) compared to Smalltalk, Self or Us. This is a research area which I find very interesting. Programming in the Slate language had a bit of the same flavor and the "worlds" work being done by Alan Kay's group is closely related (though viewpoints are bundled together like nested transactions). Even Ian Piumarta's "Quantum Object Dynamics" speculations are related to this.
http://slatelanguage.org/documentation/ http://www.vpri.org/pdf/tr2011001_final_worlds.pdf http://www.vpri.org/pdf/m2009002_qod.pdf
That's awesome. I really like the transparent context viewer. You are ending up with a language (system?) which looks like it would be difficult-to-impossible to properly program using just a text editor except for the simplest of programs.
I always push in this direction as well, though some people don't like it. To me, you are going to have to use some program anyway since you can't directly manipulate the electrons inside the computer. In that case it might as well be a program optimized for the task: an outliner instead of vi.
-- Jecel
On 9 Feb 2014, at 10:05 am, Jecel Assumpcao Jr. jecel@merlintec.com wrote:
David Ungar wrote:
If you are interested, see the talk Harold Ossher and I gave at SPLASH this past fall.
Russell Allen wrote:
This one? http://www.infoq.com/presentations/oop-language-context
Thanks for the link. I was very glad to see a language name that is easy to search for (Korz) compared to Smalltalk, Self or Us. This is a research area which I find very interesting. Programming in the Slate language had a bit of the same flavor and the "worlds" work being done by Alan Kay's group is closely related (though viewpoints are bundled together like nested transactions). Even Ian Piumarta's "Quantum Object Dynamics" speculations are related to this.
http://slatelanguage.org/documentation/ http://www.vpri.org/pdf/tr2011001_final_worlds.pdf http://www.vpri.org/pdf/m2009002_qod.pdf
I never really played with Slate though I read its docs. It was a bit CLOS-like?
Korz in comparison seems to retain more of the feeling of late binding, though maybe that's a misremembering.
Korz also still privileges the object/selector axis, with other aspects secondary ('context').
Ian's earlier stuff with COLA seemed to be playing in the same space not by reifying context but by reifying the dispatch mechanism. Maybe that's a dynamism step too far though.
Russell
Russell,
I never really played with Slate though I read its docs. It was a bit CLOS-like?
To me it has a very Self-like flavor. The only thing I didn't like about it was the inheritance model which I felt was too complex. One detail in which it is the opposite of Self is that even the receiver has to be named like any other argument (if it is going to be used - any argument that is just a part of the dispatch can be anonymous). At one point I considered basing my project on Slate but distributed computing is very important to me and multi-dispatch doesn't seem to match that very well.
The best way to get a good idea of what Slate is really like is to download the sources and look at the libraries (Brian Rice adapted them from Squeak in just a few days) in any text editor.
Korz in comparison seems to retain more of the feeling of late binding, though maybe that's a misremembering. Korz also still privileges the object/selector axis, with other aspects secondary ('context').
Indeed, though it makes the receiver "dimension" more like the others than it was in Us.
When watching the presentation about Korz I kept remembering Ted Nelson's "Zig Zag" multidimensional spreadsheet. Perhaps some of his GUI ideas could be reused?
http://xanadu.com/zigzag/ http://www.nongnu.org/gzz/gi/gi.html
Ian's earlier stuff with COLA seemed to be playing in the same space not by reifying context but by reifying the dispatch mechanism. Maybe that's a dynamism step too far though.
To "make things as simple as possible, but no simpler" (Albert Einstein) you have to go a step too far and then come back a little. I see no other way to do it. Chuck Moore eliminated source code entirely in his Ok system and then took a step back in Color Forth. I worked on several Self variations in the 1990s (it was a fad back then) which had a lot in common with the early COLA stuff.
-- Jecel
self-interest@lists.selflanguage.org