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