<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Sep 25, 2011, at 19:51 PM, Jecel Assumpcao Jr. wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">













<div style="background-color: rgb(255, 255, 255); position: static; z-index: auto; ">
<span style="display:none"> </span>



    <div id="ygrp-text"><p>Jan-Paul,<br>
<br>
It is very important to note that some words are used in different ways<br>
in different projects. Otherwise you can have some very confusing<br>
discussions.<br>
<br>
"Traits" in Self come from Adele Goldberg's teaching scheme for early<br>
Smalltalk where she purposely used different words than the standard<br>
jargon to informally introduce ideas before moving on to the actual<br>
details for the language. So she would first get people to think about<br>
which "traits" an object might have before showing them the "class" that<br>
implemented the idea.<br>
<br>
Beyond "traits", Self also has "mixins". These names are just<br>
conventions and at the language level we just have parent objects, but<br>
the different names indicate the different intent behind these objects.<br>
<br>
Several languages, including Strongtalk which evolved from Self, have<br>
"mixins" as an important feature. So when the research group at Bern<br>
decided to add to Squeak a modified version of "mixins", they decided to<br>
use a different name so their changes wouldn't be overlooked. That is<br>
what "traits" in Squeak or Pharo are. This has been copied in several<br>
other projects and languages and so is currently what is normally<br>
understood by the term. This is, however, different from what is<br>
described in the paper that David indicated.<br>
<br>
Back when JIT implementations were less common, one term that caused a<br>
lot of confusion was "compiler". For Smalltalk-80 the term meant the<br>
source the bytecode translation program while for Self that was called<br>
the "parser" and "compiler" meant the bytecode to native machine code<br>
translator instead.<br>
<br>
> Btw, Davidmay I humbly ask you on your thoughts on Io as a language ^^?<br>
> Another grab bag one, or maybe a worthy successor to Self if enhanced<br>
> with its Environment ;)?<br>
<br>
I am not David (either one ;-) , but I have been a part of the Io<br>
community since the very beginning. This is another case of the same<br>
words being used differently and causing confusion. Io comes from the<br>
Newtonscript tradition of "prototypes", not the Self style. Even Steve<br>
Dekorte was confused about this for a very long time, and I can't blame<br>
him since when I first read "The Power of Simplicity" paper I also<br>
imagined something like Io rather than what Self actually is. But those<br>
ideas are actually from Henry Lieberman's 1986 "Using Prototypical<br>
Objects to Implement Shared Behavior in Object-Oriented Systems" paper<br>
instead.<br>
<br></p></div></div></div></div></blockquote>Yeah the naming clash is amazing especially when one works with projects that used terms before everybody else did^^</div><div>Thanks for the insight on the different origins :D</div><div><br><blockquote type="cite"><div style="background-color: rgb(255, 255, 255); position: static; z-index: auto; "><div id="ygrp-mlmsg" style="position:relative;"><div id="ygrp-msg" style="z-index: 1;"><div id="ygrp-text"><p>
While I like Io, it has never had the kind of implementation technology<br>
that Self has always had and which recently has also come to Javascript.<br></p></div></div></div></div></blockquote>Yeah we're kinda working on that with the recent acute implementation^^</div><div>One problem with this is though that Oracle still holds a lot of Davids original patents so were a bit hesitant about implementing all the power of Self.</div><div>Most of them run out in 2014 I think, there are a lot of projects though that are bold enough to simply implement them, but with Oracles recent suing happines its kinda difficult ^^</div><div><br><blockquote type="cite"><div style="background-color: rgb(255, 255, 255); position: static; z-index: auto; "><div id="ygrp-mlmsg" style="position:relative;"><div id="ygrp-msg" style="z-index: 1;"><div id="ygrp-text"><p>
That community is actually smaller and currently less active than the<br>
Self one, so I wouldn't expect world domination from that direction any<br>
time soon.<br></p></div></div></div></div></blockquote>Smaller yes, less active no. :) You should really visit the #io channel on <a href="http://irc.freenode.net">irc.freenode.net</a></div><div><br></div><div>Io has the advantage that it is conceptually simpler than Self, so there are more concepts that can arise out of a small base language, like resends and annotations.</div><div>There are vastly parts missing though like Morphic and the Image. But it has a far superior concurrency model.</div><div>Interestingly we can get a Self like look with acute ^^ by encouraging small number of arguments and having a single arg syntax.</div><div>list(1,2,3) at:1 data</div><div>list(1,2,3) at:1 put:5</div><div>As at: returns a listIndex.</div><div><br></div><div>Currently we are working on a VM for Prototype languages, it could be interesting to combine the small working force of the Self and Io communities.</div><div>When lookup is just a slot on Objects (as we plan to do it) it would be trivial to implement different Inheritance models and thus support both languages :) the rest is just syntax^^</div><div><br></div><div>Cheers Jan</div><div><blockquote type="cite"><div style="background-color: rgb(255, 255, 255); position: static; z-index: auto; "><div id="ygrp-mlmsg" style="position:relative;"><div id="ygrp-msg" style="z-index: 1;"><div id="ygrp-text"><p>
<br>
-- Jecel<br>
<br>
</p>

    </div>
     

    

</div>



<!-- end group email -->

</blockquote></div><br></body></html>