Инкубатор гениев
Чемпионат мира по программированию влияет на будущее сильнее, чем чемпионат мира по футболу. Как тренируют будущих чемпионов и чем они потом занимаются
Знаете анекдот о старике, который на смертном одре раскрыл внукам свой секрет вкусного чая — «кладите больше заварки»? Так вот: чтобы построить Google, нужно просто инвестировать в образование», — говорит Светлана Великанова, CEO барселонского университета Harbour.Space. В этом университете в начале октября 2018 года прошли третьи учебно-тренировочные сборы Hello Barcelona Programming BootCamp по спортивному программированию для студенческих команд. В них приняли участие 39 команд из 16 стран, из них 12 команд из России. Такие тренировочные сборы — главный этап подготовки к чемпионату мира по программированию ACM ICPC (International Collegiate Programming Contest). В сущности, это отборочные соревнования, победитель которых почти всегда становится призером чемпионата.
Зачем нужны чемпионы
Чемпионаты по программированию ICPC проводятся ежегодно с 1977 года. Первоначально в них участвовали в основном команды из США, однако с конца 1980-х география начала расширяться. Американские программисты становились чемпионами 17 раз, однако в последний раз это произошло 20 лет назад. На втором месте Россия: 13 команд завоевывали чемпионский титул, причем последние семь лет Россия побеждает ежегодно. Другие чемпионы — Китай (4 победы), Канада, Австралия, Польша (по 2 победы), Германия и Чехия.
В 2018 году обладателями кубка ICPC шестой раз подряд стала команда МГУ, а в число победителей вошли еще три российские команды: МФТИ (Московский физико-технический институт), ИТМО (Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики) и УрФУ (Уральский федеральный университет).
В каждой команде по три человека. В их распоряжении один компьютер, им дают 12 задач и пять часов на решение. Задачи отличаются от тех, какие стоят перед программистами Google или «Яндекса»: вместо сотен тысяч строк промышленного кода нужно написать код из 150–300 строк, который заработает на компьютере, причем сделать это быстрее всех.
«Вот классическая задача на чемпионате, — рассказывает основатель сообщества Codeforces Михаил Мирзаянов. — Представьте, что у нас есть помещение и серия заявок на аренду. Каждая заявка характеризуется стартовым и финальным днем, а также определенной стоимостью. Мы должны выбрать такой поднабор заявок, чтобы они не пересекались, а мы получили максимальную прибыль». Другой пример. Дана карта местности с несколькими городами. Правительство должно построить аэропорт таким образом, чтобы минимизировать сумму расстояний между всеми городами и аэропортом. Программистам нужно придумать алгоритм, который найдет эту точку на карте. Это математическая задача. В сущности, алгоритм, который выдает наиболее релевантные страницы в поисковике, делает то же самое.
Победить на чемпионате мира не просто почетно — такая победа нередко становится залогом последующих свершений. Один из чемпионов мира Тони Шей создал компанию Zappos по продаже обуви, которую в 2009 году Amazon купил за $1,2 млрд. Другой победитель ICPC Адам д’Анджело, друг Марка Цукерберга, стал техническим директором Facebook (соцсеть признана в РФ экстремистской и запрещена).