<div dir="ltr"><div>Where is this new compiler project?&nbsp; Where is NewCompiler?&nbsp; I would like to see it.</div>
<div>Does anybody know where that book about the Squeak&nbsp;Compiler went to?</div>
<div>&nbsp;</div>
<div>the rest down below is all nonsense and I wouldn&#39;t read it if I were you.</div>
<div>&nbsp;</div>
<div>i knew this was going to cost me.</div>
<div>&nbsp;</div>
<div>What is atomic loading?&nbsp; Does it mean no dependencies or dependencies are handled?</div>
<div>It seems to me that there needs to be some kind of intellegent dependencies manager that works a lot better and is a lot smarter than what has been put out there so far.</div>
<div>&nbsp;</div>
<div>How can I learn about how a good Squeak compiler works?&nbsp; Without years and millions of dead hours?</div>
<div>&nbsp;</div>
<div>Modularity is very good.&nbsp; I think that all of Squeak should be very self explaining.&nbsp; This can be done if you put your explanations of what is going on after the body of the method.&nbsp; Colored source is good too.&nbsp; See Dolphin.&nbsp; But without reformating.</div>

<div>&nbsp;</div>
<div>I am making picoLARC on <a href="http://sourceforge.net/" target="_blank">sourceforge.net</a>.&nbsp; Each lisp/smalltalk expression gets compiled by an instance of a Compiler Class.&nbsp; Each expression(&nbsp;let if define etc&nbsp;)&nbsp;has its own KEGLambdaLispCompiler subClass with&nbsp;one standard&nbsp;method and zero or more helper methods in it.&nbsp; Each Compiler outputs an instance of a subClass of the Eval Class.&nbsp; An Eval can be evaluated at runtime by &gt;&gt;evalWithActivationRec: or it could generate byte codes which do the same thing via some method like</div>

<div>EvalSubClass&gt;&gt;generateByteCodesOn:usingCodeWalker: where the CodeWalker could tie Evals together or do optimizations?&nbsp; Is this not a good design?&nbsp; I know I like the part about one Compiler Class for each expression and one corresponding Eval Class.&nbsp; But I haven&#39;t done any byte code generation yet so I don&#39;t know about that part.&nbsp; One Compiler per Eval is not strict.&nbsp; The ApplicationCompiler can output several different related kinds of&nbsp;Evals for the different function calls and message sends.</div>

<div>&nbsp;</div>
<div>What is this visitor pattern?&nbsp; I don&#39;t like the idea of putting byte code generation into a single Class.&nbsp; But I feel like maybe I don&#39;t know what I&#39;m talking about.&nbsp; To modify the byte code generation for an expression you would&nbsp;subClass the Eval Class and modify the</div>

<div>&gt;&gt;generateByteCodeOn: aCodeStream.&nbsp;&nbsp;The initial implementor would&nbsp;try to seperate out the parts that might be modified by someone into seperate methods that get called by</div>
<div>&gt;&gt;generateByteCodeOn: so these helper&nbsp;methods would generally be overridden and not</div>
<div>&gt;&gt;generateByteCodeOn: unless that method was really simple.&nbsp; So the initial implementor has to think about reuse and the places where modification might occure.&nbsp; So you would have a lot of simple </div>
<div>&gt;&gt;generateByteCodeOn: methods instead of one big complex one.</div>
<div>&nbsp;</div>
<div>There are all different ways of calling a function or method or query etc in picoLARC&nbsp;and these are all subClasses of KEGLambdaLispApplicationEvalV6p1 and it seems to work fine.</div>
<div>&nbsp;</div>
<div>But overriding &gt;&gt;generateByteCodesOn: is not good enough is it?&nbsp; The Compiler Classes can&#39;t have hard coded Eval instance creations either right?&nbsp; The Compiler Class has to be subClassed also and the</div>

<div>&gt;&gt;meaningOf:inEnviron: needs to have a</div>
<div>( self createEval ) expression in it that could be subClassed and overridden.&nbsp; And then that subClass has to be easily inserted into the expression dispatch table that pairs up expressions with expression Compilers.&nbsp; So when that table gets made there should be a </div>

<div>(&nbsp;tableModifier modify: table ) which could stick the &lt; expression Compiler &gt; pairs in that are needed.</div>
<div>&nbsp;</div>
<div>I think that is all that would be required to modify the compilation of an expression.</div>
<div>I will have to make these changes to picoLARC so it will be more modifiable.</div>
<div>&nbsp;</div>
<div>I think the Compiler should be very modular.&nbsp; For picoLARC one Class per expression and one Class per Eval seems to work good.&nbsp; Stuffing lots of seperate&nbsp;things into a&nbsp;single Class and doing a procedural functional thing and not an OOP thing does not seem good to me.</div>

<div>&nbsp;</div>
<div>I think that the Compiler should be very clean and a best practices example with a long comment at the bottom of each method telling all about what it does.&nbsp; Writing it out and referencing other related methods helps to think about what is really going on and then a better design without hacks comes out.&nbsp; I don&#39;t think hacking should be encouraged at all.&nbsp; Hacking just makes a mess.</div>

<div>&nbsp;</div>
<div>And then this practice of not making any Package comments has got to stop.&nbsp; I think that people who do that should be&nbsp;admonished in some way.&nbsp; I think that the Package comment for the Compiler should contain the design document for it that tells all about how it is designed.&nbsp; If it needs to be long then it should be long.&nbsp; It should include: How to understand the Compiler.&nbsp; There should be a sequence of test cases that start simple and show how it all works.</div>

<div>&nbsp;</div>
<div>And that should go for the VM too.&nbsp; This idea that the VM&nbsp;can be opaque and only recognizable to a few is not good.</div>
<div>&nbsp;</div>
<div>These should be works of art and not hacked up piles of&nbsp;rubbish to be hidden away into obscurity.</div>
<div>&nbsp;</div>
<div>There is this&nbsp;idea that one should only care about what something does.&nbsp; And the insides of it are&nbsp;a random black box that you tweek and pray on.&nbsp; But I think that the insides should be shown to the world.&nbsp; They should be&nbsp;displayed on a backdrop of velvet.&nbsp; Especially the Compiler and VM and VM maker.&nbsp; And then the whole Windowing thing should be modularized so you can have multiple different Windowing systems.</div>

<div>&nbsp;</div>
<div>And what about having multiple VMs?&nbsp; It would be cool if picoLARC could be inside of Squeak in that way.&nbsp; It would be cool if&nbsp;one VM was generalized so that it could support different dialects and languages.&nbsp; And another was specific and fast.&nbsp; And you could make various kinds of VMs and images and output them onto disk without a lot of trouble.&nbsp; It would come with gcc and all that junk all set up so it would just work.&nbsp; If you already had gcc you could tell it not to download it.</div>

<div>&nbsp;</div>
<div>picoLARC has simple name spaces called Nodules where you can have Nodules inside of Nodules and Nodules can multiply inherit variables&nbsp;from others.&nbsp; Maybe such a thing could be used in Squeak?&nbsp; Then you could have multiple VMs.&nbsp; And VMs inside of VMs.</div>

<div>&nbsp;</div>
<div>I think that Dolphin Smalltalk&nbsp;could be held up as an example of pretty.</div>
<div>&nbsp;</div>
<div>I hope picoLARC will be another one.</div>
<div>&nbsp;</div>
<div>I think that Squeak is pretty in a somewhat cancerous sort of way.</div>
<div>The cancer is all the hacking.&nbsp; That goes on.</div>
<div>The vision is great but the hacking and undocumenting gum up all those big ideas.</div>
<div>&nbsp;</div>
<div>Sure it&#39;s quick but it rots away&nbsp;quickly too.</div>
<div>&nbsp;</div>
<div>Undocumented features.&nbsp; In Smalltalk this is less of a problem but in like Lisp say you make this great feature but then don&#39;t document it.&nbsp; You might as well have not even made it.<br><br></div>
<div class="gmail_quote">On Mon, Sep 1, 2008 at 2:12 PM, Igor Stasenko <span dir="ltr">&lt;<a href="mailto:siguctua@gmail.com" target="_blank">siguctua@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">2008/9/2 Edgar J. De Cleene &lt;<a href="mailto:edgardec2001@yahoo.com.ar" target="_blank">edgardec2001@yahoo.com.ar</a>&gt;:<br>

<div>
<div></div>
<div>&gt;<br>&gt;<br>&gt;<br>&gt; El 9/1/08 5:39 PM, &quot;Eliot Miranda&quot; &lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt; escribió:<br>&gt;<br>&gt;&gt; The thought of a committee fills me with horror :) &nbsp;I don&#39;t think we need<br>
&gt;&gt; anything so baroque :)<br>&gt;&gt;<br>&gt;&gt; Best<br>&gt;&gt; Eliot<br>&gt;<br>&gt;<br>&gt; Peron said:<br>&gt; If you wish nothing happens, nominate a comitee<br>&gt;<br><br></div></div>You both right. My intent was only to get people&#39;s attention on this<br>
problem and discuss different points of view and their needs.<br>Then implementors (like me) making things need to be done. Thats all.<br>If no-one sharing the thought that we need a better compiler at all,<br>then i can simply take away my words, and we will stay where we still<br>
sitting. :)<br><font color="#888888"><br><br><br>--<br></font>
<div>
<div></div>
<div>Best regards,<br>Igor Stasenko AKA sig.<br></div></div><br><br><br></blockquote></div><br></div>