# Christopher Strachey

Christopher S. Strachey (/ˈstreɪtʃi/; 16 November 1916 – 18 May 1975) was a British computer scientist. He was one of the founders of denotational semantics, and a pioneer in programming language design and computer time-sharing. He has also been credited as possibly being the first developer of a video game and for coining terms such as polymorphism and referential transparency that are still widely used by developers today. He was a member of the Strachey family, prominent in government, arts, administration, and academia.

## Early life and education

Christopher Strachey was born on 16 November 1916 to Oliver Strachey and Rachel (Ray) Costelloe in Hampstead, England. Oliver Strachey was the son of Richard Strachey and the great-grandson of Sir Henry Strachey, 1st Baronet. His elder sister was the writer Barbara Strachey. In 1919, the family moved to 51 Gordon Square. The Stracheys belonged to the Bloomsbury Group whose members included Virginia Woolf, John Maynard Keynes and Strachey's uncle Lytton Strachey. At 13, Strachey went to Gresham's School, Holt where he showed signs of brilliance but in general performed poorly. He was admitted to King's College, Cambridge (the same college as Alan Turing) in 1935 where he continued to neglect his studies. Strachey studied mathematics and then transferred to physics. At the end of his third year at Cambridge, Strachey suffered a nervous breakdown, possibly related to coming to terms with his homosexuality. He returned to Cambridge but managed only a "lower second" in the Natural Sciences Tripos.

## Career

Unable to continue his education, Strachey joined Standard Telephones and Cables (STC) as a research physicist. His first job was providing mathematical analysis for the design of electron tubes used in radar. The complexity of the calculations required the use of a differential analyser. This initial experience with a computing machine sparked Strachey's interest and he began to research the topic. An application for a research degree at the University of Cambridge was rejected and Strachey continued to work at STC throughout the Second World War. After the war he fulfilled a long-standing ambition by becoming a schoolmaster at St Edmund's School, Canterbury, teaching mathematics and physics. Three years later he was able to move to the more prestigious Harrow School in 1949, where he stayed for three years.
In January 1951, a friend introduced him to Mike Woodger of the National Physical Laboratory (NPL). The lab had successfully built a reduced version of Alan Turing's Automatic Computing Engine (ACE) the concept of which dated from 1945: the Pilot ACE. In his spare time, Strachey developed a preliminary version of a program for the game of draughts ("checkers" in American English) in May 1951. This may have been the first video game. The game completely exhausted the Pilot ACE's memory. The draughts program failed due to program errors when it first ran at NPL on 30 July 1951. When Strachey heard about the Manchester Mark 1, which had a much bigger memory, he asked his former fellow-student Alan Turing for the manual and transcribed his program into the operation codes of that machine by around October 1951. By the summer of 1952, the program could "play a complete game of Draughts at a reasonable speed". While he did not give this game a name, Noah Wardrip-Fruin named it "M. U. C. Draughts."
Strachey programmed the first Computer music in England – the earliest recording of music played by a computer: a rendition of the British National Anthem "God Save the King" on the University of Manchester's Ferranti Mark 1 computer, in 1951. Later that year, short extracts of three pieces were recorded there by a BBC outside broadcasting unit: "God Save the King", "Baa, Baa, Black Sheep", and "In the Mood". Researchers at the University of Canterbury, Christchurch restored the acetate master disc in 2016 and the results may be heard on SoundCloud.
During the summer of 1952, Strachey programmed a love letter generator for the Ferranti Mark 1 that is known as the first example of computer-generated literature.
In May 1952, Strachey gave a two-part talk on "the study of control in animals and machines" ("cybernetics") for the BBC Home Service's Science Survey programme.
Strachey worked for the National Research Development Corporation (NRDC) from 1952 to 1959. While working on the St. Lawrence Seaway project, he was able to visit several computer centres in the United States and catalogue their instruction sets. Later, he worked on programming both the Elliott 401 computer and the Ferranti Pegasus computer. Together with Donald B. Gillies, he filed three patents in computing design, including the design of base registers for program relocation. He also worked on the analysis of vibration in aircraft, working briefly with Roger Penrose.
In 1959, Strachey left NRDC to become a computer consultant working for NRDC, EMI, Ferranti, and other organisations on several wide-ranging projects. This work included logical design for computers, providing autocode and, later, the design of high-level programming languages. For a contract to produce the autocode for the Ferranti Orion computer, Strachey hired Peter Landin who became his one assistant for the duration of Strachey's consulting period.
Strachey developed the concept of time-sharing in 1959. He filed a patent application in February that year and gave a paper entitled "Time Sharing in Large Fast Computers" at the inaugural UNESCO Information Processing Conference in Paris where he passed the concept on to J. C. R. Licklider. This paper is credited by the MIT Computation Center in 1963 as "the first paper on time-shared computers".
In 1962, while remaining a consultant, he accepted a position at the University of Cambridge.
In 1965, Strachey accepted a position at the University of Oxford as the first director of the Programming Research Group and later the university's first professor of computer science and fellow of Wolfson College, Oxford. He collaborated with Dana Scott.
Strachey was elected as a distinguished fellow of the British Computer Society in 1971 for his pioneering work in computer science.
In 1973, Strachey (along with Robert Milne) began to write an essay submitted to the Adams Prize competition, after which they continued work to revising it into book form. Strachey can be seen and heard in the recorded Lighthill debate on AI (see Lighthill report).
He developed the Combined Programming Language (CPL). His influential set of lecture notes Fundamental Concepts in Programming Languages formalised the distinction between L- and R- values (as seen in the C programming language). Strachey also coined the term currying, although he did not invent the underlying concept.
He was instrumental in the design of the Ferranti Pegasus computer.
The macro language m4 derives much from Strachey's GPM (General Purpose Macrogenerator), one of the earliest macro expansion languages.
Strachey contracted an illness diagnosed as jaundice, which after a period of seeming recovery returned, and he died of infectious hepatitis on 18 May 1975. After his death, Strachey was succeeded by Sir Tony Hoare as Head of the Programming Research Group at Oxford, starting in 1977.

## Legacy

The Department of Computer Science at the University of Oxford has a Christopher Strachey Professorship of Computing, which has been held by the following:
* Sir Tony Hoare FRS (1988–2000)
* Samson Abramsky FRS (2000–2021)
* Nobuko Yoshida (2022 onwards)
In November 2016, a Strachey 100 event was held at Oxford University to celebrate the centenary of Strachey's birth, including a viewing at the Weston Library in Oxford of the Christopher Strachey archive held in the Bodleian Library collection.

## Publications

* Strachey, Christopher (1952). "Logical or Non-Mathematical Programmes". Proceedings of the 1952 ACM national meeting. Toronto: ACM. pp. 46–49. doi:10.1145/800259.808992.
* Strachey, Christopher (1954). "The "Thinking" Machine". Encounter. pp. 25–31.
* Strachey, Christopher (1959). "Programme-Controlled Time Sharing". Proceedings of the IEE - Part B: Electronic and Communication Engineering. 106 (29): 462. doi:10.1049/pi-b-2.1959.0311.
* Strachey, Christopher (1959). "On Taking the Square Root of a Complex Number". The Computer Journal. 2 (2): 89. doi:10.1093/comjnl/2.2.89.
* Strachey, Christopher (1959). "Time Sharing in Large, Fast Computers". Proceedings of the 1st International Conference on Information Processing. Paris: UNESCO. pp. 336–341.
* Strachey, Christopher (1960). "Two Contributions to the Techniques of Queuing Problems". The Computer Journal. 3 (2): 114–116. doi:10.1093/comjnl/3.2.114.
* Strachey, Christopher (1961). "Bitwise Operations". Communications of the ACM. 4 (3): 146. doi:10.1145/366199.366254. S2CID 7359297.
* Strachey, Christopher; Wilkes, Maurice (1961). "Some Proposals for Improving the Efficiency of ALGOL 60". Communications of the ACM. 4 (11): 488–491. doi:10.1145/366813.366816. S2CID 8757176.
* Strachey, Christopher; Francis, John (1961). "The Reduction of a Matrix to Codiagonal Form by Eliminations". The Computer Journal. 4 (2): 168–176. doi:10.1093/comjnl/4.2.168.
* Strachey, Christopher (1962). "Book Reviews". The Computer Journal. 5 (2): 152–153. doi:10.1093/comjnl/5.2.152.
* Barron, David; Buxton, John; Hartley, David; Nixon, Eric; Strachey, Christopher (1963). "The Main Features of CPL". The Computer Journal. 6 (2): 134–143. doi:10.1093/comjnl/6.2.134.
* Strachey, Christopher (1965). "An Impossible Program". The Computer Journal. 7 (4): 313. doi:10.1093/comjnl/7.4.313.
* Strachey, Christopher (1965). "A General Purpose Macrogenerator". The Computer Journal. 8 (3): 225–241. doi:10.1093/comjnl/8.3.225.
* Strachey, Christopher (1966). "System Analysis and Programming". Scientific American. Vol. 215, no. 3. pp. 112–127.
* Strachey, Christopher (1966). "Towards a Formal Semantics". Proceedings of the IFIP Working Conference on Formal Language Description Languages. Amsterdam: North Holland. pp. 198–220.
* Strachey, Christopher (1967). Fundamental Concepts in Programming Languages (Technical report). Lecture notes for the International Summer School in Computer Programming at Copenhagen. Also: Strachey, Christopher (2000). "Fundamental Concepts in Programming Languages". Higher-Order and Symbolic Computation. 13 (1–2): 11–49. doi:10.1023/A:1010000313106. S2CID 14124601.
* Scott, Dana; Strachey, Christopher (1971). Toward a Mathematical Semantics for Computer Languages (Technical report). Oxford University Computing Laboratory, Programming Research Group. PRG06. Also: Scott, Dana; Strachey, Christopher (1971). "Toward a Mathematical Semantics for Computer Languages". Proceedings of the Symposium on Computers and Automata. New York: Polytechnic Institute of Brooklyn. pp. 19–46.
* Strachey, Christopher (1972). "Varieties of Programming Language". Proceedings of the International Computing Symposium. Venice: Cini Foundation. pp. 222–233. Also: Strachey, Christopher (1973). The Varieties of Programming Language (Technical report). Oxford University Computing Laboratory, Programming Research Group. PRG10.
* Stoy, Joseph; Strachey, Christopher (1972). "OS6—An Experimental Operating System for a Small Computer. Part 1: General Principles and Structure". The Computer Journal. 15 (2): 117–124. doi:10.1093/comjnl/15.2.117.
* Stoy, Joseph; Strachey, Christopher (1972). "OS6—An Experimental Operating System for a Small Computer. Part 2: Input/Output and Filing System". The Computer Journal. 15 (3): 195–203. doi:10.1093/comjnl/15.3.195.
* Strachey, Christopher; Stoy, Joseph (1972). The Text of OSPub (Technical report). Oxford University Computing Laboratory, Programming Research Group. PRG09.
* Strachey, Christopher; Wadsworth, Christopher (1974). Continuations: A Mathematical Semantics for Handling Full Jumps (Technical report). Oxford University Computing Laboratory, Programming Research Group. PRG11. Also: Strachey, Christopher; Wadsworth, Christopher (2000). "Continuations: A Mathematical Semantics for Handling Full Jumps". Higher-Order and Symbolic Computation. 13 (1–2): 135–152. doi:10.1023/A:1010026413531. S2CID 10673265.
* Milne, Robert; Strachey, Christopher (1976). A Theory of Programming Language Semantics. New York: Springer. ISBN 978-1-5041-2833-9.