The next major innovation was the development of the idea of a subroutine, or procedure. Procedures provided a mechanism for sharing knowledge across several projects, a way to carry a software component from one program to another. They contined the trend started with assembly language of permitting the programmer to think about operations in higher level terms, concentrating on the description of the task to be performed, the what, and subordinating the details of how it is being performed.
Procedures as an information hiding mechanism are fine for tasks that have a single simple interface, but are not an entirely effective mechanism for more complex tasks, as we will see on the next slide.