После победы: почему русские студенты программируют лучше всех в мире

Соревнования программистов в финале ACM ICPC, чемпионата мира среди студенческих команд, в котором российские университеты на прошлой неделе взяли больше всех призовых мест, включая первое, — это, прямо скажем, не футбол. Смысл забега Месси с мячом к чужим воротам понятен каждому вне зависимости от уровня начальной подготовки, а что там происходит у программистов во время соревнований — поди разбери.

Сходство в одном: это тоже спорт, и здесь тоже случаются сопоставимой силы страсти. Когда Санкт-Петербургский университет в последний момент обошел шанхайцев и взял абсолютное первенство, сидящий рядом со мной американец, похожий на бородатого Шелдона Купера из «Теории большого взрыва», досадливо вскрикнул и сменил позу, что было бурным проявлением эмоций. А я аплодировал (правильнее было бы сказать «бил в ладоши», но проявим запоздалую сдержанность) с существенно большей охотой, чем делаю это на стадионе, когда забивает «Спартак».

Но то последний момент, а вот как все выглядит на протяжении пяти часов соревнований.

Большое помещение, предназначенное для спортивных зрелищ, или очень большой конференц-зал. Столы рядами, на них компьютеры, по одному на команду. В команде три человека.

У столов таблички с названиями университетов. Над столами висят воздушные шарики. Между рядами в белых майках прохаживаются маршалы, следящие за порядком в зале, и еще корреспонденты icpcnews.com (сайт новостей соревнований, ведомый IBM, спонсором и организатором ICPC). Им тут находиться можно, журналистов же пускают поближе к командам ненадолго, и только в сопровождении маршала.

За столами — команды университетов, всего их 128. Соревнующихся пристально рассматривать как-то даже и неловко. Сопутствующая напряженной работе мысли погруженность в себя — дело интимное, не для посторонних.

icpc

Перед командами стоят 10+ (на сей раз было 13) задач (problems) невероятной, даже не осознаваемой большинством из нас сложности. На решение дается пять, как уже было сказано, часов. По 23 минуты на задачу.

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

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

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

Исполнительный директор ICPC профессор университета Бэйлора Билл Паучер, по совместительству неслабый шоумен, сообщает со сцены: «Университет такой-то представил за последний час две задачи, давайте посмотрим, к чему это привело! Ага, одно решение верно!» И университет всплыл вверх в таблице, проецируемой на большой экран. А Билл берет следующий из нижней части таблицы и смотрит, удалось ли тому чего-то добиться, пока таблица стояла замороженной.

icpc2

Наконец распределяются медали. Их 12, по четыре каждого достоинства. Среди 12 пятеро наших. Осталась главное — назвать чемпиона. Претендентов двое, Санкт-Петербургский государственный университет и Шанхайский университет Жао Тонг, у него 11 решенных задач. У СПбГУ 10, но команда успела отправить на проверку одиннадцатое решение, принято ли оно? Да. Принято. У СПбГУ тоже 11 решенных задач. В дело вступают дополнительные показатели. Наши затратили меньше времени, они — чемпионы.

Вот что имеем в результате.

Наших команд среди медалистов — пять из 12. Такому результату, а он грандиозен, казалось бы, взяться было просто неоткуда. Население страны относительно невелико, российских университетов в топ-100 только два (СПбГУ вошел на 25-е место), высшее образование который уже год реформируется по живому. Наша поп-культура, некогда культивировавшая хай-тек (вспомните советские «Девять дней одного года» Ромма или «Понедельник…» Стругацких), теперь продвигает кино про бандитов и про то, как меньше думать, а не про точные науки («Универ»).

Неприятно, хотя и интересно было видеть, что пресса либо игнорировала успех России на ICPC 2016, либо писала о нем, как бы это помягче, не так чтобы со знанием дела.

Но неважно. Наши студенты лучшие в программировании. Что отнюдь не случайность. За 10 последних лет университеты из России становились чемпионами восемь раз.

Почему? Потому что русская инженерная школа в тяжелых, чрезвычайных даже условиях (тяжко было в 90-е, да и сейчас не без проблем) эффективно эволюционировала именно в эту, спортивно-программистскую, сторону. Кафедры, выращивающие финалистов, медалистов и чемпионов ICPC, есть во Владивостоке, Петрозаводске, Саратове, Самаре, Москве, Екатеринбурге, Нижнем Новгороде и многих других городах.

Их много, и они не сами по себе. Это самоорганизовавшаяся система, в которой десятки лучших в мире (это, как видим по результатам, не фигура речи) воспитателей — не программистов, нет, скорее, IT-инженеров с очень быстрым и глубоким умом.

Эта система ценна прежде всего тем, что втягивает в себя талантливых детей со всего бывшего СССР. Уникально одаренный Геннадий Короткевич из Белоруссии, двукратный чемпион мира в составе Санкт-Петербургского университета ИТМО, должен был прежде, чем получил всемирную славу, попасть в правильную среду — на факультет профессора ИТМО Владимира Парфенова к тренеру Андрею Станкевичу.

Так что ответ на вопрос «почему?» таков: потому что в России есть правильная среда для воспитания программистов-спортсменов.

icpc3

Далее: почему программирование, а не футбол или гонки F1? Почему тут у нас получается, а в футболе — нет?

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

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

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

Лучше не надо. IT и подготовка IT-инженеров — дело слишком важное, чтобы относиться к нему казенно. Пусть уж все остается как есть, а не так, как в нашем футболе.

Источник