Спортивное программирование ближе к спорту, чем к предметным олимпиадам

На старт, внимание — код!

Хрестоматийную фразу основоположника современных Олимпийских игр Пьера де Кубертена «О, спорт, ты — мир» сегодня можно смело развить. Спорт сейчас — уже целая вселенная, где со временем гаснут звезды — уходят в небытие отдельные виды, и загораются новые. Возможно, когда–нибудь на небосклоне засияет и спортивное программирование, по которому уже проводятся регулярные чемпионаты мира. Кстати, белорусские команды выступают на них весьма и весьма успешно. Как удается этой необычной дисциплине балансировать на грани между чисто спортивным зрелищем и своеобразной тренировкой для программистов, корреспонденту «СБ» рассказал Алексей Толстиков, сам не так давно участвовавший в подобных соревнованиях.

Спортивное программирование ближе к спорту, чем к предметным олимпиадам


Сегодня Алексей работает в минском офисе компании «Яндекс» разработчиком группы создания и внедрения факторов ранжирования, а также курирует академические программы компании в Беларуси, передавая знания другим. Более того, стал своего рода тренером — помогает готовиться к международным соревнованиям по программированию команде из своей альма–матер, БГУ, а также преподает в стенах родного университета.


— Кстати, понятие «спортивное программирование», насколько мне известно, впервые появилось именно в Беларуси, — отмечает интересную деталь Алексей Толстиков. — Неоднозначен статус и самих участников турниров: кто–то их называет «игроки», а я предпочитаю — «соревнующиеся». Ведь они именно соревнуются между собой в решении сложнейших задач.


В общем, дисциплина, история которой не наберет и двух десятков лет, только переживает кризис самоопределения и находится в поиске верных терминов. Главное же — сам формат и вид турниров уже вполне устоялся. Разнообразию их иной вид спорта позавидует. Здесь и международная олимпиада школьников, и чемпионат мира, но уже с участием команд ведущих университетов, и отдельные состязания между одиночками в рамках профессиональных сообществ программистов, и соревнования под эгидой известных IT–корпораций... Кстати, все перечисленное предполагает выступление в одиночном разряде, кроме самого престижного чемпионата мира по программированию ACM ICPC. За отведенные по регламенту пять часов ребята должны решить от 8 до 12 задач, причем с определенными оговорками. Алексей делится некоторыми любопытными подробностями:


— Несмотря на то что в каждой команде по три студента, в их распоряжении всего один компьютер. Так что приходится прибегать к командной тактике, которая может быть самой разной, как в футболе или хоккее. В одной тройке, например, изначально выбирают ответственного за написание кода–программы, в то время как двое других участников ищут решения предложенных задач. Здесь опять же возможны вариации: где–то задания делятся поровну, где–то по принципу «сложных» и «легких»...


Команда БГУ, имеющая четыре медали, включая «золото» в 2004–м, а в прошлом году взявшая «серебро», кстати, тоже придерживалась принципа разделения труда, но по–своему. Двое одновременно и решали задачи, и писали код, в то время как третий был своеобразным мозговым и координирующим центром, за помощью к которому обращались в трудную минуту. О стратегиях Алексей может судить сразу в двух ипостасях — и как участник турниров, и как составитель задач для отборочных турниров чемпионата ACM ICPC:


— В основе любой задачи на турнире по программированию лежит некий математический алгоритм — участники должны его раскусить и переложить в код, написать программу. Составители задач, в свою очередь, должны подготовить специальные тесты, которые позволяют проверить правильность решений участников. Чаще всего они идут по одному из двух путей: либо составляют вокруг алгоритма задачу с условным «бытовым» описанием, либо к какому–то явлению из реальной жизни «прикручивают» нужный алгоритм. Например, за окном мы видим обычную березу, у которой опадают листья и постоянно вырастают новые, но давайте представим, что дерево это — высотой полтора километра и нужно рассчитать, сколько листьев на нем будет через тысячу лет.


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


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


— У спортивного программирования есть много плюсов: оно однозначно учит работать в команде, решать сложные задачи в сжатые сроки, тренирует стрессоустойчивость, позволяет здорово углубить знания в определенной области. Привыкший к таким интересным и нетривиальным задачам участник чемпионатов на работе может просто заскучать. Думаю, сейчас в спортивном программировании очень силен собственно спортивный, соревновательный момент, а вот практический эффект стоит на втором месте, — считает Алексей Толстиков.


Выходит, есть немалые шансы, что совсем скоро мы будем удивляться: и как это раньше по спортивным каналам не транслировались чемпионаты по программированию.

Прямая речь


Студент 5–го курса факультета математики и прикладной информатики БГУ, преподаватель Школы анализа данных Яндекса, разработчик в минском офисе компании Алексей Колесов:

— Школьникам и студентам тренировки и участие в соревнованиях позволяют выйти за рамки учебных программ, развиваться профессионально и лично. Мне спортивное программирование в жизни помогло: опыт работы в команде, например, важен для разработчика крупной компании. И работодатели часто обращают внимание на эту строку в резюме. На мой взгляд, спортивное программирование — это увлекательно и полезно. Увлекательно — потому что в работе не всегда встречаются такие интересные задачи, а полезно — потому что оно позволяет расширять знания и умения. Но, как во всяком деле, здесь важно равновесие: если слишком увлечься чем–то, то не останется времени и сил на остальную жизнь.

akostyukevich@sb.by


Советская Белоруссия №204 (24585). Пятница, 24 октября 2014.

Заметили ошибку? Пожалуйста, выделите её и нажмите Ctrl+Enter