<html><body bgcolor="#FFFFFF"><div>Jecel,</div><div><br></div><div>Do you still have the multi-map implementation?  I would love to see what you did. Map management by defining a graph that can be traversed between multiple maps would be a great tool for not only code analysis but also designing software. </div><div><br></div><div>A graphical editor would allow one to edit state diagrams directly. <br><br>-=-=- <a href="mailto:dave@nexttolast.com">dave@nexttolast.com</a> -=-=-</div><div><br>On Sep 30, 2011, at 1:50 PM, "Jecel Assumpcao Jr." <<a href="mailto:jecel@merlintec.com">jecel@merlintec.com</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div>




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



    <div id="ygrp-text">
      
      
      <p>David Ungar wrote:<br>
<br>
> Thanks, guys. I'll read the Ego paper.<br>
<br>
I only skimmed through it, but it seems to be another case of "Self as I<br>
imagine it from reading the papers" instead of "Self as it really is<br>
from using it". The idea of dynamic inheritance using data parent slots<br>
is not mentioned at all, but the focus is on using _AddSlots: and<br>
friends to change objects during an application's execution. It<br>
certainly would work, but it would also defeat all the optimizations<br>
built into the VM.<br>
<br>
This style of programming is used a bit in Javascript and the people,<br>
like Lars, who have recently done high performance implementations of<br>
that language have had to deal with this problem. So there is not reason<br>
why a new implementation of Self couldn't handle lots of _AddSlots:, but<br>
it hasn't been the focus so far.<br>
<br>
In fact, that is also true for dynamic inheritance. If you use<br>
assignable parent slots then you will take a huge hit in terms of<br>
performance. When Urs Hölzle was asking for application in Self to test<br>
the compilers he had created for 3.0 (and which we still use today) I<br>
sent him my CMOS simulator but it was useless for him exactly because I<br>
had used dynamic inheritance. In my case it was just a nasty hack to<br>
make the Self REPL work as a nice command line for my simulator. The one<br>
example I know of that does use assignable parents as intended is the<br>
tree objects in collections.<br>
<br>
Given how dynamic inheritance is actually used (to switch among a small<br>
number of constant objects rather than point to arbitrary ones) I came<br>
up with an implementation were an object with a dynamic parent would<br>
have several maps, one for each parent (up to five, for example). When<br>
you assign to the parent slot, you switch maps as a side effect.<br>
<br>
> A while back I gave a keynote at OOPSLA on the role of paradox in language<br>
> design.In general, I believe that better type systems are worse--depending<br>
> on the context. One loses the power of ambiguity. However, if you are<br>
> sending code to Mars, it's a good tradeoff. Anyway, I'll have to read the paper.<br>
<br>
I watched that talk - you had some static typing people grinding their<br>
teeth :-) Back in 2003 Java was at its zenith and stuff like Ruby and<br>
Javascript were still being ignored. By a coincidence, I had started<br>
using "sending code to Mars" in the mid 1990s as an example were<br>
traditional software engineering practices would be a good idea in<br>
contrast to other applications with GUIs where you might get better<br>
results through exploratory programming (we didn't have the term "agile<br>
programming" yet, though we already had some of the methods like Scrum).<br>
<br>
-- Jecel<br>
<br>
</p>

    </div>
     

    





<!-- end group email -->

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