IX
In later years, machines were simply said to have “loop control” if they
possessed three properties: “common storage, erasable storage, and discrimi-
nation” [55, p.254].
27
These properties allowed recursive problems to be pro-
grammed iteratively instead of being programmed as straight lines of code. For
example, instead of coding the summation S =
n
i=1
x
i
as a straight line of code
— as in
s
1
= x
1
s
2
=s
1
+ x
2
s
3
= s
2
+ x
3
. . .
s
n−1
= s
n−2
+ x
n−1
s
n
= s
n−1
+ x
n
S = s
n
— loop control allowed the summation S to be programmed iteratively on the
basis of the following three equations
s
1
= x
1
,
s
i+1
= s
i
+ x
i+1
(i = 1, 2, . . . , n − 1),
S = s
n
.
The sequence of values i = 1, 2, . . . , n − 1 indicates that s
i+1
= s
i
+ x
i+1
had to
be performed for each value of i from 1 through n−1. The crux was that only one
computer instruction was stored to correspond to s
i+1
= s
i
+ x
i+1
. The machine
modified the addition instruction to perform the addition over and over again
the required number of times. The machine furthermore decided, all by itself,
when it had performed the addition the proper number of times [58, p.2-46]. In
other words, the programmer did not have to specify up front the number of
times the addition had to be carried through; instead, the “thinking” machine
— using Berkeley’s terminology [19, p.5] — could do this autonomously.
28
Kleene’s Introduction to Metamathematics
Practically oriented as they were, Carr and Gorn were also theoretically in-
clined, trying hard to make connections between their loop controlled machines
and mathematical logic. One book that clearly had an impact on their thinking
was Kleene’s Introduction to Metamathematics [64]. According to Carr, auto-
matic programmers had to deal with “the generation of systems rather than the
systems themselves”, and with “the ‘generation’ of algorithms by other algo-
rithms”, and hence with concepts akin to metamathematics [22, p.89]. Gorn,
in turn, described the machine requirement of common storage by saying that
“the language of the machine includes its own syntax, so that not only may the
machine be directed to tell us something, but it may also be directed to tell us
something about the way in which it tells us something”. For example, the ma-
chine could, besides generating the output of a calculation, also print out “the
storage locations chosen for the key commands and variables”, and, by doing
so, tell the programmer something about the way it computes (i.e., the way in
which it tells something). Gorn linked this to the “quasi-paradoxical properties,
as revealed in the researches of G¨
odel” [53, p.75–76].
X
Gorn continued appropriating ideas from metamathematics in a 1955 tech-
nical report, which he distributed to several colleagues, including Carr, Perlis,
Juncosa, Young, Herman Goldstine, and the logician Barkley Rosser [54]. On
the one hand, Gorn remarked, every computational procedure by an automatic
machine “must follow the steps of a constructive proof”.
29
On the other hand,
Gorn argued, “every constructive existence proof, with a few slight modifica-
tions, provide[s] a possible method of solution. (What we have just said is an
intuitive way of stating ‘Turing’s Thesis’. See reference [64])”.
30
Later on in his report, Gorn described an “ideal general purpose machine”
as one that is
effectively equivalent to a ‘universal Turing machine.’ (See reference [103]. The
universal Turing machine can copy the description of any special purpose Tur-
ing machine and imitate its operation by means of these copied specifications.)
By referring to a universal Turing machine, Gorn made clear that, to him in
1955, an “ideal” machine had unlimited storage capacity. Existing machines
were, however, not ideal in that they could not store exact real numbers but
only finite approximations of them. This deficiency, Gorn noted, could, without
additional precaution on behalf of the programmer, easily result in computing
errors.
31
To summarize, by 1955, Carr and Gorn were, at times, viewing a universal
Turing machine as a conceptual abstraction of a loop controlled computer.
“General-Purpose Machines”
In a 1956 booklet The electronic brain and what it can do [57], Gorn distinguished
between “older machines” in which “switches were set externally” and manually,
and the newer “four-address machines” like the EDVAC in which “each order
contains a part that automatically sets the switches for the carrying of the next
order”. The bottom line was never having to plug or unplug a single wire ever
again. Because orders were coded as numbers, these newer machines gained “a
flexibility and power that were undreamed of only a few short years ago” [57,
p.42, 58].
A year later, Gorn wrote a letter to his good friend Perlis who, as editor-in-
chief of the Communications of the ACM, published the letter on the first page of
the very first issue of the magazine [93]. In that letter, Gorn continued reflecting
on EDVAC’s design which, he said, had “introduced the major step forward”
in computer history “of having a common variable storage of instructions and
data” [93, p.2].
32
The “manipulation of hardware” had been replaced by the
“programming of coded symbols”.
In his letter to Perlis, Gorn also recalled how “it has been recognized that
all general purpose machines, from Edvac on, are essentially equivalent, any
one being capable of the same end results as any other, with varying degrees
of efficiency”.
33
This recognition did not happen overnight, nor did it become
common knowledge to all researchers in automatic programming.
34
It was few
men like Carr and Gorn who repeatedly, during the 1950s, tried to see the