From Turing to Dijkstra, Part II
In a previous post I scrutinized Moshe Y. Vardi's account of Church and Turing. During the past months I refined that post and added it to the first chapter of my recent book The Dawn of Software Engineering: from Turing to Dijkstra. I now present a summary of my book and briefly explain how Turing's work influenced Dijkstra's thinking. The book has just appeared in print.
Turing's involvement with computer building was popularized in the 1970s and later. Most notable are the books by Brian Randell (1973), Andrew Hodges (1983), and Martin Davis (2000). A central question is whether John von Neumann was influenced by Turing's 1936 paper when he helped build the EDVAC machine, even though he never cited Turing's work. This question remains unsettled up till this day. As remarked by Charles Petzold, one standard history barely mentions Turing, while the other, written by a logician, makes Turing a key player.
Contrast these observations then with the fact that Turing's 1936 paper was cited and heavily discussed in 1959 among computer programmers. An historical investigation of Turing's influence on computing shows that Turing's 1936 notion of universality became increasingly relevant among computer programmers during the 1950s. In 1966, the first Turing award was given to a computer programmer, not a computer builder, as were several subsequent Turing awards. In short, Turing had already acquired fame and recognition in the emerging field of software, well before his alleged role in the advent of the `first universal computer' was publicized.
The aforementioned historical investigation is described in my book The Dawn of Software Engineering: from Turing to Dijkstra, published by Lonely Scholar in April 2012. My central thesis is that Turing's influence was felt more in programming after his death than in computer building during the 1940s. Moreover, Turing's influence only emerged gradually and often without full comprehension. Many first-generation programmers did not read Turing's 1936 paper, let alone understand it. Those computer practitioners who did become acquainted with Turing's 1936 work during the 1950s–1960s received it in at least one of the following three ways:
- The `Turing machine' was viewed as a model for a stored-program computer. Some researchers tried to build `Turing machines' during the 1950s, i.e. after the first universal computers were already available.
- Turing's notion of universality helped lay the foundations of programming.
- The unsolvability of the Halting Problem helped researchers lay bare certain limitations in programming. The 1972 Turing award winner, Edsger W. Dijkstra, was definitely one of the first to do so.