The Advent of Recursion & Logic in Computer Science
Karel Van Oudheusden
â€“alias Edgar G. Daylight
Abstract:
The history of computer science can be viewed from a number of
disciplinary perspectives, ranging from electrical engineering to
linguistics. As stressed by the historian Michael Mahoney, different
'communities of computing' had their own views towards what could be
accomplished with a programmable computing machine. The mathematical
logicians, for instance, had established what programmable computing
machines with unbounded resources could not do, while the switching
theorists had showed how to analyze and synthesize circuits. "But no
science accounted for what finite machines with finite, random access
memories could do or how they did it. That science had to be created."
-Mahoney [78, p.6].
With the advent of the programmable computing machine, new communities
were created, such as the community of numerical analysts. Unlike the
logicians and the electrical engineers, the numerical analysts, by
their very profession, took programming seriously. Several of them
gradually became more involved in seeking specific techniques to
overcome the tediousness in programming their machines. One such, and
important, technique was the recursive procedure. While logicians had
been well-acquainted with the concept of recursion for quite some
time, and the development of mathematical logic had, itself,
contributed to the advent of the programmable computing machine, it is
unclear whether the idea of the recursive procedure entered the arena
of programming languages via the logic community. More generally, it
is unclear how and to what extent, exactly, ideas from logic have
influenced the computer pioneers of the 1950-60s.
Both unclarities, described above, are addressed in this
thesis. Concerning the first unclarity, the recursive procedure
entered the arena of programming languages in several ways by
different people. Special attention will be paid to the pioneer Edsger
W. Dijkstra who, in 1960, received world-wide recognition for
implementing recursive procedures for the ALGOL60 programming
language, i.e. by building a compiler. While recursive procedures
remained highly controversial during the 1960s, Dijkstra was one of
its few strong advocates. His views, led by linguistic ideals, were in
sharp contrast to those that were led by specific machine
features. With respect to the second unclarity, it will be shown that
several ideas from logic that did influence some computer pioneers,
were primarily received indirectly and without full comprehension. In
fact, these pioneers, in the aftermath of their successes, openly
stressed that they were not logicians and had not completely
understood all of the logic underlying their sources of
inspiration. Similarly, the logicians, themselves, did not initially
grasp the connection between Turing's 1936 paper and the programmable
computing machine either. Finally, emphasis will be laid on Dijkstra's
ability, in later years, to connect the unsolvability of Turing's
Halting Problem with the practical engineering problems that his
community faced.
Keywords: