Стрэчи, Кристофер
Кри́стофер С. Стрэ́чи (англ. Christopher S. Strachey; 16 ноября 1916, Хампстед, Камден, Большой Лондон, Англия, Великобритания — 18 мая 1975, Оксфорд, Англия, Великобритания) — британский учёный в области информатики[1][2]. Пионер в области проектирования языков программирования, один из основателей денотационной семантики и компьютерного разделения времени[3]. Ввёл несколько терминов, широко используемых в информатике, включая полиморфизм и ссылочную прозрачность[4].
Общие сведения
Биография
Кристофер С. Стрэчи родился в семье Оливера и Рэй Стрэчи (урождённой Костелло) в Хэмпстеде, Англия. Оливер Стрэчи был сыном Ричарда Стрэчи и правнуком сэра Генри Стрэчи, 1-го баронета. Его старшей сестрой была писательница Барбара Стрэчи. В 1919 году семья переехала на Гордон-сквер, 51. Семья Стрэчи принадлежала к Блумсберийскому кружку, в который входили Вирджиния Вулф, Джон Мейнард Кейнс и дядя Стрэчи Литтон Стрэчи. В возрасте 13 лет Стрэчи поступил в школу Грешема, где проявил признаки гениальности, но в целом учился плохо. В 1935 году он поступил в Королевский колледж Кембриджа (тот же колледж, что и Алан Тьюринг), где продолжал пренебрегать учёбой. Стрэчи изучал математику, а затем перевёлся на физику. В конце третьего курса в Кембридже Стрэчи перенёс нервный срыв. Он вернулся в Кембридж, но получил лишь оценку «ниже второго класса» на экзаменах Natural Sciences Tripos[5].
Карьера
Не имея возможности продолжить образование, Стрэчи присоединился к компании Standard Telephones and Cables (STC) в качестве физика-исследователя. Его первой работой было математическое обеспечение проектирования электронных ламп, используемых в радарах. Сложность вычислений потребовала использования дифференциального анализатора. Этот первоначальный опыт работы с вычислительной машиной пробудил у Стрэчи интерес, и он начал исследовать эту тему. Заявка на получение исследовательской степени в Кембриджском университете была отклонена, и Стрэчи продолжал работать в STC на протяжении всей Второй мировой войны. После войны он осуществил свою давнюю мечту, став школьным учителем в школе Святого Эдмунда в Кентербери, где преподавал математику и физику. Три года спустя, в 1949 году, он смог перейти в более престижную школу Харроу, где проработал три года.
В январе 1951 года друг познакомил его с Майком Вуджером из Национальной физической лаборатории (NPL). Лаборатория успешно построила уменьшенную версию Автоматической вычислительной машины (ACE) Алана Тьюринга, концепция которой датировалась 1945 годом: Pilot ACE. В свободное время в мае 1951 года Стрэчи разработал видеоигру в шашки. Возможно, это была первая видеоигра. Игра полностью исчерпала память Pilot ACE. Программа для игры в шашки завершилась неудачей из-за программных ошибок при первом запуске в NPL 30 июля 1951 года[6]. Когда Стрэчи услышал о Манчестерском Марке I, который имел гораздо больший объём памяти, он попросил у своего бывшего сокурсника Алана Тьюринга руководство и перевёл свою программу в коды операций этой машины примерно к октябрю 1951 года. К лету 1952 года программа могла «играть в полную игру в шашки с разумной скоростью»[7]. Хотя он не дал этой игре названия, Ноа Уордрип-Фруин назвал её «M. U. C. Draughts».
Стрэчи запрограммировал первую компьютерную музыку в Англии — самую раннюю запись музыки, сыгранной компьютером: исполнение британского национального гимна «Боже, храни короля» на компьютере Ferranti Mark 1 Манчестерского университета в 1951 году. Позже в том же году подразделение внешнего вещания BBC записало там короткие отрывки трёх произведений: «Боже, храни короля», «Baa, Baa, Black Sheep» и «In the Mood». Исследователи из Кентерберийского университета в Крайстчерче восстановили ацетатный мастер-диск в 2016 году, и результаты можно услышать на SoundCloud[8][9].
Летом 1952 года Стрэчи запрограммировал генератор любовных писем для Ferranti Mark 1, который известен как первый пример компьютерной литературы[10].
В мае 1952 года Стрэчи выступил с двухчастным докладом об «изучении управления у животных и машин» («кибернетика») в программе Science Survey на BBC Home Service.
Стрэчи работал в Национальной корпорации исследований и разработок (NRDC) с 1952 по 1959 год. Работая над проектом Морского пути Святого Лаврентия, он смог посетить несколько компьютерных центров в США и каталогизировать их наборы команд. Позже он работал над программированием компьютеров Elliott 401 и Ferranti Pegasus. Вместе с Дональдом Б. Гиллисом он подал три патента в области вычислительной техники, включая проектирование базовых регистров для перемещения программ. Он также работал над анализом вибрации в самолётах, недолго сотрудничая с Роджером Пенроузом.
В 1959 году Стрэчи покинул NRDC, чтобы стать компьютерным консультантом, работая на NRDC, EMI, Ferranti и другие организации над несколькими масштабными проектами. Эта работа включала логическое проектирование компьютеров, предоставление автокода и, позже, проектирование языков программирования высокого уровня. Для контракта на создание автокода для компьютера Ferranti Orion Стрэчи нанял Питера Лэндина, который стал его единственным помощником на время консультационного периода Стрэчи.
Стрэчи разработал концепцию разделения времени в 1959 году[11]. Он подал заявку на патент в феврале того же года и выступил с докладом под названием «Разделение времени в больших быстрых компьютерах» на первой конференции ЮНЕСКО по обработке информации в Париже, где передал концепцию Дж. К. Р. Ликлайдеру[12]. Этот доклад был признан Вычислительным центром Массачусетского технологического института в 1963 году «первой статьёй о компьютерах с разделением времени»[3].
В 1962 году, оставаясь консультантом, он принял должность в Кембриджском университете.
В 1965 году Стрэчи принял должность в Оксфордском университете в качестве первого директора Группы исследований программирования, а позже стал первым профессором информатики университета и членом колледжа Вольфсона в Оксфорде. Он сотрудничал с Даной Скоттом.
Стрэчи был избран почётным членом Британского компьютерного общества в 1971 году за свою новаторскую работу в области информатики.
В 1973 году Стрэчи (вместе с Робертом Милном) начал писать эссе, представленное на конкурс премии Адамса, после чего они продолжили работу по его переработке в форму книги. Стрэчи участвовал в дебатах Лайтхилла 1973 года об искусственном интеллекте с Джоном Маккарти и другими[13] (см. Отчёт Лайтхилла).
Он разработал Комбинированный язык программирования (CPL). Его влиятельный набор лекций Фундаментальные концепции языков программирования формализовал различие между L- и R-значениями (как это видно в языке программирования C). Стрэчи также ввёл термин каррирование, хотя он не изобрёл саму концепцию.
Он сыграл важную роль в проектировании компьютера Ferranti Pegasus.
Макроязык m4 во многом заимствован из GPM Стрэчи (General Purpose Macrogenerator), одного из самых ранних языков макрорасширения[14].
Стрэчи заразился болезнью, диагностированной как желтуха, которая после периода кажущегося выздоровления вернулась, и он умер от инфекционного гепатита 18 мая 1975 года[11]. После его смерти Стрэчи сменил сэр Тони Хоар на посту руководителя Группы исследований программирования в Оксфорде, начиная с 1977 года.
Наследие
На факультете информатики Оксфордского университета учреждена должность профессора информатики имени Кристофера Стрэчи[15], которую занимали:
- Сэр Тони Хоар (1988–2000)
- Самсон Абрамски (2000–2021)
- Нобуко Ёсида (с 2022 года)
В 1995 году в Оксфордском университете в память о Стрэчи были учреждены лекции Стрэчи по информатике. В ноябре 2016 года в Оксфордском университете прошло мероприятие Strachey 100, посвящённое столетию со дня рождения Стрэчи, включая просмотр в библиотеке Уэстона в Оксфорде архива Кристофера Стрэчи, хранящегося в коллекции Бодлианской библиотеки.
Публикации
- 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: 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. 215 (3): 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. A Theory of Programming Language Semantics / Robert Milne, Christopher Strachey. — New York : Springer, 1976. — ISBN 978-1-5041-2833-9.
Примечания
Литература
- Barron, David (Summer 2008). “Pioneer Profiles – Christopher Strachey”. Resurrection. Computer Conservation Society (43). ISSN 0958-7403.
- Danvy, Olivier; Talcott, Carolyn, eds. (April 2000). “Special Issue in memory of Christopher Strachey”. Higher-Order and Symbolic Computation. 13 (1/2).
- Lavington, S. The Pegasus Story. — Science Museum, 2000. — ISBN 1-900747-40-5.