Information Technology Reference
In-Depth Information
For problems that were not mathematical in nature, developing
an appropriate algorithm could be even more challenging. This was a
particular problem for the corporate users of computers. Even the sim-
plest business activities can be diffi cult, if not impossible, to describe in
terms of the limited instruction set understood by a computer.
Programmers fi rst had to thoroughly understand the activity in question,
including all of its exceptional cases, imprecise terms, and potential
errors. Not only was this process inherently diffi cult but it also frequently
involved social and analytic skills foreign to the average programmer.
“Because the background of the early programmers was acquired mainly
in mathematics or other scientifi c fi elds, they were used to dealing with
well-formulated problems and they delighted in a sophisticated approach
to coding their solutions,” noted the Price Waterhouse report. “When
they applied their talents to the more sprawling problems of business,
they often tended to underestimate the complexities and many of their
solutions turned out to be oversimplifi cations. Most people connected
with electronic computers in the early days will remember the one- or
two-page fl ow charts which were supposed to cover the intricacies of the
accounting aspects of a company's operations.”
28
Most companies
attempted to differentiate the more social and organizational processes
essential to algorithm development, often referred to as system analysis,
from the more technical procedures associated with programming.
Inevitably the two would bleed into one another, however.
29
Even after a suitable algorithm had been selected, the process of
transforming that algorithm into a form that could be understood by a
computer was challenging. Most electronic computers represented
numbers internally in binary form, and so conversion routines from
decimal to binary (and back) had to be developed. If the machine was a
fi xed-point machine, all of the numbers also scaled to stay within the
bounds of the fi xed-point arithmetic units. Since in a stored-program
computer both programs and data were stored in the same memory, it
was possible to confuse the two and create strange errors that were
almost impossible to trace. Most of these machines had limited debug-
ging capabilities (if any) and complicated mechanisms for accessing
subroutine libraries. Programmers had to use obscure techniques to
optimize for size rather than for legibility or ease of maintenance due
to the limited amount of available memory. In order to coax every
bit of speed out of a relatively slow storage device such as a rotating
memory drum, programmers would carefully organize their coded