- PVSM.RU - https://www.pvsm.ru -

Алонзо Чёрч: забытый архитектор современного программирования

Алонзо Чёрч: забытый архитектор современного программирования - 1

Все знают Алана Тьюринга. Он создал компьютер, который помог взломать Энигму, а также заложил основы концепции искусственного интеллекта. Его знаменитый тест «проверки на вшивость» недавно прошел [1] ChatGPT (правда, не всех это убедило, да и к самому тесту есть вопросы). 

Но вот про Алонзо Чёрча, ближайшего сподвижника Тьюринга, который сыграл огромную роль в появлении современных функциональных языков программирования, как-то редко вспоминают. Мы решили исправить эту ситуацию и рассказать про этого удивительного человека. 


Ранние годы Алонзо Чёрча

Будущий математический логик родился 14 июня 1903 года в ничем не примечательной семье: отец Сэмюэл Чёрч был рядовым мировым судьей в округе Колумбия, мать — домохозяйкой. Правда, более дальние родственники были довольно интересны. Его прадедушка, Алонзо Чёрч [2] (в честь которого и назвали мальчика) был профессором математики и 30 лет занимал должность президента Университета Джорджии. А его дедушка — библиотекарем Сената США. 

В 1910 году произошло событие, ключевым образом повлиявшее на всю дальнейшую жизнь Алонзо Чёрча: он играл с соседскими детьми, и один из них передал ему пневматическое ружье своего отца. Как-то получилось, что оно выстрелило в неподходящий момент, и Алонзо ослеп на один глаз [3]. В довершение всех бед отец начал терять зрение: то ли от старости, то ли от стресса из-за переживаний о ребенке. Исполнять обязанности судьи он больше не мог, поэтому семья за уединением переехала на ферму в Вирджинию. 

С деньгами проблем не возникло, поскольку помогать вызвался брат отца — его тоже звали Алонзо Чёрч, и он был преуспевающим предпринимателем. Заметив интерес мальчика к точным наукам, он помог ему устроиться в престижную частную школу в Коннектикуте.

В 1920 году Алонзо Чёрч закончил школу и поступил не куда-нибудь, а в один из самых престижных университетов страны — Принстонский. Уже на втором курсе он выигрывает престижную «премию выпуска 1861 года [4]», вручаемую студенту, который показывает наилучшие результаты на так называемом «конкурсе Патнэма [5]» — своеобразной математической олимпиаде для студентов ведущих вузов США.

А в 1924 году, ещё будучи студентом, он публикует статью Uniqueness of the Lorentz Transformation [6], где математически доказывает корректность преобразований Лоренца [7] для одного измерения, взглянув на них под новым углом.

Вступление к статье Алонзо Чёрча — работу высоко оценили на кафедре математики Принстонского университета

Вступление к статье Алонзо Чёрча — работу высоко оценили на кафедре математики Принстонского университета

Становление математика и знакомство с Тьюрингом

Невероятные способности студента замечает профессор Освальд Веблен — знаменитый математик, соавтор теоремы Веблена-Янга [8] о проективном пространстве и человек, введший понятие функций и ординалов Веблена [9]. Веблен с 1925 года начинает активно «натаскивать» Чёрча. Результатом становятся несколько замечательных статей на широкий круг тем:

С 1927 по 1929 года Алонзо получает национальную стипендию [14] и проходит стажировку сначала в Гарварде, Амстердаме, а затем в Гёттингене. Там он много работает с Дэвидом Гильбертом [15] — человеком, который консультировал Эйнштейна в его работе над ОТО и который в 1928 году сформулировал проблему Entscheidungsproblem (с нем. «проблема принятия решения»).

Дэвид Гильберт — выдающийся математик

Дэвид Гильберт — выдающийся математик

Если кратко, то Гильберт изучил работы Готфрида Лейбница (создателя механической вычислительной машины в 17 веке) и задался вопросом [16]: существует ли эффективно вычислимая и универсальная программа, которая для каждого математического утверждения будет принимать его и возвращать либо True, либо False, в зависимости от истинности утверждения, за конечное число шагов?

В 1929 году Алонзо Чёрч возвращается в Принстон и следующие 38 лет своей жизни посвящает преподаванию. Уже в 1930 году он начинает работать над Entscheidungsproblem, о которой ему подробно рассказал Гильберт. В этом деле ему помогают два одарённых студента: Стивен Клини и Дж. Баркли Россер.

В 1935 году Алонзо Чёрч шапочно знакомится с Аланом Тьюрингом, который тоже исследует Entscheidungsproblem. Есть разные точки зрения на то, обменивались ли они какой-то информацией и повлияли ли друг на друга. Но большая часть исследователей все-таки сходится в том, что Чёрч и Тьюринг работали независимо друг от друга. 

Однако именно их две работы стали, пожалуй, самыми влиятельными с точки зрения дальнейшего исследования теории алгоритмов и приведших к появлению компьютеров, какими мы их знаем. 

Алонзо Чёрч и Алан Тьюринг

Алонзо Чёрч и Алан Тьюринг

Главные работы: λ-исчисление и тезис Чёрча-Тьюринга

За несколько лет упорной работы Алонзо Чёрч вместе с Клини и Россером  разработали уникальную систему математической логики, которую представили в 1936 году — λ-исчисление [17]. Оно стало основой для появления современных функциональных языков программирования. 

Если примитивно и кратко (просьба не кидаться камнями в автора), в основе идеи Чёрча лежит определение, что буквально любые математические вычисления и преобразования можно представить в виде функций. Оно базируется на двух фундаментальных операциях:

  • Абстракция — по сути объявление функции, которое обозначается символом λ. Например, λx.t, где Х — это аргумент, а t — ее тело. В современном программировании эквивалентно «анонимной функции». 

  • Аппликация — применение функции. В выражении f x буква f обозначает непосредственно функцию, а x — значение аргумента. 

Чёрч разработал систему кодирования [18], установил правила приоритета и α-эквивалентности, а также определил функции базовых логических операций and, or, not и if. В результате любых преобразований в λ-исчислении на выходе тоже должны были появляться функции: либо true ((x, y) => x), либо false ((x, y) => y). То, что и лежало в первооснове Entscheidungsproblem. 

Еще Чёрч создал массу дополнительных надстроек: например, преобразовал в λ-исчисление базовые арифметические операции вроде сложения и умножения, а также натуральные числа, что позволило не ограничиваться только булевой логикой и производить полноценные вычисления. Также Чёрч ввел β-редукцию, «каррирование», рекурсивные вызовы функций с помощью Y-комбинатора (комбинатора неподвижной точки) [19] и много чего еще. 

Например, следствием разработки λ-исчисления стала теорема Чёрча-Россера [20], которая гласила, что «порядок применения правил редукции к термам не влияет на конечный результат. Если для некоторого λ-терма a имеется два варианта редукции a → b и a → c, то существует некоторый λ-терм d — такой, что b → d и c → d.».

Кодирование натуральных чисел в λ-исчисление

Кодирование натуральных чисел в λ-исчисление

Более подробно познакомиться с λ-исчислением и его сутью читатель может в замечательных статьях на том же Хабре: например, тут [21] и тут [22].  

Параллельно Алан Тьюринг подошел к Entscheidungsproblem с несколько иной стороны. Опираясь на «теорему о неполноте» [23] немецкого математика Курта Гёделя (он же придумал классы рекурсивных функций [24] и активно полемизировал с Чёрчем), Тьюринг предложил концепцию абстрактной вычислительной машины и формализовал понятие алгоритма. Свою работу он опубликовал в статье On Computable Numbers, with an Application to the Entscheidungsproblem [25] спустя несколько месяцев после работы Чёрча. 

Суть абстрактной машины [26] заключалась в том, что есть лента бесконечной длины, разделенная на ячейки, и головка записи-чтения (ГЗЧ), которая может записывать в них символы некоторого алфавита (А) и состояний машины (Q). Положение и движение ГЗЧ влево или вправо зависит от считанного в ячейке символа и описывается правилами перехода с конечным количеством шагов. А это, по сути, и есть алгоритм. 

Примерно так выглядит графическое представление машины Тьюринга

Примерно так выглядит графическое представление машины Тьюринга

Важно то, что Тьюринг убедительно доказал две вещи:

  • Если требуется произвести любое вычисление, которое можно описать в виде алгоритма для «машины Тьюринга», то это однозначно можно сделать, вне зависимости от сложности задачи. 

  • Не существует общего алгоритма, который бы позволял только на основании входных данных сказать, что машина выдаст некий конечный результат, или будет бесконечно долго работать. Тьюринг сформулировал это как «проблему остановки» [27].

Когда Алану Тьюрингу показали работу Чёрча, то он был поражен, что они пришли к одному и тому же выводу: Entscheidungsproblem не имеет решения. При этом решение Чёрча, хоть и считалось менее доступным и интуитивно понятным, с математической и абстрактной точки зрения было более совершенным. 

Это положило начало прекрасным отношениям двух математических гениев. А утверждение о «вычислимости всего, что может быть вычислено» получило название «тезиса Чёрча-Тьюринга» [28] — два противоположных подхода (λ-исчисления и «машина Тьюринга») имели очень схожие свойства. 

В сентябре 1936 года Алан Тьюринг перебрался в Принстон и работал над докторской диссертацией на тему «Логические системы, основанные на ординалах» под руководством Алонзо Чёрча. В 1938 году Тьюринг успешно защитил ее. И параллельно изучал криптографию и разработал несколько схем электромеханического двоичного умножителя. 

Во многом благодаря этому Тьюринг позже возглавил центр криптографии в Блетчли-Парке и взломал шифр «Энигмы» при помощи компьютера bombe [29]. Но об этом написано и сказано уже очень много — если кто-то не видел, рекомендуем к просмотру фильм «Игра в имитацию» с Бенедиктом Камбербэтчем. 

Наследие Алонзо Чёрча

Удивительно, что Алонзо Чёрч никогда не пользовался славой Тьюринга, Гёделя или фон Неймана, который также работал в Принстоне в те годы. Возможно, это связано с самим характером Чёрча: он был очень тихим и скромным человеком с безупречным почерком. За это все его студенты были ему очень благодарны — разбирать каракули других преподавателей на меловой доске не нравилось никому.

В 1936 году Чёрч основал журнал Symbolic Logic и был его бессменным редактором до 1979 года. В 1941 году он опубликовал книгу The Calculi of Lambda-Conversion [30], в которой собрал воедино все свои работы по λ-исчислению. 

За время работы преподавателем в Принстоне (он уволился только в 1967 году), Алонзо Чёрч помог 31 аспиранту, многие из которых стали выдающимися математиками: Мартин Дэвис [31], Алан Тьюринг, Джон Джордж Кемени [32], Михаэль Рабин [33], Хартли Роджерс-младший [34], Рэймонд Смаллиан [35]. И конечно те, кто помогал Чёрчу в появлении λ-исчисления: Стивен Клини [36] и Дж. Баркли Россер [37]

Стивен Клини со своим учителем Алонзо Чёрчем

Стивен Клини со своим учителем Алонзо Чёрчем

Кроме математической логики, еще Алонзо интересовался теорией множеств [38], преобразованиями Лапласа [39], практическим применением дифференциальных уравнений и многим другим. Более подробно математические работы Чёрча приводятся на сайте [40] Стэнфордского университета. 

В 1967 году Алонзо Чёрч переходит на работу в Калифорнийский университет в Лос-Анджелесе, где трудится профессором вплоть до выхода на пенсию в 1990 году. За свою жизнь Чёрч (он умер естественной смертью в 1995 году, в почтенном возрасте 92 лет) получил множество наград: например, Британской академии, Американской академии искусств и наук и Национальной академии наук. 

Но главным делом всей его жизни стало λ-исчисление. Именно оно легло в основу языка LISP [41], разработанного Джоном Маккарти в 1958 году и являющегося старейшим ЯП наряду с Фортраном и Коболом. А влияние λ-исчисления прослеживается в функциональных языках вроде Haskell, ML, Erlang и других.

Так что можно смело сказать, что без фундаментальной работы Алонзо Чёрча история появления компьютеров могла бы пойти по совершенно другому пути. Хотя так можно сказать и про все другие области, к которым руку приложили великие люди. 


НЛО прилетело и оставило здесь промокод для читателей нашего блога:

-15% на заказ любого VDS [42] (кроме тарифа Прогрев) — HABRFIRSTVDS

Автор: klimensky

Источник [43]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/matematika/404358

Ссылки в тексте:

[1] прошел: https://habr.com/ru/news/825290/

[2] Алонзо Чёрч: https://en.wikipedia.org/wiki/Alonzo_Church_(college_president)

[3] и Алонзо ослеп на один глаз: https://en.wikipedia.org/wiki/Alonzo_Church#cite_note-7

[4] премию выпуска 1861 года: https://www.math.princeton.edu/undergraduate/majors/honors

[5] конкурсе Патнэма: https://www.math.harvard.edu/undergraduate/mathematical-competitions/putnam-exam/

[6] Uniqueness of the Lorentz Transformation: https://www.jstor.org/stable/2298823?seq=1

[7] преобразований Лоренца: http://nuclphys.sinp.msu.ru/enc/e087.htm

[8] теоремы Веблена-Янга: https://en.wikipedia.org/wiki/Veblen%E2%80%93Young_theorem

[9] функций и ординалов Веблена: https://en.wikipedia.org/wiki/Veblen_function

[10] On Irredundant Sets of Postulates: https://www.jstor.org/stable/1989108?seq=1

[11] Alternatives to Zermelo's assumption: https://www.ams.org/tran/1927-029-01/S0002-9947-1927-1501383-1/S0002-9947-1927-1501383-1.pdf

[12] теории множеств Цермело: https://en.wikipedia.org/wiki/Zermelo_set_theory

[13] легла в основу его докторской диссертации: https://www.encyclopedia.com/humanities/encyclopedias-almanacs-transcripts-and-maps/church-alonzo

[14] национальную стипендию: https://en.wikipedia.org/wiki/National_Academies_of_Sciences,_Engineering,_and_Medicine#Program_units

[15] Дэвидом Гильбертом: https://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%BB%D1%8C%D0%B1%D0%B5%D1%80%D1%82,_%D0%94%D0%B0%D0%B2%D0%B8%D0%B4

[16] задался вопросом: https://en.wikipedia.org/wiki/Entscheidungsproblem

[17] λ-исчисление: https://ru.wikipedia.org/wiki/%D0%9B%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B8%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5

[18] систему кодирования: https://en.wikipedia.org/wiki/Church_encoding

[19] помощью Y-комбинатора (комбинатора неподвижной точки): https://bmsdave.github.io/blog/y-combinator/

[20] теорема Чёрча-Россера: https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%A7%D1%91%D1%80%D1%87%D0%B0_%E2%80%94_%D0%A0%D0%BE%D1%81%D1%81%D0%B5%D1%80%D0%B0#:~:text=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0%20%D0%A7%D1%91%D1%80%D1%87%D0%B0%20%E2%80%94%20%D0%A0%D0%BE%D1%81%D1%81%D0%B5%D1%80%D0%B0%20%E2%80%94%20%D0%BE%D0%B4%D0%BD%D0%B0%20%D0%B8%D0%B7,%D0%BD%D0%B5%20%D0%B2%D0%BB%D0%B8%D1%8F%D0%B5%D1%82%20%D0%BD%D0%B0%20%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B9%20%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82.

[21] тут: https://habr.com/ru/articles/215807/

[22] тут: https://habr.com/ru/articles/724768/

[23] «теорему о неполноте»: https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D1%8B_%D0%93%D1%91%D0%B4%D0%B5%D0%BB%D1%8F_%D0%BE_%D0%BD%D0%B5%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D1%82%D0%B5

[24] классы рекурсивных функций: https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_(%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8)

[25] On Computable Numbers, with an Application to the Entscheidungsproblem: https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf

[26] абстрактной машины: https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0

[27] «проблему остановки»: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0_%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8

[28] «тезиса Чёрча-Тьюринга»: https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%B7%D0%B8%D1%81_%D0%A7%D1%91%D1%80%D1%87%D0%B0_%E2%80%94_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0

[29] компьютера bombe: https://en.wikipedia.org/wiki/Bombe

[30] The Calculi of Lambda-Conversion: https://compcalc.github.io/public/church/church_calculi_1941.pdf

[31] Мартин Дэвис: https://ru.wikipedia.org/wiki/%D0%94%D1%8D%D0%B2%D0%B8%D1%81,_%D0%9C%D0%B0%D1%80%D1%82%D0%B8%D0%BD_(%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA)

[32] Джон Джордж Кемени: https://ru.wikipedia.org/wiki/%D0%9A%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8,_%D0%94%D0%B6%D0%BE%D0%BD_%D0%94%D0%B6%D0%BE%D1%80%D0%B4%D0%B6

[33] Михаэль Рабин: https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B1%D0%B8%D0%BD,_%D0%9C%D0%B8%D1%85%D0%B0%D1%8D%D0%BB%D1%8C

[34] Хартли Роджерс-младший: https://ru.wikibrief.org/wiki/Hartley_Rogers_Jr.

[35] Рэймонд Смаллиан: https://ru.wikipedia.org/wiki/%D0%A1%D0%BC%D0%B0%D0%BB%D0%BB%D0%B8%D0%B0%D0%BD,_%D0%A0%D1%8D%D0%B9%D0%BC%D0%BE%D0%BD%D0%B4_%D0%9C%D0%B5%D1%80%D1%80%D0%B8%D0%BB%D0%BB

[36] Стивен Клини: https://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B8%D0%BD%D0%B8,_%D0%A1%D1%82%D0%B8%D0%B2%D0%B5%D0%BD_%D0%9A%D0%BE%D1%83%D0%BB

[37] Дж. Баркли Россер: https://alphapedia.ru/w/J._Barkley_Rosser

[38] теорией множеств: https://link.springer.com/chapter/10.1007/978-94-010-0526-5_4

[39] преобразованиями Лапласа: https://afm.journal.fi/article/view/134053

[40] на сайте: https://plato.stanford.edu/entries/church/#ChurModeReal

[41] языка LISP: https://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%81%D0%BF#%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F

[42] -15% на заказ любого VDS: https://firstvds.ru/?utm_source=habr&utm_medium=article&utm_campaign=product&utm_content=vds15exeptprogrev

[43] Источник: https://habr.com/ru/companies/first/articles/864508/?utm_campaign=864508&utm_source=habrahabr&utm_medium=rss