Hardware is nearly always complemented with software, since pretty well all "hardware" projects include a significant software component by default.
For example, I design and build radio systems in my day job. You'd think an 800MHz 100W radio transceiver would be "hardware". In actual fact, even that sort of system is largely driven by software. Most of the signal processing is done on a DSP. The "hardware" is essentially a DAC/ADC, a mixer, a gain element and a filter, and even then the control is handled by a computer. For VHF frequencies and below, even the mixer is disappearing.
These days, nearly every electronic device fits the following model:
As a grad student working with communication systems i can verify that. In fact, most communication and signal processing systems involve pretty sophisticated algorithms, and these are almost always implemented in software. In fact, the performance differentiator in these products boils down to the quality and implementation of the signal processing algorithms, and that is where most of the research effort at university labs is directed at.
An exception with respect to some communication systems would be ones operating at extremely high frequencies, where it would be impractical to process signals in software due to memory constraints (higher operating frequencies -> more samples per second). In these cases, the mixing/modulation functions get implemented in hardware.
For example, I design and build radio systems in my day job. You'd think an 800MHz 100W radio transceiver would be "hardware". In actual fact, even that sort of system is largely driven by software. Most of the signal processing is done on a DSP. The "hardware" is essentially a DAC/ADC, a mixer, a gain element and a filter, and even then the control is handled by a computer. For VHF frequencies and below, even the mixer is disappearing.
These days, nearly every electronic device fits the following model:
Transducer > sampling > SOFTWARE > reconstruction > transducer.