НОВОСТИ: Счастливая чертова дюжина
НОВОСТИ: Счастливая чертова дюжина
Автор: Денис Коновальчик
На пять дней — с 12 по 16 марта — столица Страны восходящего солнца стала заодно и мировой столицей информатики. В токийском отеле «Хилтон» прошел финал командного чемпионата мира по программированию, ежегодно проводящегося под эгидой влиятельной Ассоциации вычислительной техники (ACM).
Вот уже десятилетие на чемпионате ACM продолжается «эра Голубого гиганта». Как подчеркнул в своей «тронной речи» опекун нынешних соревнований, а по совместительству — директор IBM по стратегии программной разработки Дуг Хейнцман (Doug Heintzman), «мы даем студентам всего мира возможность оттачивать умение решать задачи с использованием открытых стандартов». Слова у организаторов не расходятся с делом: официальной платформой соревнований с недавних пор является Linux, а свои решения конкурсанты ваяют на свободных компиляторах языков Pascal, C++ и Java.
Подбивая итоги двух пятилеток, айбиэмовцы с гордостью отметили, что за отчетный период число участников мероприятия выросло всемеро! Масштабы чемпионата продолжают удивлять: в нынешнем сезоне количество участвующих в нем вузовских команд впервые перевалило за шесть тысяч, а честь выступить в финале оспаривали 1756 вузов из 82 стран. В финал пробились 88 сборных; у России — девять из двадцати европейских дружин, так что по представительству в финале нас опередили лишь США и Китай (двадцать и двенадцать команд соответственно). Увлекшись радужной статистикой, организаторы пресс-релиза допустили забавный ляп, заявив, что в нынешнем первенстве принимают участие команды со всех шести континентов. Впрочем, несмотря на все симпатии организаторов соревнований к «пингвиньей» операционной системе, загадочного вуза из Антарктиды в турнирной сетке так никому обнаружить и не удалось.
На пять часов раздумий командам было предложено десять задач. Помимо сданных решений в зачет шли и штрафные минуты — сумма отрезков времени от старта соревнований до моментов сдачи всех задач плюс двадцать минут за каждый неверный подход. За час до финального свистка, когда табло чемпионата по традиции «замерзло», верхние строчки турнирной таблицы с семью решенными задачами занимали команды Варшавского университета и Университета Синьхуа из Пекина, чей отрыв от соперников составлял целых две задачи. Впрочем, интриги так и не получилось: за оставшееся время поляки лишь упрочили лидерство. Сдав за последний час еще одну задачу, четверокурсники Марек Цыган (Marek Cygan), Марчин Пилипчук (Marcin Pilipczuk) и первокурсник Филип Вольски (Filip Wolski) вписали свои имена в скрижали ACM.
Несмотря на то что китайцам так и не удалось за последний час пополнить свою копилку, сместить их со второй позиции никто не смог. Ближайшим преследователям — командам Санкт-Петебургского университета информационных технологий, точной механики и оптики и Массачусетского технологического института — удалось сдать лишь по одной задаче. Финишировав «ноздря в ноздрю» по штрафному времени (что случается довольно редко), эти команды «распилили» третье место. Пожалуй, оптимальным образом заключительные 60 минут состязания провела команда Петрозаводского государственного университета. Сдав за последний час две задачи, она взлетела на одиннадцать позиций в рейтинге, став последней из команд, покорившей полдюжины задач. Поскольку приз «за волю к победе» в распоряжении организаторов первенства отсутствовал, им ничего не оставалось, как одарить упорных петрозаводцев «сверхплановой» бронзовой наградой, доведя число медалистов до счастливой для россиян чертовой дюжины.
В целом, в Токио «наши» выступили весьма успешно: как и год назад, на их счету пять медалей, при этом команда Новосибирского государственного университета в прямом смысле оказалась «без двух минут» золотой. Достойно выступили и прошлогодние чемпионы-саратовцы, полностью обновившие состав, и на сей раз довольствовавшиеся «серебром», а также выстрелившие в «десятку» москвичи. Так что, заглядывая в будущее, россияне с полным на то основанием могут заявить нынешним чемпионам: «Jeszcze nie wieczуr».
Наши в Цюрихе
Один из участников прошлогодней команды Саратовского госуниверситета, победившей в американском Сан-Антонио (см. «КТ» #636), совсем недавно получил работу в швейцарской исследовательской лаборатории IBM. Мы связались с Иваном Романовым (на фото), чтобы узнать, как участие в чемпионатах ACM помогает сменить место жительства.
Иван, как вам поступило предложение от IBM?
— IBM, как спонсор чемпионата, в качестве одного из призов выдает победителям ноутбуки. Чтобы компьютеры были с российской гарантией, выдача призов проходила позже, в московском представительстве корпорации. Завязался разговор, и мы поинтересовались, есть ли у них какие-то вакансии. Оказалось, что мы можем поработать в швейцарской исследовательской лаборатории. Конкретно была достигнута договоренность относительно нас двоих с Романом Алексеенковым (капитан команды-победителя чемпионата-2006).
Вы долго думали над предложением?
— Если честно, не думал вообще.
Чем вы сейчас занимаетесь?
— Пошла лишь третья неделя работы здесь, так что я изучаю литературу и знакомлюсь с обстановкой. А в принципе работа связана с программированием на Java для встроенных систем, конкретно смарт-карт.
Насколько опыт участия в чемпионатах помогает в реальной программистской работе?
— Вопрос действительно актуальный. Исполнительный директор чемпионата Билл Пучер неоднократно заявлял о том, что на соревнованиях решаются реальные бизнес-задачи, и его слова, кстати, повторяли многие СМИ. Я, конечно, ему верю, но понимаю, что директор должен решать свои бизнес-задачи: обосновывать необходимость соревнований, привлекать спонсоров…
Сколько я работал программистом — семь лет — и общался с коллегами, реализовывать какие-то хитрые алгоритмы со сложной математической базой, то есть со всем аппаратом, который вовлечен в соревнования, в реальной работе приходится очень редко. Это какие-то отдельные специфические области, где занято не так много людей.
Но соревнования ACM сейчас носят вполне массовый характер. В этом году на предварительных этапах участвовало больше шести тысяч команд, по три человека в команде получается больше восемнадцати тысяч. И вот им соревнования дают навыки, которые очень важны в повседневной работе программиста. Это критический взгляд на код, который ты написал, навыки поиска ошибок, оптимизации времени работы программы. И безусловно — привычка к коллективной работе. В соревновании только один компьютер на троих, и вынужденно приходится строить модель взаимодействия с коллегами, иначе команда через год-два просто развалится.
Если подвести итог: есть чемпионы и признанные лидеры — они могут придумать и изобрести что-то новое, осуществить какой-то прорыв. Но их не так много. А вот индустрии программного обеспечения будут полезны те, условно говоря, оставшиеся семнадцать тысяч из восемнадцати, которые потратили два-три года на занятия и выработали у себя полезные качества, о которых я говорил. И которые им пригодятся, чтобы как минимум не писать откровенную ерунду в своих программах и распознавать ее в коде других людей. В общем, чемпионаты способствуют поднятию общей культуры программирования, вот почему они важны.
Есть ли какие-то особенности работы у разных команд и университетских школ?
— С нынешними чемпионами мира мы встречались в феврале в Петрозаводске, на тренировочных сборах по программированию. Стиль их работы отличается от стиля абсолютного большинства наших команд. Они большую часть времени, три-четыре часа из пяти, работают по одному. Они так сильны индивидуально, что могут позволить себе по отдельности решать задачи средней сложности и только в конце вместе добивать самые трудные задания. А в команде Массачусетского технологического института признанным лидером является один человек — китаец Губерт Хван. Вообще, нередко встречаются команды, в которых один человек решает большую часть задач, а его товарищи мало что делают.
В наших саратовских традициях, по крайней мере до сих пор, было принято жесткое правило, что в 90% случаев один человек не должен писать код самостоятельно. Если кто-то что-то пишет на компьютере, то второй следит за ошибками — у него есть возможность смотреть на код с более абстрактной точки зрения.