The Dawn of Software Engineering: from Turing to Dijkstra

The Dawn of Software Engineering front coverThis 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?

A1: No.

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. I also do not assert that the Turing Award was handed out 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 assert that it influenced experienced programmers. I write 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 handed out  in 1966 and onwards. Turing was honored by programmers because of the impact the universal machine had on their discipline.



If you find an error, feel free to report it as a comment to this post.

Turing's Cathedral

My review of George Dyson's book Turing's Cathedral is now available in video format.


Book presentation in Cambridge

I will present my book on Wednesday, June 20th at 11:15 am.

  • Venue: Session 4 of the CiE conference
  • Location: New Museum Site, ASB
  • Address: Pembroke St., Cambridge, Cambridgeshire CB2 3QZ

Book presentation in Manchester

I will present my book on Sunday June 24th between 12:30 and 14:00 at the Turing-100 conference in Manchester.

Impossibility results are not welcome

In support of the general theme of your book, the following words from October 1982 by Edsger W. Dijkstra (EWD841, p.4) are noteworthy:

As any logician knows - since Godel and Turing - there are such things as provably undecidable questions and provably uncomputable functions. People that don't know that will believe anything. There is the lovely story of the IBM employee - I shall not divulge his name - whose research proposal mentioned uncomputable functions. When the proposal was discussed he was asked in disbelief "Do you mean to say that there exist functions that our equipment cannot compute?" upon which, tongue in cheek, the scientist answered: "Indeed, in their current form IBM computers cannot compute all functions", upon which answer his proposal was approved! In a way, the 30's were more enlightened than the 60's, 70's, and perhaps the 80's. In my very young days, impossibility results could be published and were not completely ignored. With the increased economic significance of technology, such scientific results are now too unwelcome.

Dutch elegance?

Is there really such a thing as Dutch elegance? According to Alan J. Perlis there is. In his words:

The European style has always worked very hard at producing elegant constructions --- devices that fit. Holland, for example, is a very small country, and when going to Holland one finds that the instruments they use are also small. Russia is an enormous country; they use large instruments. So it never surprised me that the Russians decided to build a compiler once that would simultaneously compile PL/1, Cobol, and Algol. Holland gave us Edsger Dijkstra, with structured programming and natural Dutch construction.

Source: p.555 in J.A.N. Lee's International Biographical Dictionary of COMPUTER PIONEERS, 1995.