As discussed earlier, humanity pursued science as a program for obtaining control over objective reality. While a moral outcome, the principles of science are not moral principles. They are axiomatic statements that define the primitives we can use to change reality. We can use them for good or ill: we can design super-medicines, or cultivate super-diseases. We can create super-materials, or super-weapons.
Science, although manifesting an intention (to control objective reality) and revealing intention (of primitive matter, organisms and societies), does not impose an intention. We do with our knowledge as we will.
On the other end of the problem-solving process, we find engineering. Engineering produces a specific mechanism to solve a specific problem. The artifact, once deployed, manifests the intention of the sponsor that commissioned the design. However, that intention cannot be gleaned from the mechanism by itself.
First, if the mechanism is successful, the problem that motivated its design is solved. Once the problem is removed, how can we know why the mechanism was deployed? Only by removing it. But, once in place, who knows which mechanism came first?
Secondly, the mechanism represents an axiomatic means for creating change. It can, and almost always is, capable of being integrated into some other process. For example, a hammer can be used to drive nails, or to break windows.
Of course, a sophisticated designer might come up with a completely different device for breaking windows: one that doesn’t make so much noise as a hammer, for example. But the window-breaker doesn’t necessarily have the time and energy for such niceties: consider the parent liberating children trapped in a room by a fire.
Unfortunately, as the scale of our endeavors increases, indeterminacy of consequence becomes untenable. If we want to build a six billion-dollar microchip fabrication facility, we would like to have a process for evaluating the design before committing money for its construction.
In actual practice, the manifestation of something as complex as a microfabrication facility rarely comes off perfectly. The problems that occur are the subject of further design analysis. If the statement of goals is not clearly related to the design in place, we may have a great deal of trouble fixing problems without disrupting another desirable behavior. In software, this is the problem of iatrogenic defects: changing code to fix a bug creates another bug, which is usually the failure of a feature that once satisfied the sponsor’s intention.
So how do we manage these problems? Science does not impose an intention, and engineering resolves it. What is the glue that ties science and engineering to the intention of the sponsor?
This is the discipline of programming.
A programmer responds to the goals of the sponsor with a statement of an abstract operational hypothesis (variously called a plan, or a cause-and-effect network) that states the interaction of axiomatic means that are predicted to accomplish those goals. The program is abstract because it does not specify the geometry and components of the assemblage in sufficient detail to allow its construction. That is left to engineering analysis.
With the program in place, we now have the final process for tying intention to outcome:
- Possibilities are constrained by the axiomatic principles delineated by scientists.
- Goals are addressed through an operational hypothesis provided by programmers.
- A concrete construct, addressing a specific situation, is defined in an assembly designed by engineers.