Объясните, пожалуйста, не для специалистов: распределенные и параллельные вычисления – это одно и то же?
Морис Херлихи: Обычно люди имеют в виду немного разные вещи, когда говорят об этом. Эти два понятия очень похожи по своему значению и в некоторых случаях используются одновременно. Распределенные вычисления – это когда ты работаешь с несколькими процессами на разных компьютерах, которые можно объединить в систему. Параллельные – это когда несколько вычислений производятся одновременно с помощью одного и того же физического аппарата.
То есть распределенные вычисления используют несколько компьютеров, которые могут быть объединены в параллельную вычислительную систему?
Нир Шавит: Параллельные вычисления могут производиться на одном или нескольких компьютерах одновременно друг с другом, распределительные – всегда на нескольких. Классический пример, с помощью которого можно объяснить разницу – это Интернет и ваш компьютер. На компьютере обычно есть четыре процессора, которые работают на одном и том же чипе и используют одну и ту же память. А Интернет использует много процессоров, которые расположены в разных местах физически. И у каждого процессора своя память и возможность взаимодействовать с помощью сигналов.
Хорошие примеры, чтобы понять. А если бы вы объясняли одиннадцатилетней девочке, что такое Computer Science и распределенные вычисления, как бы это сделали?
Морис Херлихи: Computer Science – это в большей степени наука не о компьютерах, точно так же, как астрономия – это не про телескопы. Здесь компьютеры – это инструмент для достижения определенной цели. Точно также в астрономии люди изучают и совершенствуют телескопы не ради самих телескопов, а чтобы решить какую-либо научную проблему. Вот и Computer Science – это про то, как решить проблему, используя вычисления, математические алгоритмы. При этом специалисты в Computer Science занимаются разнообразными проблемами, и для каждой разрабатывается свой инструментарий.
Нир Шавит: Добавлю, что Computer Science – это про алгоритмы. А алгоритм – это последовательность шагов, которые необходимо предпринять, чтобы достичь определенной цели. Computer Science – это то, как ты выстраиваешь и комбинируешь эти последовательности, проводишь вычисления для того, чтобы получить результат.
Что самое крутое в вашей работе?
Морис Херлихи: Возможность упрощать сложные вещи и решать проблемы. Если говорить о ежедневной работе в Computer Science, то, например, достаточно сложно справиться с какими-либо проблемами, которые возникают одновременно. Но если смотреть на такие проблемы систематически, применять для их решения математические подходы, то можно не только упростить проблему, но и извлечь какие-либо дополнительные бонусы от ее решения. Мне очень нравится применять эту способность систематического алгоритмического мышления, потому что так можно понять вещи, с которыми очень тяжело разобраться интуитивно.
Нир Шавит: То же самое: мне нравится решать проблемы. Когда я иду на работу, я знаю, что передо мной стоят задачи, над решением которых я тружусь уже долгое время. И я думаю об этих проблемах вновь и вновь. Если я устаю от этого, то у меня всегда есть источник вдохновения – это мои студенты. Они всегда проявляют энтузиазм и заинтересованность, и это круто.
А вы думаете о том, насколько ваша работа важна для общества?
Нир Шавит: Например, сейчас я занимаюсь составлением карты мозга, пытаюсь понять, как нейроны связаны между собой. В будущем это позволит нам создать искусственный интеллект, в том числе. Конечно, для этого нужны еще десятки и десятки лет работы. Потому что сейчас мы пытаемся сконструировать лишь крохотную крупицу нашего мозга, а представьте, что таких крупиц – тысячи миллионов.
А что самое скучное в вашей работе?
Морис Херлихи: Для того, чтобы провести какую-либо исследовательскую работу, необходимо найти финансирование. У университетов не всегда есть средства, поэтому приходится обращаться за поддержкой в правительство, какие-либо фонды. И вся эта работа по составлению заявок, описанию своего проекта действительно утомляет. Необходимо доказывать значимость проекта, объяснять, почему это крутая идея, какие у нее могут быть практические применения. Но такая ситуация во всем мире.
Расскажите, что побудило вас заниматься Computer Science?
Морис Херлихи: Я окончил университет в сфере математики, и когда получил диплом, то не знал, чем хочу заниматься. Но мне нужна была работа, поэтому я устроился программистом. Но со временем я понял, что, работая среднестатистическим программистом, у тебя есть слишком мало задач, которые требуют творческого подхода. Я решил вернуться в университет и поступил в аспирантуру на направление Computer Science. Там я начал изучать распределенные вычисления, и понял, что это то, что мне интересно. Так, мой путь в стезю ученого в области Computer Science был в чем-то случаен.
Нир Шавит: Мой отец был профессором, ученым-биохимиком. Я тоже начал изучать биологию в университете, но на втором курсе у нас был модуль Computer Science. И это был конец биологии для меня. Биология – это круто, и я частично сейчас этим занимаюсь. Но работа в области Computer Science – это интеллектуальное удовольствие. Писать программы, составлять алгоритмы – все это требует постоянной работы ума. И при этом в такой работе все кристально понятно: ты знаешь правила, как они работают, и это неизменно. В биологии ты должен проводить очень много экспериментов, что иногда превращается в рутину. Мы же с коллегами очень много времени проводим, работая над нашими задачами в кафе, и это увлекательнейшее занятие.
Морис Херлихи: Можно сказать, что работа ученого в Computer Science – это больше стиль жизни. Ты постоянно думаешь о своих исследованиях: в поезде, за обедом.
В вашей научной практике был моменты неожиданных открытий?
Морис Херлихи: Да, и очень много. Однажды я работал над одной проблемой, пытался ее решить математически. Но внезапно я понял, что это сделать невозможно, потому что необходимо решать не одну проблему, а сразу несколько задач в разных областях. Я и другие люди потеряли много времени, пытаясь найти ответ не в том направлении. Это была неожиданная интуиция, а не логическое заключение. На самом деле, в научных исследованиях иногда очень важно уметь «переключиться» на другое решение, взглянуть на задачу с другой стороны. Даже когда я обучаю своих студентов, я говорю им, что если у вас что-то не получается, вы не можете найти ошибку в своей работе, то самое лучшее, что вы можете сделать – это пойти поспать, а с утра взглянуть на проблему со свежей головой.
Нир Шавит: У меня была ситуация, когда я также не мог долго решить задачу, и однажды мне приснилось решение. Но при этом мне приснилось, что это неверное решение. Но на деле оказалось, что это то, что и было нужно. Я думаю, что когда ты постоянно размышляешь над какой-то задачей, то продолжаешь думать о ней даже в бессознательном состоянии. И это работает.
Вы – получатели очень престижных наград. Что вы почувствовали, когда узнали о присуждении приза?
Морис Херлихи: Распределенные вычисления – это относительно новая область в Computer Science. Как водится, каждый думает, что их работа – наиболее важная. Поэтому когда я узнал, что за мои труды была присуждена награда, для меня это значило, что научное сообщество признало важность этой области.
Нир Шавит: Я был очень взволнован, не верил. Да, результаты работы, за которые я получил награды, были очень хороши, но, как Морис и сказал, распределенные вычисления тогда не были в топах научных исследований по популярности. Присуждение наград – это важно для сообщества ученых, которые занимаются Computer Science.
Вы, конечно, знаете о Григории Перельмане, который отказался от награды в 1 000 000 долларов, потому что он был не согласен с решением тех, кто присуждал награду. Это было достаточно странно, как вы думаете?
Нир Шавит: Хочу прежде отметить, что я очень высоко ценю работы Перельмана по математике. Но, рассуждая о признании, необходимо подчеркнуть, что награды важны не только в том смысле, что это средства на исследования, но и в том, что это мотивирует людей продолжать заниматься наукой в своей области. Например, Computer Science – это очень коллаборативная наука, мы много работаем с коллегами, стараемся вовлечь в эту сферу наших студентов. И для молодых ученых важно осознание того, что их работа ценится. Например, один мой хороший знакомый не так давно получил награду за свои работы в малоизвестной теме. И если бы он отказался от нее, то я бы действительно не понял этого.
Если говорить о коллаборации. Морис, в одном из ваших прошлых интервью вы утверждали, что в области Computer Science ученые плохо организованы как сообщество. Почему так происходит?
Морис Херлихи: Наверное, речь идет об интервью, которое я давал три или четыре года назад. Да, тогда такая проблема была, но сейчас ситуация сильно изменилась. И сообщество ученых, которые занимаются Computer Science, уже достаточно сформировалось, была проведена большая работа, чтобы повысить престиж Computer Science. И могу сказать, что осознание важности работ в этой области появляется и у правительства, и у различных фондов.
Как вы думаете, куда дальше будет двигаться Computer Science, что будет актуально в этой области?
Морис Херлихи: Уже очень много чего сделано по фундаментальным исследованиям. Пришло время реализовывать теоретические наработки на практике. Я думаю, у распределенных вычислений есть огромный потенциал в сфере биткоин, а также в финансовых распределенных сетях типа блокчейн.
Каковы ваши впечатления от посещения Университета ИТМО?
Нир Шавит: Я проводил воркшоп со студентами и был приятно удивлен, насколько они здесь подготовлены. Ребята задавали действительно очень умные вопросы, и видно, что они увлечены своей сферой. Я не ожидал, что так будет.
Морис Херлихи: Мне нравится, что здесь особо выделяют важность программирования и IT-наук. Когда мы впервые заходили в университет, я увидел растяжку о том, что вуз вновь стал чемпионом ACM ICPC. В моем вузе такие растяжки вешают, когда чемпионами становится спортивная команда по футболу или баскетболу. Поэтому мне нравится такой подход к программированию.