The Dawn of Software Engineering: from Turing to Dijkstra
This is the landing page of the eponymous book. The publisher also has a page about the book where you can find a very concise summary, some endorsements, and technical details. Feel free to leave feedback on the book as a comment to this post.
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 greatly 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.
Frequently and less frequently Asked Questions
Q1: Do you claim that the idea of the universal machine should not be attributed to Turing?
Q2: It seems von Neumann actually read Turing’s 1936 paper. Do you agree?
A2: Yes. In my book I even support the statement that von Neumann and Turing were exceptional because they saw the connection between the latter's 1936 paper and real computing machines during the mid-1940s.
Q3: Turing actually worked on two teams implementing computers, the one in Manchester created the first memory stored program computer. Turing actually wrote the first ever programmers manual for this computer. Is this consistent with your statement that Turing's influence was more in programming than in building computers?
A3: Yes this is consistent although I would suggest avoiding making claims of the form "the first X". Michael R. Williams shows that such claims can easily be refuted. It is extremely hard to show that something is the first. It is very easy to show that something is not the first. I strongly recommend reading Michael R. Williams's paper "The First Computer".
Of course, Turing helped build computing machines. But this is not where his fame came from when the first Turing award was handed out in 1966.
Q4: Do you claim that Dijkstra became famous because of the Halting Problem?
A4: No, I don't claim that. I also do not claim that the Turing Award was given to Dijkstra because he thoroughly understood all of Turing's work. My educated guess is that Dijkstra never studied Turing's 1936 paper.
Q5: You make different claims about undecidability and universality. Can you elaborate?
A5: I do not claim that undecidability is essential to programming. I do claim that it influenced experienced programmers. I claim that Turing's notion of universality influenced the field of automatic programming during the 1950s. Some of the historical actors in automatic programming (cf. Gorn, Carr, Perlis) were or later became major players in the ACM and I implicitly claim in my book that this is why the annual Turing Award was awarded in 1966 and onwards. Turing was honored by programmers because of the impact the universal machine had on their discipline.
No errors are known. If you find one, feel free to report it as a comment to this post.
My review of George Dyson's book Turing's Cathedral is now available in video format.