"fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning." (Brooks, 1975)But programming in its essence is a kind of linguistic exercise, translating between what someone wants and what another understands, and translating again between the requirement and the machine. The problem is that translation is circular and often open-ended while the medium is controlled and ultimately restrictive. As Brooks notes in his book "The Mythical Man-Month" the essence of programming is "fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles", but the essence of the tasks we want the machine to perform are linguistic, human, and open-ended. To restate the problem somewhat, a computer's interpretation is deterministic, the behaviour of a finite state machine (albeit highly complicated), but the user's interpretation is constantly revisable subject, linked as it is between the objects we encounter, the situation, our goals and to our human capacity to learn and to judge.
Brooks Jr., F. P. (1975) The Mythical Man-Month : Essays on Software Engineering, Reading, Mass., Addison-Wesley Pub. Co.
Brooks Jr., F. P. (1987) No Silver Bullet Essence and Accidents of Software Engineering. Computer, 20, 10-19.