Универсиада, без дураков

Универсиада, без дураков



Профессор Владимир Парфенов, декан ИТМО (Санкт-Петербургского национального исследовательского университета информационных технологий, механики и оптики), рассказывает о первой победе своих студентов на ACM-ICPC: «Несколько дней не верил, что это произошло. Носил в кармане распечатку итоговой таблицы. Достану, посмотрю: точно, выиграли!»

С тех пор ИТМО победил на ICPC еще четырежды. В этом году вуз впервые в истории ICPC стал пентакампеоном (пятикратным чемпионом), как бразильцы в футболе. Это самый успешный, но далеко не единственный российский университет в элите ICPC.

Спортивное программирование

«Программист, как поэт, работает исключительно головой. Он строит свои замки в воздухе и из воздуха только силой своего воображения. Очень редко материал для творчества… такими простыми средствами позволяет осуществлять громадные замыслы», — в «Мифическом человеко-месяце», культовой книжке программистов 1970-х годов, Фредерик Брукс (Frederick Brooks, Jr.) дал вполне точное определение романтической сути программирования как ремесла.

Тогда же, в 1970-е, возник программистский конкурс, впоследствии ставший нынешним ACM-ICPC (International Collegiate Programming Contest), который считается командным чемпионатом мира по программированию. Это многоступенчатое, со строгим региональным отбором, состязание университетских команд в строительстве замков силой воображения на скорость.

Курирует ICPC существующая с 1947 года Association for Computing Machinery (ACM) — ассоциация, объединяющая более 80 тыс. профессионалов в области computer science. Важную роль и в ACM, и в проведении ICPC играет IBM. Без ее поддержки организовать ежегодный финал чемпионата было бы много сложнее, если вообще  возможно. Финал чемпионата в нынешнем году поддерживал и «Яндекс».

Финал ICPC внешне выглядит так. Перед каждой командой из трех человек лежит вскрываемый с началом соревнований конверт, а в нем от 8 до 12 головоломных задач (problems), на борьбу с которыми им отводится пять часов. Команда должна понять, как алгоритмизировать решение, затем превратить алгоритм в код, отладить и отправить на проверку. В распоряжении спортсменов компьютер, блокнот, калькулятор и словарь (problems формулируются на английском).

Если программа верно справилась с тестовым набором исходных данных и уложилась в положенное время, задача считается решенной. Фиксация этого факта происходит без вмешательства судей. Код решения уходит на сервер, и тот бесстрастно регистрирует результат: решена («сдана», как говорят участники) задача или нет.

Михаил Мирзаянов, тренер команды Саратовского университета, чемпион ICPC2006, приводит в качестве примера турнирного задания «задачу выбора столицы». На входе — декартовы координаты нескольких точек на плоскости («городов»). Команда должна разработать программу, которая укажет координаты «столицы» — точки, сумма расстояний от которой до каждого «города» будет минимальной.

Попробуйте-ка это за полчаса хотя бы алгоритмизировать и примите во внимание, что сложность problems, предлагаемых в финале ICPC, теперь существенно возросла.

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

Медалистов в финалах ICPC не трое, как в обычных видах спорта, а двенадцать — четыре золота, четыре серебра и четыре бронзы. Одновременно определяются региональные чемпионы Азии, Европы, Африки, Австралии, Северной и Латинской Америк. И еще есть чемпионское место, оно даже выше золота.

Турнирная таблица финала ICPC в реальном времени доступна онлайн, но за час до окончания финала она перестает обновляться. Это позволяет организаторам драматизировать процесс. На торжественной церемонии награждения сразу по окончании соревнования исполнительный директор ACM-ICPC последних лет, профессор Бейлорского университета (США) Билл Паучер (Bill Poucher) не менее получаса повествует о том, что успела каждая команда сделать за последний час. Чем ближе объявление победителей, тем сильнее волнуется публика. Паучер, непререкаемый авторитет в среде участников ICPC и одновременно превосходный шоумен, это умеет. ДЕТСКИЙ ФАКТОР Соревноваться в ICPC можно только до определенного возраста, как в женской спортивной гимнастике. После 19 лет, по словам Парфенова, учить программиста экстра-класса уже поздно, а программиста-спортсмена надо начинать тренировать гораздо раньше. Парфенов за глаза называет своих студентов «детьми», и это вполне точный термин. В токийском финале ICPC-2007 победили поляки, ИТМО сдал на два задания меньше и остался хотя и с золотом, но без абсолютного первенства. Много времени ушло на первую задачу, ребята занервничали и пропустили вперед не только Варшавский университет, но и китайцев. Сцена сразу после окончания финала: тренер команды ИТМО доцент Андрей Станкевич обнял своего плачущего спортсмена и ждет, когда у того кончатся слезы. Со стороны это не казалось проявлением слабости или досады — просто юношеская реакция на стресс соревнований, который и для взрослого-то чрезмерен. «Дети», способные выигрывать на ICPC, — ценнейший ресурс. Это инженеры, производительность труда которых в десятки раз превосходит среднюю. Именно они — мотор многих известных IT-проектов. Первая крупнейшая в Европе сеть 4G Yota (компании «Скартел») запущена в рекордные сроки именно чемпионами ICPC (выпускниками ИТМО). Успех «ВКонтакте» был бы невозможен без программистов экстра-класса, побеждавших на ICPC: онлайн-сервисы, способные выдержать такую нагрузку, могут быстро создать и поддерживать только такие люди. Директор питерского финала ICPC-2013 Роман Елизаров, двукратный участник финалов ICPC, разработал уникальный софт для биржевой торговли (и создал благодаря ему собственную компанию).

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

Для «детей» работа в банке равна потере лица. Им надо в CERN, в исследовательскую лабораторию IBM, поработать в Кремниевой долине. Если кого-то одолеет гордыня (что случается),  и он откроет свое дело, то, как правило, прогорает, и его, прогоревшего, вместе с компанией покупают, чтобы заполучить к себе на работу. Тому есть многочисленные примеры.

Министр обороны Сергей Шойгу (с его предложением привлечь победителей ICPC для решения неких утилитарных проблем Минобороны) в глазах «детей» имеет преимущества перед Фридманом. Работать на военных — это круто, не то что на банкиров. Могут и согласиться — хотя бы на короткое время. Но неизвестно, знает ли Шойгу, как использовать этих умелых «детей». Индустрия знает и умеет, а вот Минобороны, скорее всего, нет. Шойгу бы лучше об аналоге DARPA задуматься.

Программистов много не бывает

Наших программистов пора заносить в Красную книгу. Талантливых детей, способных успешно соревноваться на ICPC, по стране вырастает не более 500 в год. Потребности только внутреннего рынка — на пару порядков больше. Сравните: в КНР в соревнованиях ICPC, включая отборочные стадии, участвуют 200 тыс. студентов.

Должно ли государство поддерживать ICPC-движение? Едва ли. Отказ сообщества от идеи профессора Шалыто (см. врезку) демонстрирует нежелание программистов-спортсменов связываться с государством даже по такому ничтожному поводу, как создание ассоциации.

Показателен и опыт других стран. Профессор Томоюки Канеко (Tomoyuki Kaneko), тренер команды Токийского университета (золотой призер ICPC-2013), говорит, что в Японии участники ICPC представляют собой самодеятельное движение, даже расходы на поездку в Питер участники несут сами. Можно рассчитывать только на поддержку университета, если тот сочтет нужным ее оказать. То же и в США, где ICPC представляет собой сугубо любительский спорт. В России помощь государства нужна не столько высшей, сколько средней школе. Университеты охотятся за талантливыми абитуриентами, которых год от года больше не становится.

Хвост ящерицы

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

Первые финалы ICPC на заре движения (с 1977 года) были исключительно внутри американским делом. Первый иностранный чемпион появился в 1990 году, а теперь американские студенты вовсе не выигрывают ICPC. Почему? У историка IT-индустрии, бывшего директора ВЦ АН СССР Григория Громова, уехавшего в Долину, есть аналогия, к которой он прибегает, чтобы объяснить, зачем США отдают другим странам целые куски мирового IT-рынка. Например, так IBM отдала китайской Lenovo производство PC.

Громов называет это «хвостом ящерицы». Хвост можно отбросить, он мешает ящерице бежать вперед. Если в отращивании этого хвоста нет инновационного смысла, то в нем нет смысла вообще. Американцы, придумавшие ICPC, сегодня увлечены иными интеллектуальными соревнованиями. Прежде всего соревнованиями инженеров-роботостроителей, такими как RoboCUP (соревнования роботов-футболистов) и DARPA Grand Challenge (гонки автомобилей-роботов по пустыне в Неваде). На DARPA Grand Challenge призы для победителей серьезные — миллионы долларов.

«Хвост ящерицы» есть и у софтверной индустрии: Индия, Китай, Россия давно уже отлаживают софт по американским заказам. Пусть это немного обидно, но всё равно хорошо. Именно тут, в программировании, Россия пока прочно и по праву занимает уникальное место в мировом разделении IT-труда. Его уступать нельзя: при потере этой базы своего программного производства у нас точно не будет.
 
# Вопрос-Ответ