The Application Is Event-Driven

An interactive application is controlled by a human user. Typically, nothing happens until the user lifts his finger to the side of his mouse and causes an input event. There are two implications here.

First, the fundamental application control structure is an event loop: wait for an event, figure out how to handle it, process the event, then go back and wait for the next one. The structure of the event loop is generic; there is nothing application-specific about it.

Second, the application is passive. It knows how to do certain things, but it's waiting for the user's command to do them. You can imagine programs that do things on their own, without waiting for user instruction (for example, a nuclear reactor control system). But, the interactive part of such a program is still an event loop, which must synchronize with the separate background task(s) to provide the user control.