Q:

In pair programming, what is each role named, and why?

I've heard the person at the keyboard named the "driver", and the other person named the "navigator".  I've imagined rally car racers, where the person at the wheel just cannot keep up with everything that's happening, and they must have the help of the "navigator", who's shouting volumes and volumes of directions at them to, literally, keep them "out of the weeds", much like a person at the keyboard is kept "on course" by the person in the second chair.
What are the more/most commonly accepted terms for the two roles in pair programming, and (if it's not obvious) are they borrowed from any earlier professions?

A:

The driver (or less commonly pilot) has hands on with the keyboard and is right there, banging out the code.
The navigator (or observer, or less commonly co-driver or co-pilot) is sitting alongside with the reference documents making sure the code is going the right way. 
The navigator has a better perspective of what's coming up, and isn't just worrying about the mechanics of typing away.

