Here, we are splitting a task across two or more programs, and combining them using a pipeline. The advantage of such pipelines is that they allow us to use a number of general-purpose programs in combination to perform a rather specific task.