Yesterday at the climbing wall I overheard a discussion on grammar, and one of the people mentioned that he couldn’t remember the difference between “which” and “that”.
This is one of those things that I know how to write property, but I can’t explain why.
Or couldn’t — for now I can. While waiting for the hopkins med campus shuttle today, I sat and wrote some sample “which” and “that” sentences and tried to discern what differentiates them. Here are the examples that I wrote. (Or, here are the examples, which I wrote.)
“This is the house that Jack built.”
“This is aspirin, which is used for headaches.”
“This is the aspirin that I took for my headache.”
The last sentence is when the answer snapped into focus for me: the difference was analogous to the difference between classes and their instantiations in object-oriented programming. “This is aspirin” describes the aspirin class — any and all aspirin. “Which is used for headaches” specifies more detail about the aspirin. On the other hand, “That I took for my headache” specifies a particular instance of the class “aspirin”, namely, the specific aspirin that I took for my headache. I wrote this note next:
“Look up whether ‘classes’ and ‘instances’ have analogous counterparts in language — they must.”
Sure enough, upon looking up the question, I found that I was almost exactly right. If you are uncertain about the proper usages of “that” and “which”, I suggest you read about the issue here.