At 6:49 PM -0400 7/20/02, Brad Cox wrote:
>At 7:20 AM +0900 7/21/02, Dan Sugalski wrote:
>>Continuations are a massive pain to do in a language that doesn't 
>>have them. Doing continuations means messing around with the system 
>>stack, and to do it well you really want to treat the stack as a 
>>tree of semi-independent frames rather than a single chunk of 
>>contiguous memory as most C-style languages do.
>
>I spent years on this problem in the middle 80's (search for 
>TaskMaster on my website). I mainly proved that is possible to add 
>continuations, exceptions, garbage collection, what have you, to C, 
>but its almost impossible to do any of these things well, certainly 
>without sacrificing the things C is good at.

Oh, absolutely. I'm reasonably aware of the problems involved, which 
is why I don't think it's worthwhile. C's a lousy target for this 
sort of thing. Not that the native machine language is generally much 
better as a target as most chips these days had C in mind for their 
design, but at least you throw away any pretense that the language's 
going to give you any help.

>But why bother?

Speed, mainly. Going from an interpreted to a compiled form gives a 
number of opportunities to remove overhead. Walking optrees has some 
expense involved--depending on how complex the operation is, how much 
optimization you do, and the CPU architecture, you can see a speedup 
somewhere between 1.1 and 40 times going compiled.

>Ruby's not C and it has continuations already. There's absolutely no 
>need to plow that furrow again. Spend the time on something useful!

Right, but Ruby's interpreted right now. Compilation brings a number 
of benefits, though there are potentially some tradeoffs involved as 
well.
-- 
                                         Dan

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
dan / sidhe.org                         have teddy bears and even
                                       teddy bears get drunk