Guy Steele wrote a clever paper a few years back called Growing A Language. It is a precisely written exposition of the difficulties of using programming languages, and his thoughts on how to plan for their growth.
To illustrate his point, he uses English as programmers have to use programming languages. As a result, he provides definitions of words that are illuminating in their own right:
- A machine is a thing that can do a task with no help, or not much help, from a person.
- Meta means that you step back from your own place. What you used to do is now what you see. What you were is now what you act on. Verbs turn to nouns. What you used to think of as a pattern is now treated as a thing to put in the slot of an other pattern.