I think programmers think differently in the same way long distance runners run differently or basketball players play basketball differently than non-*ers. Programming exercises a certain subset of human cognition - abstraction, symbolic expression, modeling. I do think programmers are more adept at these faculties, because they use them all the time. How much this bleeds over into "thinking" generally, who knows.