Tony Hoare on the Turing Centenary
Can computers understand their own programs?
From my earliest days as a student of philosophy and classics at Merton College, Oxford, I was attracted into computing by the prospect that it would shed light on some of the age-old problems of philosophy. These include investigation of the scope and limits of human understanding, intelligence, and reasoning.
The early computer scientist Alan Turing, more famous for his work as a mathematician and cryptanalyst, invented the stored-program digital computer in 1936, with the specific purpose of defining clear limits to the understanding a computer can have of its own programs. He proved that a computer cannot always reliably answer a most important question: Will its own program ever terminate? This impossibility theorem has ever since lain at the foundation of computer science.
In 1947, Turing gave a much more positive answer to definition of the range of computer understanding. He showed how a computer could often reason correctly about the correctness of its own programs. My entire research career has been devoted to the development of Turing’s method for reasoning about programs. I now see his method used in the worldwide software industry to reduce the cost of testing programs and the risk of residual program errors in service.
With further research and development, I’m confident that computers will routinely be able to answer a programmer’s general questions about program properties and behaviour at all stages of program design, development, and evolution. The collaboration of the programmer with the computer will reveal that the computer understands the details of the program, perhaps not perfectly, but certainly better than the programmer. (But the programmer understands much better the purpose of the program!).
I suggest that Turing would accept this test as a relevant analogue (in the specialised field of software engineering) of his famous Turing test for more general computer intelligence. But one question that remains for philosophical speculation is: Will a computer ever realise that it is reasoning about itself?