I’ve noticed that there’s two ways of giving directions to a location (say, when a driver pulls over to ask you how to get to a restaurant). Declarative directions specify where a location is relative to the current location; for example, “Two blocks ahead and across the street.” Procedural directions specify the steps that have to be taken to reach a location; for example, “Go straight three blocks, take a u-turn, go one block, and it’s the first building on your right.”

Declarative directions are in the same space that “as the crow flies” measures; procedural directions correspond to actual paces or odometer miles. They differ because someone moving through space can’t move through buildings and other barriers for physical reasons, and may be prevented from turning left at an intersection or going the wrong way down a one-way street by legal or social conventions.

Often people giving directions give only procedural directions, but declarative directions are useful both as a check on the procedural directions, and as a more robust representation that can be used to navigate and to construct new directions if the procedural directions fail.

For instance, when I was living in Cambridge, people on Main St. on the way towards the Longfellow bridge (on the south side of the road) would often ask me how to get to One Main St. (on the north side). There’s a median and some tricky turns on the way; the easiest procedural directions are therefore “Go over the bridge, take a hard left, come back over the bridge, and it’s the first building on your right.” (This also avoids the problem of finding “the last building on your left”, which can be hard to identify if the buildings are long.) But the directions work a lot better if you point to the building first, even though the direction you’re pointing isn’t the direction you have to drive to get there.

I was reminded of this distinction this morning when my son asked how to find Internet Explorer on the Mac. (I had removed its icon from the dock and replaced it by Safari.) My wife tried to tell him where Safari was terms of folders and disks, but it turned out he wasn’t sure what a folder was. I told him how to open Safari in terms of icons, labels, and spatial location, and this was easy. There are analogies here both with declarative and procedural directions in physical space, and with the Model and View in the Model-View-Controller architecture of programming.