Multitasking is actually a form of Concurrent Processing. Normally when we write programs, we specify the exact order of everything the computer does. Often, however, the order is not important and, indeed, irrelevant. This especially true between separate modules which do isolated tasks. Concurrent Processing, then, allows the computer to chose this order for us; it relieves us of having to specify this order and allows the computer to optimize its processing according to the particular enviornment.
For example, a full-screen on-line text editor really has two tasks: to modify the internal data structures according to the keyboard input, and to display the internal data structures via the screen output. The first task essentially waits for the keyboard, and the second waits for the screen. With this shared-memory multitasking model, the user never has to wait for the display. More importantly, the model is easily extended. For example, adding more display tasks can allow the same data to be displayed in different windows (or even on different screens) without worry of updating each of these each time a character is pressed. Likewise, with some additional synchronization, adding more keyboard tasks can allow the same data to be edited simultaneously by several people (a multi-user editor!).3
In summary, concurrent processing is a powerful programming concept. It not only allows us to use computers more efficiently, but lets them become more representative models of our concurrent world.