• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

«Можно и вовсе не пускать математика за компьютер»

Михаил Густокашин — о спортивном программировании и том, как в него попадают

Moscow Programming Contest / flickr

На днях сразу 10 команд Вышки прошли в полуфинал российского этапа самого престижного чемпионата по спортивному программированию среди студентов, ICPC. В своей авторской колонке Михаил Густокашин, директор Центра студенческих олимпиад факультета компьютерных наук, рассказывает, что такое вообще спортивное программирование и как в него попадают.

Спортивное программирование — довольно необычное словосочетание. Как и во всяком спорте, в программировании проводятся соревнования и обычно под «спортивным программированием» понимают решение алгоритмических задач на время. Решением является программа, интерфейс которой примитивен, нет обработки ошибок и многих других составных частей, из которых минимум на 90% состоит программирование «неспортивное».

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

Главное студенческое соревнование в этом спорте — ICPC (International Collegiate Programming Contest). В команде три человека, у них один компьютер, пять часов времени и около 10 задач. Их цель — решить как можно больше задач, потратив наименьшее время и сделав как можно меньше неудачных посылок. Программы участников тестируются на заранее подготовленных тестах, результат проверки виден участникам сразу.

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

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

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

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

Кроме студенческих соревнований есть и соревнования без ограничений по возрасту, многие из них проводятся онлайн и не требуют наличия команды. Проделать «путь чемпиона» может каждый: разомните мозги задачами с математических кружков 5-6 класса, освойте базовое программирование за несколько недель с помощью подходящего онлайн-курса и приступайте к простым соревнованиям, например, на codeforces.com

Читайте разборы, смотрите решения опытных участников, ищите незнакомые слова и изучайте конкретные алгоритмы. Или, для более структурированного знания, пройдитесь по курсу алгоритмов какой-нибудь образовательной программы, на которой учатся сильные спортивные программисты. Пара лет вечеров, проведенных за решением задач и изучением алгоритмов — и «массовый разряд» у вас в кармане.
IQ

Автор текста: Густокашин Михаил Сергеевич, 31 октября, 2019 г.