XXIV
that same symposium). And, as Nofre et al. point out, the words “programming
language” in fact only entered the computing arena during the mid-1950s [85].
Nofre et al. state that by the early 1950s the translation from a mathematical
language to machine language had already “become a central metaphor used to
make sense of the activity of programming”. They then refer to an illustration
made by Hopper, an illustration in which a robot translates “Language X” into
“Language A”, but it should also be stressed that this illustration dates from
October 1958. No evidence has been provided that Hopper described X as a
language in 1954.
23
Nofre et al. describe the origins of the idea of a universal code, going back
to C.W. Adams of MIT in 1951.
24
Note that Gorn made this implication at a time when computer storage was
limited.
25
As the 1950s progressed, Carr and Gorn refined their expositions. For exam-
ple, “compilers” did “not absolutely require their machines to possess common
storage of instructions and the data they process” but they were “considerably
simpler when their machines” did have this property [55, p.254, my emphasis].
26
This fourth requirement, by itself, already indicates quite strongly that Carr
and Gorn were not pursuing logical minimalism `
a la Turing and van der Poel
(cf. De Mol & Bullynck [76]).
27
These properties were sufficient (but not necessary) for realizing a practical
version of a universal Turing machine. Note, again, that I am making the theo-
retical connection here instead of the historical actors. Carr and Gorn had the
knowledge to defer this conclusion themselves, but I conjecture that they were
not reasoning along these lines at all, during the first half of the 1950s (and
possibly throughout their whole careers).
28
Machines that were not based on the principle of common storage of num-
bers and instructions were instructed differently than those that did possess loop
control. The Swiss numerical analyst Rutishauser, for example, used (a modifi-
cation of) Zuse’s Z4 machine through part of the 1950s, a machine that did not
possess loop control. Although more research on Rutishauser is required, it is
already interesting to note here that only by 1963 did he see the need to program
recursively in his field of numerical analysis [101] (see also [39, 41]).
29
That is, in the finitist terms set forth by “intuitionist mathematicians such
as Kronecker, Brouwer, and Weyl” [54].
30
Some of Gorn’s 1955 insights were later published in his 1957 paper [55].
31
For Gorn, infinite memory represented the simplest case of analysis. This
was similar to Curry’s reasoning (cf. [33] [1, p.65]) and unlike van der Poel’s
XXV
insistence to view results from mathematical logic solely in the setting of finite
machines (cf. [45, 107]).
32
Besides Gorn in 1956, also Berkeley in 1958 discussed the importance of
machines that have “loop control”, and hence “think”, compared to the “non-
thinking machines” [19, p.5]. Contrast these observations with Akera’s claim that
the historiographical interest in the “stored-program concept” really only started
around 1964 with the emergence of theoretical computer science [8, p.120].
33
Notice that Gorn excluded the “older machines”, such as the ENIAC. He was
implicitly referring to all loop controlled computers and to the principle of a
common store in particular. According to Gorn, those machines provided the
flexibility for the development of a universal code.
34
Moreover, note that Gorn’s recognition was, strictly speaking, incorrect. We
know, today, that also many of the “older machines” were “Turing complete” as
well. For example, it suffices to “wire in” the program of a universal Turing ma-
chine and then represent any (to-be-simulated) Turing machine program, along
with working store, on punched paper tape — tape which serves both as input
and output for the calculation at hand. It is not a theoretical obstacle that the
punched holes cannot be removed (cf. [41, p.22]).
An anonymous reviewer has commented that
[E]ven if ENIAC was later identified as being Turing complete, the important
historical thing is that the first machines to be thought of as Turing com-
plete, and to inspire the integration of Turing’s work into the growing field of
computer science, were modeled on EDVAC.
This assessment by the reviewer seems fair with regard to Gorn’s career. I have
not given evidence to suggest that the claim holds in its general form; i.e., that
it holds for other actors like von Neumann, van der Poel, Turing, and Wang. I
would not be surprised if von Neumann did connect the ENIAC to Turing’s 1936
universal machine around 1945, thereby (partially) contradicting the reviewer’s
comment in its general form.
In this regard I also present Priestley’s words which I think nicely summarize
a complementary part (of the total discussion):
None of the writings originating from the Moore School group mention a logical
or theoretical rationale for the introduction of the stored-program concept. It
remains a possibility, of course, that the idea was suggested by von Neumann’s
knowledge of Turing’s work, but even if that was so, its inclusion in the design
was justified by practical, not theoretical, arguments. A logical pedigree for the
idea would not, on its own, have been sufficient to ensure its incorporation in
the design without a detailed examination of its engineering implications. [94,
p. 138–139]