preceding, we sometimes
refer to this as a procedure or as procedural code. The act of creating
this set of instructions is typically called programming. When we install a program into a computer, we may then
choose to refer to is as a stored program.
The programming of secure cores involves an extra activity called formal proof, using advanced logic
reasoning to validate the program. Otherwise or in addition, the act of
determining that a particular program functions as expected, that it is in fact
comprised of a correct set of instructions regarding the desired set of
actions, is termed testing. If
testing determines that a program is not behaving correctly, then the
subsequent act of finding and correcting the problem or problems is termed debugging. The people who write computer
programs are usually called programmers.
The people who test programs are called testers,
or perhaps more formally they are referred to as quality control personnel and the people who fix the programs are
called debuggers. In most instances,
particularly during the initial creation of a program, all of these functions
can be performed by the same person and the combined process is simply referred
to as programming. While these points
are certainly basic, if not completely trivial, they do convey an important
characteristic of the way that computers are prepared to address and solve
problems. While there is not a clear or complete delineation, it is interesting
to compare and contrast this preparatory process with the construction of a
building.
We tend to
anthropomorphize the act of programming a computer. While programming has a
number of similarities to a construction process, it actually takes on more the
appearance of teaching than of building. If we consider the
construction of a building, we find that specific operations tend to be
performed by specialists. Certain workers excavate the building site in
preparation of laying a foundation. The foundation itself is constructed by specialists in the pouring and finishing of
concrete. Once the foundation is in place, a superstructure of the building
is put in place; for large buildings, this is done by the steelworkers and for small buildings or homes by the framers. Finishers prepare the internal walls and doors of the buildings.
Plumbing is put in place by plumbers
and electrical circuits are put in place by electricians.
Finally, painters, carpet layers and interior decorators complete the construction. Depending on the
structure, many other specialties might well be involved. On the other hand,
the preparation of programs for computers, when they are of a small size, tends
to be the activity of generalists
more than that of specialists. When a building is completed, it is brought to
life or commissioned by turning on the water and power and then populating it
with people. When a computer program is completed, it is provisioned by loading in to it all the information that it will
require for operation, and then it is placed into operation. Sometimes we refer
to starting up a program as executing
it; an interesting metaphorical contrast to people. Indeed, just a bit later we
will consider in more detail the acts of provisioning, as they relate to people
as well as computers.
The building of
a large-scale program or system of programs does take on more similarities to
large-scale construction. System
architects evaluate requirements and establish the design for the systems
and subsystems. More experienced programmers, sometimes referred to as systems analysts, define the data
structures, interfaces and process flow characteristics of the system. Coders write code and perform
preliminary debugging operations while quality
control personnel confirm that the detailed operation of the system across
its full breadth of required capabilities is conformant with the original
specifications. Specialists in different areas are called to help when needed.
One very specific area of specialization, much in keeping with the variants of
human memory discussed by Merlin Donald, are extensions to the pure storing of
ones and zeros that we usually think of when we refer to computer memory. These
extensions take us into the realm of data storage; specifically leading toward
databases and knowledge bases. These are the precursors in the computer world
that may lead us to context sensitive memory of sensory input coupled to
|