ВЫРУЧИТЬ смогла только «Вика», свободная онлайновая энциклопедия, создаваемая коллективным трудом добровольных авторов.
В бумажных источниках понятия «спортивное программирование» пока не существует. Да и Википедия выдает немного: «по сути спортивное программирование аналогично олимпиадному», но «состязания напрямую не связаны с системой образования».
Сергей Вайс, студент пятого курса факультета автоматики и вычислительной техники МГТУ, подтвердил, что его спорт с учебой, действительно, связан мало. Даже недавний государственный экзамен он сдал как-то «по ходу», в промежутке между тренировкой и снова тренировкой. «Когда это было? Кажется, на прошлой неделе», – вспоминает Сергей. А ведь спортом он начал заниматься всего год назад.
Тогда товарищи с пятого курса предложили присоединиться к их команде для участия в первенстве Южно-Уральского госуниверситета по спортивному программированию.
– В то время я еще ни-че-го не знал, – говорит Сергей, забыв, наверное, что четыре года получал в университете фундаментальные знания по программированию. – В том смысле, что спортсменом был нулевым.
Соревнования по программированию в мире называют спортом, потому что в довольно сжатые сроки и при высокой конкуренции нужно доказать, что ты лучший. Когда-то студентов технического университета к этому спорту приобщил доцент кафедры вычислительной техники и прикладной математики МГТУ Вадим Торчинский. Он тренировал первые команды. Сергей говорит, что к помощи и совету преподавателя и сейчас обращается часто, но степень самодисциплины в этом спорте очень высока.
– Чтобы достичь ощутимого результата, нужно много тренироваться: отрабатывать алгоритмы, повышать скорость, чистоту написания кодов, – объясняет спортсмен.
После пробы сил в первенстве УЮрГУ Сергей сразу решил поехать на четвертьфинал чемпионата мира по программированию в Екатеринбурге. Туда ребята ездят не по приказу деканов – с большим грузом ответственности за спиной и наветом без диплома не возвращаться. Ими движет спортивный азарт. Есть и хороший стимул. Как сообщает Википедия, студенческие олимпиады по программированию финансируют компании, занимающиеся разработкой программного обеспечения и заинтересованные в привлечении талантливых студентов на работу. Региональные олимпиады выявляют кандидатов для участия в чемпионате мира.
Крупнейшая международная студенческая командная олимпиада по программированию, куда рвутся студенты всего мира, называется ACM International Collegiate Programming Contest и проводится с тех пор, когда СССР окружал плотный железный занавес, а слово «программист» было таким же бессмысленным, как «рынок». Спонсором соревнований в последнее время выступает компания IBM. Уже в семидесятых годах чемпионат был самым престижным интеллектуальным состязанием в мировом компьютерном сообществе. Сегодня за титул чемпиона ежегодно вступают в борьбу около семи тысяч университетских команд из более чем восьмидесяти стран мира.
Зачастую команды, как и все студенческое, создаются стихийно. Вот и Сергей, решив в прошлом году ехать на чемпионат Урала в Екатеринбург, с партнерами определился лишь на месте. Три новичка без опыта, но с огромным желанием создали второй состав команды МГТУ. Задание было типичным: за короткое время требовалось придумать программу, способную пройти все тесты жюри. Ребята заняли 20 место. И всерьез заразились спортивным программированием. Летом Сергей уже участвовал в тренировочных сборах в Перми, где познакомился с действующими чемпионами Урала из Ижевского технического университета.
– Это отличная гимнастика для ума. Уже через полгода я стал намного чище писать коды, – признается студент.
Теперь хорошая спортивная форма облегчает и повседневную жизнь. Сергей, например, может создать виртуальный компьютер – на случай, если физических не хватает. Или написать программу, вычисляющую, каких дней недели в текущем году больше. Не каждому, конечно, эта информация нужна. Тут – как в фильме «Тот самый Мюнхгаузен»: если «лишний день» приходится на выходной – хорошо. А если на понедельник – зачем нам знать о лишнем понедельнике?.. Поэтому такими спорными вопросами, как подсчет понедельников, Сергей особенно не увлекается. Зато для собственного удобства он придумал программу, помогающую решать его любимые японские кроссворды.
Кстати, занимаясь чем-то подобным, десять лет назад еще неизвестный миру восемнадцатилетний американский студент-программист Брэд Фицпатрик написал – тоже «для себя» – небольшую программу, «движок» для ведение дневниковых записей в Интернете. Поделился с друзьями, не зная, что положил начало «Живому журналу», самому популярному сегодня дневниковому ресурсу. А ведь сначала это был просто кусок кода, работающий на его домашнем компьютере, какие современные студенты пишут пачками.
Кроме чемпионата мира, среди студентов-программистов большой популярностью пользуется международный конкурс TopCoder. Проводится он в Интернете: за 75 минут нужно решить три задачи. Чем позже спортсмен отправляет правильный ответ, тем меньше баллов получает. После пятиминутного перерыва – следующий этап марафона: участник должен придумать тест, который бы не смогла решить чужая программа.
В TopCoder существует система рейтингов и нечто, похожее на спортивный разряд. Каждому спортсмену присваивают цвет, отвечающий уровню его мастерства: от белого до красного. Сергей Вайс «носит» синий – это уже первый дивизион, но до высшей категории еще две ступени, желтая и красная. В первом дивизионе находится и старший товарищ Сергея Рустам Юзмухаметов, уже аспирант кафедры вычислительной техники и прикладной математики МГТУ. В международном рейтинге Рустам занимает 1939 место из 7260, а Сергей – 2754-е.
TopCoder, как и чемпионат, собирает талантливых программистов со всего мира, передавая их прямо в руки работодателя – крупных международных компаний. На сайте есть свой банк резюме, куда Сергей пока не спешит. Говорит, что сначала нужно «пожелтеть», потому что на «синее резюме никто смотреть не будет».
Сейчас Сергей и Рустам в поте лица готовятся к очередному чемпионату мира по спортивному программированию. Тренировки идут плотно: три дня, с пятницы по воскресенье, сплошной мозговой штурм. Прямо сейчас, например, оба «висят» на acm.tju.еdu.cn, где находится своего рода тренировочная база спортивных программистов – большой архив задач. Ребята составляют свою олимпиаду – и пять часов ее решают.
– За выходные мозг работает в таком режиме, что потом пару дней лучше вообще не думать, – говорит Сергей.
Он и не думает, а идет кататься на коньках.
…В этом году Сергей стал лауреатом Всероссийской студенческой олимпиады по информатике, которую ежегодно проводит Воронежский государственный университет. Он признан лучшим среди студентов технических вузов и пятым – среди студентов России. Это хоть и не «желтая категория», но все равно большое достижение. Тем более что наш город на олимпиаде Сергей представлял в одиночестве.
– Остальные ребята ушли «на пенсию»: закончили университет, нашли работу, успокоились. На чемпионате мира строгие ограничения по возрасту. Многие из «наших» сейчас создают программы в фирме «Компас+», так и работают своей командой, – рассказывает Сергей.
Сам он тоже не бездельничает: передает свои знания школьникам, готовит ребят к олимпиадам по программированию в образовательном центре «Персонал». И ни на миг не забывает про собственные тренировки. Говорит, что форму терять нельзя – иначе потеряешь потенциал. А ему многого нужно добиться. Ведь «до пенсии» еще есть время.