"Programming for the Expression of Ideas"
https://www.infoq.com/presentations/Expression-of-Ideas/
Very adjacent to the quote above. He talks about how programming helps to understand things (mathematics, physics...) in a deeper way.
This bit on mathematical notation and the clarity provided by programming is awesome to see:
"Newtons equation is really a macro, with untyped and undeclared parameters"
- the way pain-killers work tells you a lot about how keyloggers or man-in-the-middle attacks work
- look at how DNA "syntax checking" happens during mitosis to learn about compiling in general
- a puppy swallows whatever it sees; this gives the immune system enough test data about the surroundings etc. (similar to ML)
- a huge amount of cyber-security concepts can be understood by learning biology
> Software development is all about knowledge and decision-making based on that knowledge, which in turn creates additional knowledge. The given problem, the decision that was made, the reason it was made that way, the facts that led to that decision, and the considered alternatives are all knowledge... each instruction typed in a programming language is a decision... Software design can last a long time. It can last long enough to forget about previous decisions made, as well as their contexts. It can last long enough for people to leave, taking with them their knowledge, and for new people to join, lacking knowledge. Knowledge is central to a design activity like software development. Most of the time this design activity is, for many good reasons, a team effort involving more than one person. Working together means making decisions together or making decisions based on someone else's knowledge. Something unique with software development is that the design involves not only people but also machines... Using a formal language like a programming language, we pass knowledge and decisions to a computer in a form it can understand. Having a computer understand source code is not the hard part... The hardest part is for other people to understand what has been done so that they can then do better and faster work. The greater the ambition, the more documentation becomes necessary to enable a cumulative process of knowledge management that scales beyond what fits in our heads. When our brains and memories are not enough, we need assistance from technologies such as writing, printing, and software to help remember and organize larger sets of knowledge.