However, they do not have a very good debugging system for scripts which can lead to time wasted searching for a problem. The problem with many small programs is that it is difficult to learn about them all and users become confused. In order to make them more easy to use developers often bind them together through a single interface. Similarly, they cannot be combined with other programs easily. When too many instances of an operation must be repeated the interaction with the interface becomes a burden.
Every program is a filter in the sense that it produces an output given an input.
If the action of filtering is so common then it makes sense to build software which takes advantage of it. If programmes are capable of producing output given a stream of input then they have the added flexibility of being used in non-interactive systems. The drawback is the imposing amount of knowledge required to learn about the environment. Added features do not have the ability to halt the system if they are not working correctly. Keeping data online allows for more processing to be done with it.