<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Small correction:<div><br></div><div>When I started using "traits", I don't think I knew about Adele's work.</div><div>I used the term because it had to do with inheritance, and I was going with a biological metaphor.</div><div>That's how I remember it. Maybe I'll ask Randy about it.</div><div><br></div><div>"mixins" was borrowed from some MIT Lisp work. But ours were far simpler (and less powerful).</div><div><br></div><div>I believe when "traits" was resurrected later in the OOPSLA papers, they were influenced by Self, according my recollection of conversations with authors.</div><div><br></div><div>- David</div><div><br></div><div><br><div><div>On Sep 25, 2011, at 10:51 AM, Jecel Assumpcao Jr. wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">













<div style="background-color: #fff;">
<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>
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>
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>
<br>
-- Jecel<br>
<br>
</p>

    </div>
     

    

</div>



<!-- end group email -->

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