When I first wrote programs for a Unix box I would think of the main program as the application. But there would almost always be some sort of shell script to wrap invocation. Sometimes also a cronjob. Maybe a watchdog restart daemon process, etc. Then my understanding expanded to really consider all of this working in concert as the application, even the OS and it's configuration, and any other service dependencies. Whatever had to be a certain way, manually configured or tuned or whatever, to achieve the desired application result.<p>I think that's also where the notion of error handling comes into play because it's obvious at that level that it's not enough to just handle exceptional cases gracefully inside the body of your main program(s), and in fact, you may not want to, you may want to let certain things percolate up and cause the process to exit, if only to achieve a uniformity in how you handle edge cases.