DSPs are targeted at signal processing. Consequently they generally run faster than microcontrollers and often have fewer built-in peripherals although most have sophisticated serial protocol hardware (UART, SPI, I2C etc). What DSPs apart is that their architecture allows for faster computation using logic optimised for arithmetic, particularly data in vector format.
Enhancements include SIMD (instructions that can work on multiple sets of data at the same time), fast DMA transfers, high-speed cache memory, dedicated hardware computations blocks etc). This makes them particularly suitable for Fourier transforms, digital filters, image processing etc.
There are some microcontrollers with some built-in enhancements, particularly hardware multipliers and sometimes dividers, which help them cross the performance gap towards the lower spec DSPs. Microchip's dsPICs are an example.
Steve has particular experience with Analog Devices Blackfin, SHARC (including 3-core devices with built in FFT hardware) and dsPICs.
As DSPs tend to have more internal memory, external memory busses and faster clocks, it can be easier to use them with real-time operating systems.
Steve has been writing software for these since 2005 in C and C++.