Hi-- Kas writes:
...some things follow from Ruby being interpreted and ChucK being compiled.
Mike responds:
I would put it this way: Some things follow from Ruby being reflexive and everything in Ruby being an object. I think that it matters a lot less that it's compiled. After all, we're compiling to byte code that runs in a VM, correct? It's not native code that its running.
Right, and of course there are other systems which go further, translating those virtual-machine instructions into hardware processor instructions. Some of those do absolutely everything at runtime (no edit/run/restart cycle), and some of *those* (my own favorite is Squeak) can do music and garbage collection at the same time without missing deadlines. The thing that matters to me is the immediacy I get from dynamism. I don't ever want to have to stop the processes that make my music. ChucK comes close to that feeling, by making the edit/spork cycle very quick, but to propagate the effects of code changes I still have to kill shreds I would rather leave running during a performance. (Apologies if the situation has changed, I haven't actively used ChucK for my own work in several months. And apologies if I'm rehashing stuff everyone already knows. :) Anyway, "interpreted" and "compiled" are not mutually exclusive. The dichotomy one is really talking about here is "dynamic" versus "static", and both can yield usable performance. -C -- Craig Latta composer and token Smalltalk hacker :) www.netjam.org