Writing DSP algorithms directly in C or assembly?
If the compiler writers put some effort into optimizing it for that target, it will at least make some use of the special DSP instructions / architecture.  But for ultimate performance it will never be as good as hand-tuned assembly.  It might be plenty good enough, though - depends on your application.

Other alternatives include:


Write the majority of your program in C, and just the most critical numerical portion in assembly.
Write the program in C and use libraries supplied by the manufacturer or third parties - if you're doing common DSP tasks such as FFTs, FIR / IIR filters etc somebody has probably already written the hand-tuned machine code to do it, so you can use that (you may have to pay for it) and link it to your application.