The following HTML text is provided to enhance online
readability. Many aspects of typography translate only awkwardly to HTML.
Please use the page image
as the authoritative form to ensure accuracy.
3.1.1What Is Programming?
Many activities have been called programming, but not all of them meet the definition appropriate for FITness. For example, setting a video cassette recorder to tape an upcoming TV show is not programming, despite the fact that it has become a cultural icon for a technological task. Nor is scheduling the fall TV series programming as used here.
Programming, for the purposes of this report, is defined as the construction of a specification (sequence of instructions or program) for solving a problem by an agent other than the programmer. The action entails decomposing the problem into a sequence of steps and specifying them sufficiently precisely, unambiguously, and primitively that the interpreting agent, usually a computer, can effectively realize the intended solution.
Computer programming in a standard programming language meets this definition, of course, but programming arises in many other cases in which the agent is a human and the language is English. Giving directions to soccer players to find a particular field in a city, especially one not identifiable by numeric street / avenue coordinates, constitutes programming by this definition. A player is the agent interpreting or executing the instructions. Recipes with precise quantities of ingredients and precisely described preparation and cooking steps are programs executed by cooks. Toy manufactures write programs, called assembly instructions, for parents to follow, and the Internal Revenue Service (IRS) writes the program for "deductible IRA contributions" that taxpayers follow. (No comment is offered about the comprehensibility of such programs to an individual human being.)
Setting the VCR does not constitute programming by the foregoing definition, because only start / stop times, i.e., data, are being given. The data is input to a hard-wired program in the VCR. (This is parameter specification in technical terminology.) The situation does not call for the user to identify any sequence of steps. Using a phone menu is another instance of data presentation, though setting up the phone menu may constitute programming. One's ability to set a VCR, however, does benefit from using and understanding some of the FITness concepts and capabilities, e.g., dealing with unintended consequences, illustrating the point that components of FITness can translate to other technical settings.
Critical to the programming enterprise is specification that meets the conditions "precisely" and "primitively."
"Precise" specifications are essential to provide assurance that the agent can determine which actions are to be performed and in what order, so that the intended result is achieved. Avoiding ambiguity is obviously