It's possible to compare the process of writing programs with modeling and describing a particular reality. For example, when you are writing an application for warehouse management, you are encoding in the rules of logic the concept of an online shop, its inventory, the place where the inventory is stored, and the rules according to which this inventory can be moved in and out of the warehouse. This is the reality of the business domain for which you are writing the application. We can say that your goal as a programmer is to model your business domain, that is, to encode it using your programming language into specific logical rules—to define the way information is to be stored, transformed, and interacted with.
However, in the process of execution, programs create their own reality. The same way a warehouse, an online shop, and a user...