Interesting throughout. Main points:
- Build in abstractions, with symbols and functions.
- Counter-intuitively, abstractions make precision possible.
- The more expressive a language, the more ambiguous the content.
- Or more generally, freedom at one level implies constraints at another level.
- Plan for interoperability and extension, which also implies limits.
- As much authority is necessary, but no more.
- The more something can do, the less predictable what it will do becomes.
- The more capable your syntax, the fewer semantics.
- The larger the group, the less you can say about it and be accurate.
- Don’t optimize too early.
If you aren’t a programmer, you might ask yourself: how is this applicable to me? And, I think the answer to that is that these are universal truths that programming, and perhaps math more generally, reveals about the larger world.
For example, when you have complete freedom to live your life in any way that you want, what do you choose? What ends up happening is that people don’t choose at all. Their lives become a series of accidents, which they accept and later rationalize as choice.
But, by imposing limits, which is a kind of choice, you can throw other choices into sharper relief. If you choose to be vegan, then that constraint effects a whole range of choices you might make from the food that you buy, restaurants you consider supporting, and even broader issues, such as your politics. You may, if you live in the United States, be unable to support either major political party since both support factory farming.
Or, perhaps you decide to adopt the religion of The Society of Friends, also known as Quakers. This implies ethics of peace, integrity, equality, and simplicity. These, in turn, might lead to other choices, such as non-violence protest, refusing to take oaths, working on freeing people in slavery in the modern world, or living on a certain level of income and avoiding participating in the money economy.
Or, you might decide to focus your efforts on becoming famous. That choice largely closes off the Quaker pathway, and vice versa. Although, perhaps if you limited your aspirations to fellow Quakers, it could be accommodated.
Constraints require making choices, but then, it opens up a freedom to choose within the context of those choices. This is obviously true in life, but so much so it is also easy to miss. A computer program makes the trade-off easier to see.