Вера
Батурина
Основная функция человеческого мозга — строить предсказания на основе предыдущего опыта

Вере Батуриной 26 лет, она закончила ВМК (факультет вычислительной математики МГУ), магистратуру в École Polytechnique, работает в Google, а по выходным учит детей математике в Русской Гимназии, парижском филиале London Gates. Мы рады, что этим летом Вера присоединится к математической команде «Марабу».

Вера, а чем именно вы занимаетесь в Google?

Оптимизацией в исследовательском отделе. Все знают Street View на Google Maps, например; это один из наших проектов — оптимизация маршрутов машин, которые фотографируют виды для Street View. Это очень бизнес-ориентированная задача: мы строим маршруты на заданное количество машин так, чтобы меньше денег потратить на поездки.


А вы сталкивались с предрассудками из серии «женщина-математик — обязательно сухарь», «женщина не может быть хорошим программистом» и так далее?

Я всегда борюсь со стереотипом, что программирование — не женское занятие. Кстати, у нас на работе всего семь процентов женщин-инженеров, что катастрофически мало.

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

Я не согласна, что математика — это мужское занятие и что человек обязательно должен быть гением, чтобы стать математиком. Моя мама занималась программированием еще на самых первых компьютерах, она же придумывала в детстве для меня какие-то маленькие задачки. Не могу сказать, что у меня были выдающиеся способности, но я стала ходить в какие-то кружки, закончила маткласс 57-й школы. Но кроме математики я всегда увлекалась множеством самых разных вещей: например, учу языки, например, японский. Кстати, любовь к математике помогает: на ВМК у нас был курс по формальным грамматикам, — это то, что является базой для всех языков программирования, но работает и для естественных языков тоже.


А на повседневную жизнь ваша специальность как-то влияет? Ну, кроме того, что вам, наверное, легко заранее сосчитать сумму чека в супермаркете?

Ой, нет, как раз с арифметикой у меня все очень плохо.


То есть человек, который плохо считает, может успешно работать программистом в Google?

Как раз для того, чтобы быть хорошим программистом, надо быть ленивым, — чтобы захотелось автоматизировать какие-то монотонные операции. Еще Грейс Хоппер (первая женщина-программист, автор первого компилятора и соавтор языка COBOL) сказала, что если бы она не была такой ужасной лентяйкой, то не было бы языков программирования.

Конечно, математика влияет на то, как я смотрю на мир и вещи. Я даже людей в компании всегда классифицирую по каким-то признакам. Зачем? Это помогает предсказывать. Основная функция человеческого мозга — строить предсказания на основе предыдущего опыта. И чем больше у человека разнообразного опыта, тем точнее в итоге его предсказания.


Вера, летом вы будете преподавать и в Летней школе «Марабу» для подростков, и в Умном лагере для детей 10-14 лет. Оба ваших курса связаны с программированием?

C подростками речь пойдет о нейросетях; о том, что мало кто знает, что изначально идея алгоритма (который в итоге по аналогии с нейронами человеческого мозга назвали нейросетью) появилась очень давно, в середине 50-х годов XX века; что этой идее уже пришлось пережить два взлета и падения, а сейчас она снова на пике популярности. Вот о том, почему интерес к этой теме то пропадал, то вновь появлялся, как это все связано с разработками в области искусственного интеллекта, я и собираюсь рассказать.


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

Сейчас точную программу мы согласовываем с руководителем математического блока Яном Раухом, но существует множество интерактивных, наглядных, веселых задач, как дать детям базовые понятия программирования без компьютера. Скажем, для самой простой задачи нужны только весы без делений и несколько разных предметов: за определенное количество взвешиваний ребенок должен найти самый легкий и самый тяжелый предметы. Эта задача подводит к алгоритму бинарного поиска — одному из базовых алгоритмов в программировании.

Алгоритм сортировки можно дать на примере построения по росту: у всех детей завязаны глаза, и только два человека, стоящие рядом, могут потрогать друг друга и сказать, кто выше. То есть, говоря научным языком, за один раз можно провести сравнение только двух соседних элементов. И детям нужно составить алгоритм (то есть правила и их последовательность, в которой действовать), чтобы отсортироваться по росту. Здесь, кстати, вводится понятие цикла: когда одно и то же действие надо повторить несколько раз. Действие выполняется по кругу, пока не выполнится какое-то условие (каких именно двух ребят надо поменять местами), а условие — еще одно важное понятие программирования.

Еще детям всегда очень нравится алгоритм прохождения лабиринта. Представьте, что вы зашли в комнату с завязанными глазами. Вы знаете, что где-то здесь есть дверь и вам нужно до нее дойти. Что вы будете делать? Любой ребенок любого возраста моментально понимает: «Пойду вдоль стеночки и рано или поздно дойду до двери!» Окей. А теперь представьте, что все еще сложнее: перед шкафом стоит стол, а рядом с ним — стул. «Ну все равно, их можно обойти. Буду их трогать-трогать и все равно приду к двери». Это, собственно, и есть обобщенный алгоритм прохождения лабиринта, а программирование состоит в том, чтобы правильно этот алгоритм собрать: его необходимо записать для произвольного лабиринта, не зная, каким тот будет. Записывать можно и на бумажке, компьютер не нужен.

Или, к примеру, комбинаторика, которая занимается тем, чтобы рассчитать, сколько есть конфигураций (комбинаций). Самая базовая задача — рассадка гостей за столом: есть определенное количество гостей, есть стулья, и надо посчитать, сколькими разными способами можно это сделать. Дальше это все трансформируется в теорию вероятности: мы не можем предвидеть будущее наверняка, но мы можем рассмотреть, какие бывают варианты, одни встречаются чаще, другие — реже. Основываясь на этом, теория вероятности применяется к статистике, которая используется для того, чтобы прогнозировать будущее. Прогноз же нам нужен для того, чтобы понимать, какие решения принимать сейчас.


Пригодятся ли такие занятия детям, которые не планируют заниматься программированием, да и вообще далеки от математики?

Это невероятно полезное дело, которое позволяет системно подходить к любым задачам, будь то профессиональная сфера жизни, будь — личная. Кроме того, мы учимся думать по-новому. Даже если ребенок просто слышал о том, что существует некий метод, это прекрасно: когда понадобится, можно залезть в интернет, найти этот метод и применить к своей текущей задаче. А если человек даже ни разу об этом не слышал, как он узнает, что такое вообще бывает, что эту задачу до него кто-то решал, что уже есть готовый подход?