The strongly timed bits of chuck is kind of annoying. For example if you decide to play a sine wave, you have to set the time to some amount like say 500msec, which in chuck parlance is you chuck 500::ms to the now time, and it plays for 500msec.
The other bit of annoyance with chuck is the other obvious problem --- polyphony. In which case you need to spork ( another chuck name for fork ) a shred ( another chuck name, for thread ) and synchronise it by doing some silly mathematical division and chucking it to the now time.
You can do string manipulation in chuck, only concats. The only problem is that each string manipulation creates a new string that is never garbage collected, chuck doesn't handle garbage collection and you cannot delete/free the memory, so in the end it leaks when chuck re-executes that fragment, which is also why you shouldn't create variables that are automatic in scope, since there isn't such a thing in chuck and they're never garbage collected. it's supposed to be something that ge is supposed to be fixing.
Haven't been too much in touch with csound, but it is a lot more mature, though the opcode method of working, without curly brackets and the way of writing scores, just makes it quite a pain to work with. On the plus side, there's graintable functions. It's been VSTed, but i'm not sure how well that works.