10 задач за пять часов и шанс на работу: что такое спортивное программирование
Как устроен один из самых массовых видов спорта в РоссииВ апреле Министерство спорта опубликовало ежегодный отчет. В нем говорится, что в 2024 г. число систематически занимающихся спортом россиян достигло 80 млн человек. В топ-3 самых массовых дисциплин – футбол, плавание и волейбол. На 4-м месте – спортивное программирование. В группу лидеров оно ворвалось еще в 2023 г. Возможно, программирование мелькало бы на верхних строчках и раньше, но в России его признали спортом лишь в 2022 г., и прежде оно не учитывалось в статистике. Число занимающихся этим видом в последние два года почти не изменилось – это около 2,2 млн человек.
Решить задачу
Вокруг программирования давно разворачивается спор, считать ли его спортом. Чаще всего сторонники официального признания апеллируют к шахматам. Обе дисциплины малоподвижные, но в них есть соревновательная составляющая. «Это спорт хотя бы потому, что у нас есть прозрачные критерии оценивания, – убеждает «Ведомости. Спорт» Евгений Колодин, тренер секции спортивного программирования в университете МИСиС. – Наш вид включает несколько направлений: алгоритмическое программирование, хакатоны, геймтоны, программирование роботов и т. д. – все соревнования проходят по-разному».
Хакатоны и геймтоны можно сравнить с марафонскими забегами – это изнурительные многочасовые или даже многодневные соревнования: один или несколько участников должны за время разработать готовый или почти готовый продукт, а затем презентовать его. Результат их труда оценивают судьи с точки зрения идеи, качества кода, инновационности и пользовательского опыта. Во время хакатонов пишут программы, а на геймтонах – игры. Такой формат соревнований придумали в Канаде в конце 1990-х, а теперь они проходят по всему миру.
Турниры по алгоритмическому (его еще называют олимпиадным) программированию возникли еще в 1970-х, и на хакатоны они не очень похожи. Участникам предлагают решить задачи, часто математические. «Решение задач – это тоже написание программы, – объясняет «Ведомости. Спорту» Тимофей Тимофеев, руководитель клуба спортивного программирования CODE work при Дальневосточном университете. – Но никакой прикладной пользы у такой программы нет. Допустим, нужно написать код для выхода из лабиринта. Это стандартная учебная задача».
Другой пример – из финала чемпионата мира среди университетских команд (ICPC): написать программу, способную рассчитать минимальное количество дорожных знаков. Участникам дают карту условного города с дополнительными вводными. Цель – написать максимально эффективный код. Иногда оговаривают ограничения: можно использовать лишь определенные языки программирования или нужно задействовать минимальное количество оперативной памяти компьютера. «Это обычно элементарный код, но навык его написания очень полезен, – говорит Колодин. – Участники соревнований учатся быстро проверять гипотезы. Во время соревнования за 5 часов нужно решить примерно 10 задач, и в работе полезно уметь быстро писать черновые программы, чтобы знать, сколько она будет потреблять памяти или, скажем, ядер процессора». Соревнования по алгоритмическому программированию бывают личные и командные – до трех человек. Интересно, что на одну команду, как правило, приходится один компьютер – эта традиция родом из тех времен, когда вычислительная техника была редкостью.
ИТМО, МФТИ, ВШЭ
Спортивным программированием в основном занимаются школьники и студенты. По данным Союза ректоров России, в 2023 г. высшее образование получало 4,33 млн человек. Министерство образования утверждает, что в текущем учебном году в школу пошло 18,5 млн детей и подростков. А Минцифры в 2024 г. оценило число профессиональных программистов в 992 000. С учетом этих цифр показатели Минспорта – почти 10% от всех учащихся – выглядят завышенными. В правдивости министерской статистики сомневается и зампред Счетной палаты Галина Изотова, которая заявила, что цифры в недавнем отчете противоречат данным соцопросов. К тому же не решена проблема двойного учета, когда спортсмен, записавшийся в разные секции по одному виду спорта, посчитан два раза. К слову, в Минспорте допускают, что показатели могут быть неточными, «Статистические формы заполняют регионы, корректность иногда вызывает вопросы. Это правда», – заявил глава ведомства Михаил Дегтярев в интервью Sports.ru.
В Федерации спортивного программирования (ФСП) ссылаются на другие цифры. По ее данным, в России 8,2 млн студентов, из них 1 млн учатся в сфере IT. «Еще 612 000 учащихся занимались в кружках дополнительного образования по направлению «программирование», – ответили на запрос «Ведомости. Спорта» в пресс-службе ФСП. – 857 000 человек были заняты в сфере информационных технологий». В сумме получается 2,47 млн россиян, занимающихся спортивным программированием. «Федерация проводит соревнования на регулярной основе, – рассказывает Колодин. – На этом фоне наш вид спорта становится популярнее. Но я очень сомневаюсь, что им занимается 2 млн человек. Точно не знаю, но считаю, что речь о нескольких сотнях тысяч». Тимофеев тоже не уверен в точности оценок Минспорта и приводит в пример недавние соревнования по олимпиадному программированию во Владивостоке. «В одном из них участвовало около 200 школьников, – рассуждает эксперт. – Это был очень крутой турнир с точки зрения организации. А в четвертьфиналах ICPC, которые также проходят у нас, участвовало максимум 150 команд – это 450 студентов».
Турниры по спортивному программированию проводят онлайн и офлайн. Даже на престижном ICPC первые этапы обычно организуют заочно. Преодолевая региональные, национальные и международные раунды, можно выйти в финал. В последние десятилетия российские программисты выступают в нем очень удачно. «В 2000–2020 гг. наши команды доминировали в мире, – вспоминает Колодин. – Тогда мы раз 15 побеждали. В последние годы на первые места вышел Азиатский регион, хотя в 2023 г. победила команда Высшей школы экономики (ВШЭ). Не так давно главным университетом, который собирал программистов-олимпиадников, был ИТМО. Но после 2020 г. они как-то отошли. Сейчас в топе – Московский физико-технический институт (МФТИ) и Вышка. По словам Колодина, среди азиатских команд самые успешные – Пекинский университет и японские вузы. «У них своя культура решения задач, – добавляет эксперт. – У всех европейцев решения обычно похожие. А у Китая все иначе – они сильно углубляются в математику».
Помощь в трудоустройстве
Хотя спортивное программирование получило официальное признание, профессиональным этот вид спорта может считаться с большой натяжкой. Главная причина в том, что успех на соревнованиях зачастую не самоцель. Победители хакатонов, геймтонов и турниров по олимпиадному программированию получают призы. «Я участвовал в полуфинале ICPC, – вспоминает Тимофеев. – Наградили лучшие 12 команд. Тем, кто занял первые четыре места, вручили телевизоры – не помню точно, каждому игроку или по одному на команду. Денежные призы тоже бывают, но обычно в виде сертификата, например, в магазин электроники, который зачастую выступает партнером соревнования. Во Владивостоке победителям четвертьфинала ICPC вручили сертификат, кажется, на 15 000 руб.».
Тимофеев подчеркивает, что призовые по сравнению с зарплатами в IT-сфере несущественные, поэтому главная мотивация для участников – возможность найти работу. Те же хакатоны появились благодаря поддержке компании Sun Microsystems, выпускавшей серверное оборудование и операционные системы. Сейчас соревнованиями по спортивному программированию интересуется большинство лидеров отрасли. В России это «Яндекс» и Т-банк. Победа в турнире способна помочь там устроиться хотя бы на стажировку, а участие – улучшить резюме. «Есть такой сайт – Codeforces, на этой платформе проходят соревнования примерно дважды в неделю, – рассказывает Тимофеев. – Там участники со всего мира – взрослые, студенты, школьники. Высокий рейтинг на сайте – это показатель профессионализма программиста и шанс получить хорошую работу». Лидерство на Codeforces много лет удерживает окончивший петербургский ИТМО белорус Геннадий Короткевич. Правда, он в итоге отказался от предложений «Яндекса», Google и других корпораций, а выбрал науку – взялся за диссертацию. Попутно он продолжает выступать на соревнованиях по спортивному программированию и бьет рекорды мирового рейтинга.