спортивное программирование
Jun. 9th, 2016 08:04 pm«В Facebook и Google мы не пойдем»: Почему одни из лучших программистов мира живут и работают в Екатеринбурге
Любопытное интервью с призерами чемпионата мира по программированию из Уральского федерального университета.
Мне вот всегда было интересно понять, почему в России (точнее, вообще на постсоветском пространстве) так популярны соревнования по программированию (наверное, термин, используемый в этой статье, подходит лучше: "спортивное программирование"), притом что на загнивающем Западе я о них долгое время и не знал даже, а когда знал, почему-то совершенно не тянуло. Это как какой-то отдельный мир совершенно. Я много лет активно участвовал в разных программистких сетевых сообществах, например, тусовался на рассылках различных опенсорс-проектов, встречался в реальной жизни с людьми иногда, но никогда при этом не заходила речь о TopCoder'е, скажем. О том, что TopCoder существует, я узнал из русского ЖЖ, по-моему (а узнав о нем, немедленно и срочно не пошел туда, не создал аккаунт и не стал участвовать). Это как-то очень забавно и интересно понять, почему.
Частично эту популярность объясняют некоторые реплики этого интервью, по-моему:
Т.е. это действительно воспринимается как спорт, в первую очередь. Включая какие-то дикие ограничения, характерные как раз для спортивных соревнований:
Ну вот я не понимаю, как это может быть настолько привлекательным. Программирование - это созидательная деятельность. Не было программы, и вот она есть. Ты не мог что-то сделать с помощью компьютера, и вот ты можешь. Какая разница, это заняло 20 минут или 40? Это просто какой-то неинтересный аспект.
Нет, я могу себе представить ограничения, которые привносят спортивный азарт - но на уровне нескольких дней и действительно сложных, интересных задач. Типа соревнования Ludum Dare - написать игру за два дня. Или The ICFP Programming Contest, там дают три дня, и условия обычно крышесносные. Сравните это с заданиями ЧМ по спортивному программированию. Если соревноваться на минуты и секунды (еще и с одним компьютером на троих), то задания выходят вот такого рода - хитрое применение нескольких стандартных алгоритмов с какой-нибудь заковыристой "изюминкой".
В общем, странный это какой-то мир. Не обессудьте, те, кто от него тащится. Но не понимал и не понимаю.
Любопытное интервью с призерами чемпионата мира по программированию из Уральского федерального университета.
Мне вот всегда было интересно понять, почему в России (точнее, вообще на постсоветском пространстве) так популярны соревнования по программированию (наверное, термин, используемый в этой статье, подходит лучше: "спортивное программирование"), притом что на загнивающем Западе я о них долгое время и не знал даже, а когда знал, почему-то совершенно не тянуло. Это как какой-то отдельный мир совершенно. Я много лет активно участвовал в разных программистких сетевых сообществах, например, тусовался на рассылках различных опенсорс-проектов, встречался в реальной жизни с людьми иногда, но никогда при этом не заходила речь о TopCoder'е, скажем. О том, что TopCoder существует, я узнал из русского ЖЖ, по-моему (а узнав о нем, немедленно и срочно не пошел туда, не создал аккаунт и не стал участвовать). Это как-то очень забавно и интересно понять, почему.
Частично эту популярность объясняют некоторые реплики этого интервью, по-моему:
"А почему именно в этот раз УрФУ показал лучший результат? Звезды сошлись?"
Михаил Рубинчик: Команда у нас звездная. Олег, Леша и все остальные очень сильные ребята. Олег сейчас на шестом курсе, начал заниматься на втором, но уже к третьему у него был приличный уровень.[...]
"Тебе что ближе? Стартап? Или большая компания?"
Олег Меркурьев: Я вообще нигде не работал. И в ближайшие полгода работать нигде не собираюсь. Пойду в аспирантуру, наукой надо немного позаниматься, а то я вообще все свое время тратил на спортивное программирование.
Т.е. это действительно воспринимается как спорт, в первую очередь. Включая какие-то дикие ограничения, характерные как раз для спортивных соревнований:
"Давайте поговорим немного про сам чемпионат. Три человека в команде. Один компьютер. Почему один? Почему не три?"
Михаил Рубинчик: Жюри когда-то так решило. Это было тридцать лет назад.
Олег Меркурьев: Тогда, возможно, были еще дополнительные причины, которых сейчас нет. И тогда даже по компьютеру на команду – это было много, а на человека уж совсем.
[...]На ЧМ можно пользоваться принтером. Первый человек сел, написал какое-то решение, оно не заработало. Ему нужно найти ошибку. Читать с компьютера – это дорого, у нас же ресурс один. Поэтому распечатывают на принтере и читают на листочке.
Ну вот я не понимаю, как это может быть настолько привлекательным. Программирование - это созидательная деятельность. Не было программы, и вот она есть. Ты не мог что-то сделать с помощью компьютера, и вот ты можешь. Какая разница, это заняло 20 минут или 40? Это просто какой-то неинтересный аспект.
Нет, я могу себе представить ограничения, которые привносят спортивный азарт - но на уровне нескольких дней и действительно сложных, интересных задач. Типа соревнования Ludum Dare - написать игру за два дня. Или The ICFP Programming Contest, там дают три дня, и условия обычно крышесносные. Сравните это с заданиями ЧМ по спортивному программированию. Если соревноваться на минуты и секунды (еще и с одним компьютером на троих), то задания выходят вот такого рода - хитрое применение нескольких стандартных алгоритмов с какой-нибудь заковыристой "изюминкой".
В общем, странный это какой-то мир. Не обессудьте, те, кто от него тащится. Но не понимал и не понимаю.
no subject
Date: 2016-06-09 05:12 pm (UTC)no subject
Date: 2016-06-09 06:23 pm (UTC)(no subject)
From:no subject
Date: 2016-06-09 05:12 pm (UTC)Более того.
Date: 2016-06-10 07:25 am (UTC)Re: Более того.
From:no subject
Date: 2016-06-09 05:31 pm (UTC)Но там больше, гораздо больше :)
no subject
Date: 2016-06-09 05:36 pm (UTC)no subject
Date: 2016-06-09 05:44 pm (UTC)no subject
Date: 2016-06-09 05:41 pm (UTC)no subject
Date: 2016-06-09 05:45 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-06-09 05:45 pm (UTC)no subject
Date: 2016-06-09 10:29 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2016-06-09 05:46 pm (UTC)no subject
Date: 2016-06-10 06:19 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-06-09 05:46 pm (UTC)no subject
Date: 2016-06-09 06:25 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-06-09 05:48 pm (UTC)А вот насчёт Гугла, кто объяснит?
Date: 2016-06-10 07:33 am (UTC)RE: А вот насчёт Гугла, кто объяснит?
From:Ну как же добровольно?
From: (Anonymous) - Date: 2016-06-10 08:24 am (UTC) - Expand(no subject)
From:Не верю.
From: (Anonymous) - Date: 2016-06-10 10:11 am (UTC) - Expand(no subject)
From:(no subject)
From:Не, не даёт и поиском.
From: (Anonymous) - Date: 2016-06-10 09:27 am (UTC) - Expand(no subject)
From:(no subject)
From: (Anonymous) - Date: 2016-06-11 04:36 pm (UTC) - Expand(no subject)
From:no subject
Date: 2016-06-09 05:51 pm (UTC)ЧГК, блиц в шахматах, Старкрафт, мультитейблинг в покере. Все в ту ж копилку. 20 минут или 40 - огромная разница.
А программирование - тут просто площадка для применения этих навыков.
Вы не понимаете, потому что вам кажется, что оно тут главное. А оно тут второстепенное. Главное тут - спортивно-игровой драйв. Вы смотрите на это как программист, а нужно смотреть с точки зрения игрока.
Это игра.
no subject
Date: 2016-06-09 05:54 pm (UTC)я думаю что это из разряда "зелен виноград".
no subject
Date: 2016-06-09 06:29 pm (UTC)(no subject)
From: (Anonymous) - Date: 2016-06-09 06:45 pm (UTC) - Expand(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-06-09 06:01 pm (UTC)Первая разница - принимаются только те решения, которые прошли все тесты. Т.е. дополнительный аспект - нужно прежде всего решить задачу.
Вторая разница - если отправлено решение, и оно не прошло хотя бы один тест, то задача получает -1 балл. Если потом сдать задачу, то каждый -1 балл конвертируется в 20 штрафных минут. Другими словами, сдавать решения с багами плохо. т.е. ещё один аспект - не нужно ставить в бой такие программы, которые работают неправильно, а нужно их либо хорошо предварительно тестить, либо использовать другие подходы для повышения качества.
> написать игру за два дня
Такая задача не формализуется должным образом.
> но на уровне нескольких дней и действительно сложных, интересных задач.
Это не формат олимпиады. Не припомню, чтобы на Олимпийских играх кто-то соревновался несколько дней. Если и есть, то это исключения.
> хитрое применение нескольких стандартных алгоритмов
По поводу алгоритмизации ACM как раз таки учит очень хорошо. И вопрос не в том чтобы выбрать алгоритм, а в том, что нужно понимать ограничения алгоритмов (т.к. решение ограничено по процессорному времени и по доступной памяти) и внимательно обработать крайние случаи (которые в алгоритмы не вписываются, а вытекают зачастую из задания).
no subject
Date: 2016-06-09 08:26 pm (UTC)Десятиборье, а?
no subject
Date: 2016-06-09 06:06 pm (UTC)При этом по моим наблюдениям (я довольно долго варился в этой тусовке - закончил ведущую математическую школу Питера, а потом кафедру КТ в ИТМО, с которой как я понимаю и начиналась ACM в России) обычно ребята, которые добиваются успехов в математических Олимпиадах или ACM действительно очень толковые и у них получаются хорошие карьеры в науке или в бизнесе. Думаю в Яндексе таких довольно много, про то что в Google тоже много уже написано тут в комментах.
no subject
Date: 2016-06-09 06:19 pm (UTC)Карго-культом.
no subject
Date: 2016-06-09 06:37 pm (UTC)Разные виды деятельности.
Ну, скажем, можно же устроить соревнования по версификации на скорость, и даже, наверно, проходят такие. С заданными рифмами, размерами и т.д. И я вполне себе представляю, что Мандельштам и Заболоцкий на таких соревнованиях проиграли бы совершенно позорнейшим образом.
То есть это, конечно, виды деятельности не совсем чтобы разные - понятно, что в соревнованиях по версификации любой поэт победит любого не-поэта (скажем, меня). Но победитель этих соревнований может в реальности быть более чем средним поэтом, а великий поэт на таких соревнованиях може выглядеть очень бледно.
no subject
Date: 2016-06-09 06:55 pm (UTC)Но совершенно очевидно, что, как говаривал Капитан Врунгель: «Каждый Мандельштам — поэт, но не каждый поэт — Мандельштам». Мне кажется, что если идет речь про уровень Мандельштама в программировании (ни у кого из здесь присутствующих, насколько могу судить, не идет), то, конечно, любая олимпиада — фигня.
А вот если говорить про середнячков, каковыми являются члены дискуссии — то вот именно тут довольно интересно поглядеть на олимпиадные результаты. Потому что техника, скорость и навык работать в условиях «вот тебе 8 минут и пол-компьютера» — это хорошее резюме. А «это все херня для выскочек» — плохое.
Тут как бы разные планки: одна для тех, кто соревнуется за Мандельштама. Вторая — за Светлова (все здешние :). Третья — за Хлебникова (но это про другое совсем, это про Столлмана скорее.)
И все эти три планки абсолютно перпендикулярны друг другу.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: (Anonymous) - Date: 2016-06-09 11:37 pm (UTC) - Expandno subject
Date: 2016-06-09 06:48 pm (UTC)no subject
Date: 2016-06-09 06:50 pm (UTC)no subject
Date: 2016-06-09 07:08 pm (UTC)Это как если бы грузчик не понимал штангистов, охотник биатлонистов и т.д..! :-)
no subject
Date: 2016-06-09 07:25 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2016-06-09 08:21 pm (UTC)Конечно отладка помогает в любом случае, но здесь нужно и успеть придумать план решения, и быстро добиться корректной реализации.
no subject
Date: 2016-06-09 10:14 pm (UTC)(no subject)
From: (Anonymous) - Date: 2016-06-09 11:40 pm (UTC) - Expand(no subject)
From:(no subject)
From:(no subject)
From: (Anonymous) - Date: 2016-06-10 08:50 am (UTC) - Expand(no subject)
From:no subject
Date: 2016-06-09 08:32 pm (UTC)no subject
Date: 2016-06-10 04:26 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-06-09 08:38 pm (UTC)Настоящее программирование - это "Мы сами знаем, что [проблема] не имеет решения ... Мы хотим знать, как ее решать".
А спортивное программирование - это подгонка хода мыслей под ответ на время, поскольку заведомо известно, что а) задача имеет эффективное по времени и памяти решение, и б) что оно записывается относительно коротко.
Для неспортивного человека решать задачу, которую уже кто-то как минимум однажды уже решил — всё равно, что пытаться наслаждаться едой, которую кто-то однажды уже съел.
no subject
Date: 2016-06-12 12:17 pm (UTC)https://slon.ru/posts/68391
И весьма успешные получаются стартапы.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-06-09 10:30 pm (UTC)no subject
Date: 2016-06-12 12:21 pm (UTC)no subject
Date: 2016-06-09 10:38 pm (UTC)Азарта добавляет то, что все участники видят друг друга (компьютеры обычно стоят в одном зале), видят актуальные результаты и т.п. Ограничение "1 компьютер на троих" заставляет гораздо больше думать головой, а не пальцами, планировать, работать именно командой. На мой взгляд, это главная "фишка".
В общем, разок-другой это интересно. Заниматься специально и готовиться к соревнованиям, наверное, не очень.
no subject
Date: 2016-06-10 06:26 am (UTC)(я медалист международки, если что)
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-06-09 11:51 pm (UTC)no subject
Date: 2016-06-10 02:56 pm (UTC)no subject
Date: 2016-06-09 11:57 pm (UTC)Ну а команда - это еще и социальный аспект. Хотя о чем это я *картинка с фореверэлоном*.
Насчет сложных и интересных задач а ля написать игру за 2 дня - ну не знаю. To whom how, как говорится. Не знаю, что там интересного.
В общем имхо вы сравниваете спортивное программирование с (настоящим) программированием, а надо - с олимпиадами по математике. Тогда станет ясно.
no subject
Date: 2016-06-10 06:27 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From: