Sir C. Antony R. Hoare
Born 11 January 1934, Colombo, Sri Lanka
ACM A.M. Turing Award (1980) “for his fundamental achievements in the definition and development of programming.”
Tony Hoare was born in the capital of former Ceylon (now Sri Lanka) as the son of British parents. His father worked as a civil servant in Ceylon and joined in 1945 the British Civil Service; he finally became a teacher. Tony Hoare attended school in Ceylon and in Africa. In 1945 his family moved to England, and he continued his education in Canterbury and Oxford. His undergraduate studies were classical subjects – Latin, Greek, and especially philosophy – and he developed a special interest in Logic which led him into Statistics and the foundation of Mathematics. On graduation in 1956, he spent his two-year military service learning Russian in the Royal Navy. In 1958 he took a Certificate in Statistics at Oxford. In 1959, he was a visiting student at Moscow State University, where he pursued an interest in computer-aided translation of human language. During this time, Hoare developed the famous sorting algorithm quicksort. Back in England, he was recruited by Elliott Brothers, a small computer manufacturing company (1960). He worked on one of the early implementations of ALGOL 60, a programming language designed in 1960 by an international committee of experts.
There he met his future wife who worked as a programmer on the same project. She was, according to Hoare, much more disciplined than he was. Later, his industrial research projects were cancelled due to company changes, and so in 1968 Hoare took over the Chair of Computing Science at Queen’s University in Belfast. In 1977 he returned to Oxford, where he continued the construction of the Programming Research Group begun by his late predecessor, Christopher Strachey. Close contact with companies has always been a special concern of Hoare’s, particularly with respect to the education of young people. He established a number of undergraduate and Master’s degrees at Oxford University, including an external Master for software engineers in industry. He continued to act as an industrial consultant and initiated joint research projects. Even after his retirement in 1999, Tony Hoare is still a Visitor at Microsoft Research and an Honorary Member of the Cambridge University Computing Laboratory.
In 2000 Tony Hoare was knighted by the Queen for his contributions to research and education in computer science. In the same year he also received the Kyoto Prize for Information Science, and in 2007 the Friedrich L. Bauer Prize. In 2011 he was awarded the John von Neumann Medal. Since 1982, Hoare has been Fellow of the Royal Society, and since 2005, Fellow of the Royal Academy of Engineering. He also holds a dozen honorary doctorates from Europe and the US.
In his spare time, Hoare enjoys reading, listening to music, walking, traveling, and solving jig-saw puzzles.
Hoare became famous in the professional world for his work on the formalisation of computer programs, and his essay of 1969, ‘An Axiomatic Basis for Computer Programming’, became a milestone in the literature for programmers. Hoare’s goal is that design of computer languages should be based on axioms, and that programs written in these languages should be based on clear specifications. This will make their verification as easy as possible. In the postulated axiomatic system, Hoare brought in his experience from Algol 60.
In the 1970s, Hoare developed a theoretical language, Communicating Sequential Processes (CSP), which made it possible to formulate components of computer programs as parallel running processes. CSP also specifies the interactions between these processes. It was implemented in the architecture of the Transputer, a successful microprocessor designed and manufactured in Europe.
However, probably the most popular and widely used of Hoare’s inventions is ‘quicksort’, an algorithm that can quickly sort numbers. The idea is as simple as it is ingenious: a single number, selected at random from the set, is used to split the set into two parts, the first part containing only numbers that are smaller than the number, the rest falling into the second part. Quicksort can then be run again on each of the two subsets separately. He showed that on average, this algorithm is one that has the best possible running time for a sorting algorithm.