Мне бы хотелось написать, что я думаю про следующий диалог в комментариях к этому посту:
Horuka: а по вашей логике олимпиады для студентов не нужны?
gurovic: не просто не нужны - они вредны, губительны и иногда смертельны в смысле содержательной деятельности человека в дальнейшем.
Сразу оговорюсь: я знаком с олимпиадами не понаслышке, поэтому мое экстремальное мнение не произрастает из дремучести. Еще замечу, что речь будет идти в основном об ACM ICPC.
Так вот. В студенческих олимпиадах имеет смысл участвовать только в одном из двух случаев:
- вы получаете удовольствие от решения задач,
- вы чувствуете, что можете добиться больших успехов (выиграть финал, например), и получаете от этого удовольствие.
Да-да, именно более осмысленному.
Во-первых, студенческие олимпиады не научат вас программировать. Начав работать над серьезным проектом, вы с удивлением обнаружите, что умение быстро писать лапшу на 300 строчек скорее вредно нежели полезно.
Во-вторых, студенческие олимпиады не научат вас алгоритмам. Более того, олимпиадные задачи имеют лишь очень-очень слабое отношение как к теоретической, так и к "практической" computer science.
В комментариях, из которых взят диалог, проскальзывает мысль, что из победителей олимпиад часто получаются годные инженеры для серьезных контор (см. Google). Но по-моему здесь перепутана причина со следствием. Победитель ACM ICPC попадает в Google не потому, что он играл в олимпиады и чему-то научился, а потому что он уже пришел в олимпиады с головой на плечах (бывают редкие исключения, но они и правда очень редки). Это примерно как из утверждения "наличие миллиарда долларов сильно коррелирует с наличием яхты" сделать вывод, что если купить яхту, то станешь миллиардером.
Ну, и напоследок скажу, что даже те алгоритмы, которые используются в олимпиадах, изучаются олимпиадниками лишь постольку-поскольку. Правильно писать алгоритм Дейкстры и искать отрицательный цикл в графе я научился отнюдь не при подготовке к олимпиадам.
Ещё одна скользкая темка :-)
Забавно, что такие серьезные вопросы поднимаются в рамках отдельной темы здесь только после 1848 других тем для разговоров :-)
Интересно было бы услышать мнение Gassa и Petr.
Поизучав TopCoder Record Book я увидел такую статистику, что Gassa написал подряд последние 88 матчей. Я уж не говорю про dcp со 187 матчами, но его на CodeForces вроде нет.
Хм, я сейчас подумал, что мой вопрос не столько на студенческую тему, сколько про любовь к олимпиадам, но все же интересно было бы получить ответ.
Иначе бы прощай моя топкодерская карьера.
> вы чувствуете, что можете добиться больших успехов
Что значит, что вы готовы тратить на это доминирующее количество времени вашей жизни, а не решать три задачки с тимуса в день.
Вообще все по делу сказано, и очень правильно.
и это именно тимуса касается, или аналогичных проектов типа uva, saratov...?
интересно мнение.
Прорешивать их имеет смысл делать только вначале "карьеры", чтобы научиться решать простые задачи. А потом надо отрабатывать командное взаимодействие на 5-часовых полноценных тренировках.
Для этого есть, например, вот такая штука.
А 841 задача (и это только с тимуса) лишними не будут! ;)
Плюс в сервере можно рошать финалы некоторых лет (собраны контесты).
Олимпиады помогают облечь приобретение знаний в форму соревнований, это влечет собой желание читать современную литературу и статьи, изучать те алгоритмы, которые не встречаются на олимпиадах. Само собой, все понимают, что cs это совсем не задачи с тимуса.
Кому этот пост вообще был предназначен? Вы пытаетесь убедить себя, что ничего не потеряли, когда перестали заниматься олимпиадами? Полагаю, что все тут все и так прекрасно понимают и незачем капать людям на мозги.
Вам кажется. Ну или снимаю шляпу, если для Вас алгоритм Гольдберга-Рао простой.
>Олимпиады помогают облечь приобретение знаний в форму соревнований, это влечет собой желание читать современную литературу и статьи, изучать те алгоритмы, которые не встречаются на олимпиадах.
Очень не у многих влечет, как показывает практика.
>Вы пытаетесь убедить себя, что ничего не потеряли, когда перестали заниматься олимпиадами?
Смешно.
>Полагаю, что все тут все и так прекрасно понимают и незачем капать людям на мозги.
Интернет тем и хорош, что можно закрыть любую страничку, которая задевает Ваши высокие чувства.
Если сравнивать продвижения большей части сообщества с вашими, то да, никто ничего полезного не изучил и ничего нового не узнал. Но если оценивать продвижения людей относительно самих себя, то они будут существенными.
>аргумент анти-"сперва добейся"
скорее, пожелание смотреть на мир объективнее. На мой взгляд, ваши аргументы (и мотивация) абсолютно бесполезны для подавляющего большиства. Скорее всего, вы очень плохо представляете себе атмосферу любого вуза кроме мгу (причем вполне может быть, что и атмосферу мгу вы тоже плохо представляете). Поэтому не вижу причин, по которым вы могли бы быть так уверены в том, что ваши советы могут кому-то помочь.
> Скорее всего, вы очень плохо представляете себе атмосферу любого вуза кроме мгу (причем вполне может быть, что и атмосферу мгу вы тоже плохо представляете).
Без комментариев.
> Поэтому не вижу причин, по которым вы могли бы быть так уверены в том, что ваши советы могут кому-то помочь.
А подскажите мне, с каким именно моим советом Вы не согласны? Скорее всего, Вы в посте видите что-то, чего там не написано. :)
Я бы сказал, что олимпиады в чем-то похожи на спорт. Стоит ли вам заниматься большим спортом - большой и трудный вопрос, над которым надо тысячу раз подумать. И тут я совершенно согласен с автором.
Но есть и обратная сторона медали: никто же не будет отрицать пользу зарядки. То есть, минимальный опыт участия в олимпиадах дает следующее:
Не всякий новичок сразу сможет заниматься проектом, а коллекционирование коробков нисколько не поможет программированию. Так что для общего развития, особенно на младших курсах, ничего плохого в этом не вижу. Нас на первом курсе вообще принудительно заставляли участвовать в АСМ, никто потом не сказал, что это бред или не принесло ему никакой пользы.
Правда, принудительный ACM ужасает. Это ведь речь про ту-самую-кафедру Бауманки?
Про нее. Вообще, все было устроено так. По курсу алгоритмов и структур данных читались лекции, а практика была сделана в виде unlimited тематических контестов (на графы, дп, деревья, ЛП и т.д.). Часть задач была чисто на алгоритм, в других надо было немного подумать, как его применить. Так что в том, чтобы пару раз съездить в МГУ не было ничего страшного - от всех же не требовалось круто выступить.
Для того, что б набить морду пьяному посетителю, и выкинуть его за двери, не нужно тренироваться 2 раза в день, держать режим, ганять вес...
Вообще соглашусь что заниматься олимпиадами кроме как удовольствия нет смысла.
Вот, например, я уже 8 лет не учавствовал ни в каких контестах. А недавно зарегистрировался на кодефорсес и заново на тимусе, и поймал такой кайф от игры какой не ловил уже 8 лет :)
В баре могут и по яйцам ударить, и в глаз балоном пшыкнуть, и розочкой по горлу полоснуть... (т.е. встретяться алгоритмы которые не применялись на олимпиадах :) и разные NP полные задачи :) )
Так что дополнительных скилов надо будет тоже нахвататься. И думаю за месяц боец справится с наработкой експириенса :)
Утверждение, что это несет только вред весьма сомнительное. То что олимпиады и промышленное программирование не равны это понятно. Но пересечение есть. Да и кроме олимпиад можно успевать все-таки заниматься учебой где возможно и научат правильному стилю программирования.
Возможно есть и более полезное времяпрепровождение, но к сожалению не всегда интересное.
В основном народ сейчас гамает), а кто-то в это время решает "никому ненужные" задачки на тимусе.
Выбор за вами.
Подозреваю, что большинство нормальных програмеров научились "правильному стилю программирования" вне университетских учебных программ :)
Вообще если зашла речь о промышленном программировании, то осмелюсь высказать тезис что УНИВЕРСИТЕТСКОЕ ОБРАЗОВАНИЕ НАХРЕН НЕ НУЖНО ДЛЯ ПРОМЫШЛЕННОГО ПРОГРАММИРОВАНИЯ
Если кто-то уверен в обратном, пусть скажет, что такое требуется в промпрограммировании, что не можно изучить вне стенах универа (еще и с учетом что 90% преподов понятия не имеют о промпрограммировании)
Но иногда и в универе могут научить полезному )
Вместо того, что б батрачить 5 лет в универе получая
пособие по безработицестипендию, можно прийти в контору и сказать, я у вас полгода поработаюза пожратьза символическую оплату ради опыта...И через год у вас уже будет опыта на порядок больше чем у студентов 5-го курса.
мы живем в век информационных технологий. Можно сидеть в селе с доярками, и имея инет читать лекции профессоров любых университетов мира.
Вы меня раскусили. Однако, я все равно против реформы. Вот такой вот парадокс.
Интересно. Уже не раз слышу от вас утверждение о пользе философии. В универе же у меня образовалось стойкое к ней отвращение :)
Да, например к физике - вот мне как раз к ней и привили курсу так к третьему физфака. И, кстати, практически все преподаватели на ФФ НГУ относятся к философии с отвращением (совершенно зря). И поэтому когда единственный студент на курсе со средним баллом 5,00 (а ещё четыре студентки по понятным причинам не в счёт) уходит в магистратуру на ФилФ... в общем, это был пока что самый ж0сткий троллинг в моей жизни. Завкафедрой так и сказал: "Ну, вот это просто удар ниже пояса. Мы Вас не для этого учили", - на что мне пришлось ответить: "Так ведь я предупреждал об этом ещё год назад. Я же не виноват, что все решили, что я шучу".
Согласен. Если есть возможно, то почему бы не испольозовать ее. Просто потом ее никогда не будет.
Я сам поздно начал заниматься этим делом, ну и сейчас жалею что все пропустил.
Таких конечно много, но не все. Илья правильно сказал - тут голова на плечах нужна и тренировки.
И более того, самое смешное в том, что 1000 тренировок - это тоже не самое обязательное условие успехов.
> что те, кто добивается больших успехов в олимпиадном программировании начали заниматься им не позже 9 класса школы
Я начал на втором семестре первого курса.
2. Срок очень индивидуален. Кто-то может и 5 лет это изучать, я думаю, что олимпиадную основу можно изучить за полгода, было бы желание.
3. Помогал отцу базу данных составлять - не очень похоже на промышленное программирование. На мой взгляд, в промышленном программировании либо используются существующие базы данных, либо используются куда более изощренные техники, чем олимпиадные алгоритмы. Все-таки олимпиадные программы и сервера баз данных существуют в очень разных условиях.
Интересно, а разве кто-то в дисскуссии утверждал, что олимпиады учат писать промышленный код??? :)
Тут противники олимпиад задвигали тему, что олимпиады вредны в плане дальнейшей деятельности человека (как программиста).
===2. Олимпиады не учат по-хорошему алгоритмам.
Да, конечно же на олимпиадах (АСМ и иже с ними форматов) не требуются алгоритмы сжатия данных, обработки изображений, звука, видео (кстати есть и такие специфические олимпиады, + есть олимпиады где еще и устройства надо конструировать и программировать...).
Но, я уверен (в рамках своей компетентности), что один человек с разумной головой, учавствовавший в олимпиадах, ничуть не хуже другого человека с разумной головой, не учавствовавшего в олимпиадах :)
И вообще, если вы утверждаете "Олимпиады не учат по-хорошему алгоритмам.", то в чем измеряется критерий "хорошести" обучения алгоритмам? И что, к примеру, по-хорошему учит человека алгоритмам?
Все такие треды возникают, мне кажется, по следующим причинам:
1. При конвейерной разработке ПО вида "натыкай БД, запросы и т.д." олимпиады действительно не нужны. Как не нужна математическая подготовка. Тому, кто привинчивает к автомобилю гайки, не надо разбираться в аэродинамике.
2. Существует одна смешная особенность в олимпиадных задачах. В "промышленном" программировании они и правда возникают, но они а) весьма сложные и б) весьма незаметные. Это приводит к тому, что те, кто не знакомы с "олимпиадным" программированием, просто их не замечают.
Вообще, интересно для всех, кто утверждает "олимпиады не коррелируют с промышленностью" подготовить пару ТЗ на то, что возникало в моем собственном опыте, и посмотреть, сколько времени им понадобится и как это будет сделано.
А если всерьез, то олимпиады ради олимпиад - конечно, полный бред. Написание в 100500 раз алгоритма Дейкстры (ссылку на Egor-а потерял) действительно не имеет смысла. Попробую выразить смысл в моем понимании.
Олимпиада - специфическое упражнений в программировании, как, например, силовая подготовка при беге. (Ой, люблю метафоры ;) ). Нельзя научиться хорошо бегать, только тренируя ноги. Но это не отменяет того факта, что чтобы лучше бегать, ноги надо тренировать. Как-то так.
А кто либо может представить набор из K бывших олимпиадников, которые утверждают, что олимпиады им пошли во вред?
Т.е. я хочу услышать людей, которые утверждают, что занятие олимпиадами им пошло во вред, что изза олимпиад, у них хронические проблеммы с трудойстройством теперь, чи что приходится работать сторожем вместо программиста?
Вообще есть такие? И если есть, то какова их доля (double)K / N от общего числа олимпиадников?
А то тут прямо как про массонов. Все говорят, да никто не видел :)
Не говоря уж о том, что более сильного по всем параметрам, чем ilyaraz, не получится найти не только в МГУ ;)
И не говоря уж о моральной стороне дела - кто прошёл на финал, тот и должен участвовать, а всякие замены попахивают политикой и читерством.