gleaned from Eugene Wallingford excellent notes from OOPSLA’05, OBJECT-ORIENTED PROGRAMMING, SYSTEMS, LANGUAGES and APPLICATIONS.
Gerald Sussman, co-author of SICP, the seminal programming text, opened his talk with the assertion that programming is, at its foundation, a linguistic phenomenon. It is a way in which we express ourselves. As a result, computer programs can be both prose and poetry.
The practical value that we express in programs sometimes leads to the construction of intellectual ideas, which ultimately makes us all smarter.
There are some things we could not express until we invented programming.
Here Sussman distinguished two kinds of knowledge about the world, declarative knowledge and imperative knowledge. Imperative knowledge is difficult to express clearly in an ambiguous language, which all natural languages are. A programming language lets us express such knowledge in a fundamentally new way. In particular, computer programs improve our ability to teach students about procedural knowledge. Most every computer science student has had the experience of getting some tough idea only after successfully programming it.