In the early days of procedural programming, as shown on the
left side of Figure 12, the programmer called libraries provided by the operating
system to perform certain tasks, but basically the program executed down the page
from start to finish, and the programmer was solely responsible for the flow of
control. This was appropriate for printing out paychecks, calculating a
mathematical table, or solving other problems with a program that executed in
just one way.
The flow of control under this arrangement is illustrated by Figure 13. The
system has no information about a program's code. The programmer is responsible
for providing the overall behavior and flow of control for an application, with
the system providing only fine-grained capabilities.