The limits of my language mean the limits of my world.
– Tractatus Logico-Philosophicus (5.6)
What cannot be imagined cannot even be talked about.
– Ludwig Wittgenstein, Journal entry (12 October 1916), p. 84e
By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race.
– A.N. Whitehead
Programming languages, because they were designed for the purpose of directing computers, offer important advantages as tools of thought. Not only are they universal (general-purpose), but they are also executable and unambiguous.
– Kenneth E. Iverson, Notation as a Tool of Thought
The goal of the programmer isn’t to write programs. The goal of the programmer is to make tools that expand one’s world view and reduce cognitive overhead so that the extra mental reserves can be spent on thinking about stuff that would otherwise not be possible to think about. This is one reason I'm constantly upset about the state of affairs in the programming industry. Much energy and time is spent on making things that lock people into specific contexts instead of augmenting their capabilities.
I wanted a set of composable abstract interpreters to help me elaborate abstract descriptions into concrete implementations but all I got were some programming languages.