The paradigms of programming
This post itself is a prime example of programming is writing, and writing is thinking.  Some of the best programmers I have known have been philosophers and lit majors.  Constructing and argument, telling a story, they all have to be broken down into cohesive parts. How many times have you come across code that is modeled after the style of a child where it just says, "and then ___, and then ___, and then ___" at which point it stops and says its over?<p>Until end users can construct their own languages, language designers have a long way to go.