Харбинская рокировка

В состоявшемся в Харбине финале чемпионата мира по командному программированию Россия в очередной раз подтвердила свой высокий статус. Правда, первое место завоевали китайцы

Харбинская рокировка

После пекинской летней Олимпиады-2008 долго существовавшее в мире большого спорта двоевластие — жесткое противостояние СССР-России и Соединенных Штатов — закончилось. Планомерно нарастив в комфортной домашней обстановке мощные бицепсы, китайские атлеты вышибли россиян с верхушки спортивного олимпа, с большим запасом выиграв неофициальный командный зачет по числу золотых медалей и лишь немного уступив американцам по общему количеству призовых наград.

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

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

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

С 2000 года борьба за первое место ведется между тремя странами — Россией, Китаем и, как ни странно, Польшей. Российские команды побеждали за последние десять лет шесть раз (в 2008-м и 2009 годах, дважды подряд, — Санкт-Петербургский государственный университет информационных технологий, механики и оптики), поляки (Варшавский университет) — два раза, китайцы — трижды, причем все три раза, включая и последний чемпионат-2010 в Харбине, победителем оказывался Шанхайский университет.

В этом году пальму первенства наши студенты уступили, однако в целом выступили более чем достойно, оказавшись в медальном зачете наравне с настырными китайцами.

Приток молодой крови

Первый официальный мировой финал чемпионата по программированию среди сборных команд вузов был проведен в 1977 году. С самого начала главным организатором этого интеллектуального соревнования стала Ассоциация вычислительной техники (Association for Computing Machinery, ACM), крупнейшее образовательное и научное общество, объединяющее специалистов из разных стран мира.

В конце 1990-х годов чемпионат взяла под крыло корпорация IBM, и ее мощные спонсорские возможности сильно повлияли на дальнейший быстрый рост массовости и популярности соревнований. Так, если в 1997 году во втором, региональном, этапе участвовало лишь чуть более двух с половиной тысяч студентов, то в 2010-м — уже почти 22 тысячи молодых программистов, представлявших 1931 вуз из 82 стран мира.

Говоря на пресс-конференции о причинах, побуждающих лидера IT-рынка регулярно спонсировать организацию и проведение мировых чемпионатов по программированию, директор по стратегии IBM в области программного обеспечения Дуг Хейнцман прежде всего отметил, что руководители компании «считают своим прямым долгом и важнейшей обязанностью всемерно способствовать выращиванию нового поколения креативно мыслящих людей, будущих создателей прорывных технологий». Но при этом честно признал, что, помимо этих чисто гуманистических интенций, интерес IBM к «битве интеллектов» объясняется и вполне прагматическими соображениями. Победители и призеры этих соревнований исправно обеспечивают приток молодой крови в американскую компанию. Действительно, многие финалисты прошлых лет уже пополнили штат различных научно-исследовательских лабораторий корпорации. Успели получить официальные предложения от IBM по стажировке или трудоустройству и все золотые медалисты (участники четырех команд) только что завершившегося харбинского чемпионата.

Занимательные головоломки

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

Как рассказал на промежуточной пресс-конференции исполнительный директор чемпионата ICPC (International Collegiate Programming Contest), профессор Университета Бэйлора Билл Паучер, до сих пор еще не было случая, чтобы победитель финального соревнования справился бы со всеми конкурсными задачами. Не стали исключением и два последних финала. В 2009 году участникам чемпионата было предложено 10 таких головоломок, и две лучшие команды, Санкт-Петербургского государственного университета информационных технологий, механики и оптики и китайского Университета Цинхуа, решили по девять из них; в этом году организаторы почему-то отобрали 11 заданий, и занявшие первое и второе места команды одолели лишь по семь.

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

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

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

[inc pk='1559' service='media']

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

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

Чтобы предложенное командой решение было зачтено в качестве правильного, требовалось представить работающий алгоритм, программу, написанную на Java или C+/+, которую судьи проверяли при помощи стандартных тестов (в программе не должно быть ошибок компиляции, а также при ее тест-прогоне нельзя превысить заранее установленный лимит обсчета результатов по времени).

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

Арифметика харбинского финала

Прежде чем перейти к спортивным результатам очередной «битвы интеллектов», приведу вкратце весьма любопытную регионально-страновую статистику участников мирового финала.

Всего в этом году в Харбин приехало 103 университетских команды из 32 стран мира. И что в первую очередь порадовало при изучении списка финалистов — на удивление большая квота для россиян: из 21 команды, представлявшей Европу, на Россию пришлось 11; по две команды представляли Украину и Польшу и одна — Белоруссию. От остальной Европы отобрались лишь три команды — по одной из Франции, Германии и Испании, а также два коллектива из Скандинавии (Швеции и Финляндии).

Хозяева чемпионата привезли в Харбин 20 команд, отдельно были представлены команды Гонконга и Тайваня.

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

Четвертой по общему представительству в финале оказалась Бразилия (семь команд), отмечу также, что честь Индии, одного из ведущих мировых центров программирования, защищали только три команды. Впрочем, ни бразильцы, ни индийцы в топ-списках так и не появились.

В итоге все медальные комплекты поделили между собой команды Китая (с учетом островного Тайваня), России и «остальной» Европы. Две лучшие из них — «тройки» Шанхайского университета и Московского государственного университета, как я уже упомянул, правильно решили по 7 из 11 предложенных жюри задач, но китайская молодежь оказалась более проворной. Таким образом, именно шанхайцы по дополнительным показателям были признаны чемпионами мира, а студенты мехмата МГУ Илья Ра­зенштейн, Илья Корнаков и Алексей Гусаков довольствовались вторым местом. Правда, по правилам проведения мировых финалов команды, занявшие места со второго по четвертое, тоже награждались золотыми медалями, поэтому аналогичный набор получили, кроме россиян и китайцев, студенты Национального тайваньского университета и киевляне из Национального технического университета имени Тараса Шевченко. В свою очередь, участники команд, расположившихся на 5—9-м местах, удостоились серебряных медалей (5-е место — Петрозаводский государственный университет, 6-е — Университет Цинхуа (Китай), 7-е — Саратовский государственный университет, 8-е — Университет Варшавы (поляки снова не подкачали), 9-е — Санкт-Петербургский государственный университет (питерцы получили сверхплановое «серебро», так как показали одинаковое время решения с варшавскими студентами). Наконец, бронзовыми медалями наградили за 10—13-е места еще два китайских университета, Королевский технологический институт Швеции и Уральский государственный университет. Все серебряные и бронзовые призеры смогли решить по шесть задач.

Рутина и интеллект

Как отметил тренер московской университетской команды старший преподаватель мехмата МГУ Антон Панкратьев, его подопечные выступают вместе третий год подряд: «Это сильная, слаженная команда, все участники которой, еще будучи школьниками, завоевывали призовые медали на региональных олимпиадах по программированию». Их удачное выступление было вполне прогнозируемым, тем более что на всероссийских сборах перед финалом чемпионата мира в Петрозаводске в декабре 2009 года именно они выиграли неофициальный кубок страны.

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

С точкой зрения тренера команды МГУ вполне солидарен и Юрий Чехович, генеральный директор «Форексиса» — российской IT-компании, образованной в 2000 году на базе всемирно известной математической школы академика Юрия Журавлева и специализирующейся на разработке и продвижении наукоемких программных продуктов. (В 2001-м компания стала победителем Конкурса русских инноваций.) По словам Чеховича, «российские программисты сегодня в среднем обладают гораздо более высоким уровнем профессионализма, чем рядовые кодеры — “рабы галеры”, находящиеся в самом низу иерархической пирамиды софтверной отрасли, и они, безусловно, высоко востребованы в мировой IT-индустрии».

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

Да, в сфере так называемого интеллектуального программирования (там, где на первый план выходит алгоритмическая смекалка) мы пока остаемся в числе мировых лидеров, и те же индийцы, скорее всего, нам еще долго не смогут составить здесь достойной конкуренции. Однако, как показывает и динамика распределения призовых мест на нескольких последних чемпионатах мира по командному программированию, большие проблемы сулят китайцы, и приходится признать, что их шансы постепенно вытеснить нас с мирового рынка интеллектуального программирования весьма высоки. Причем, как полагает Юрий Чехович, «эта “китайская угроза” во многом усугубляется не только чисто количественными преимуществами наших соседей — это полбеды, но еще и тем, что они до сих пор очень вольно обращаются с проблемами копирайта на программное обеспечение. У нас же в России, по крайней мере на корпоративном уровне, “вольные пиратские времена” остались в далеком прошлом».

Статьи по теме:
Спецвыпуск

Бремя управлять деньгами

Замедление экономики разводит все дальше банки и реальный сектор

Бизнес и финансы

Номер с дворецким

Карта столичных гостиниц пополнилась новым объектом

Тема недели

От чуда на Хангане — к чуду на Ишиме

Как корейский опыт повышения производительности может пригодиться Казахстану?

Тема недели

Доктор Производительность

Рост производительности труда — главная цель, вокруг которой можно было бы построить программу роста национальной экономики