Discovering Dennis Ritchie’s Lost Dissertation

A look at the history of Dennis Ritchie’s dissertation. Via a Hacker News Discussion. Article includes links to two versions: his personal copy and one by Albert Meyer.

On Ritchie’s personal web pages at the Labs (still maintained by Nokia, the current owner), he writes with characteristic dry deprecation of his educational journey into computing:

“I . . . received Bachelor’s and advanced degrees from Harvard University, where as an undergraduate I concentrated in Physics and as a graduate student in Applied Mathematics . . . The subject of my 1968 doctoral thesis was subrecursive hierarchies of functions. My undergraduate experience convinced me that I was not smart enough to be a physicist, and that computers were quite neat. My graduate school experience convinced me that I was not smart enough to be an expert in the theory of algorithms and also that I liked procedural languages better than functional ones.”1

Whatever the actual merits of these self-evaluations, his path certainly did lead him into a field and an environment in which he made extraordinary contributions.
[…]
Notes

  1. Dennis M. Ritchie bio, Bell Labs
1 Like

Very interesting article. This dissertation comes, it seems, from the time of the bifurcation between mathematics and computer science: mathematics having investigated what it possible to compute, computer science has an interest in what it is practical to compute.

The abstract is very clear, which is a good sign, and something I really appreciate:

Anyone familiar with the theory of computability will be aware that practical conclusions from the theory must be drawn with caution. If a problem can theoretically be solved by computation, this does not mean that it is practical to do so. Conversely, if a problem is formally undecidable, this does not mean that the subcases of primary interest are impervious to solution by algorithmic methods.

In the next section we describe such a class of programs, called “Loop programs.” Each Loop program consists only of assignment statements and iteration (loop) statements, the latter resembling the DO statement of FORTRAN, and special cases of the FOR and THROUGH statements of ALGOL and MAD. The bound on the running time of a Loop program is determined essentially by the length of the program and the depth of nesting of its loops.

1 Like