Comments 32
Эх, мне решения можно в качестве задач давать, недельки на три наверное хватит.

Интересно взять статистику семейного положения, возраста, трудоустроенности участников таких соревнований. Если там большой пик на холостой молодежи, то можно утешать себя мыслью, что если бы не семья-дети-работа, то вот я бы…

Победившим поздравления!
А если у них семья, то можно утешать мыслью, что оптимизация мытья тарелок после ужина тоже является ещё той задачкой.
А если у них есть дети, то можно утешать мыслью, что наше подрастающее поколение настолько продвинуто, то может учить своих родителей. Но ведь этому научили их мы.
А если у них работа, то можно утешать мыслью, что при сложных условиях работы в невесомости накладываются иные взгляды на решаемые проблемы.
А если у них…
А что за «штрафное время»? Плохо стрелял в CS? :)

Прочёл все задачи и не понял одного — а причём тут программирование вообще? Ну отбери у них компьютеры и дай карандаш с бумагой — ТОЧНО ТАК ЖЕ ВСЁ МОЖНО РЕШИТЬ. Зачем тогда тут приплетать компы? Это тервер, комбинаторика, матан — первые три курса института. /хотя каюсь, ничего из этого я уже не решу — забыл :) /
Штрафное время складывается из штрафа за неверную попытку (20 штрафных минут) и времени, потраченного на решение задачи (например, 40 штрафных минут если задача была успешно решена на сороковой минуте). Кроме того, можно получить за задачу отрицательное штрафное время, отправив её без права повторной попытки.

Кроме математики и теории вероятностей в задачах используются и структуры данных, значение имеет эффективность их использования. Именно умение не только решить задачу математически, но и верно реализовать решение отличает программирование от математики.
Это не программирование, а математика + обсчёт на компьютере. Весь пост — сплошные формулы, что здесь от программирования? Классы? Шаблоны Проектирования? Биты/байты? Или вы «программированием» уже готовы назвать суммирование в цикле?
Я не спорю, писать программы надо уметь, но с таким успехом и плотник, рассчитавший гипотенузу в Икселе — программист! Вам самой не смешно называть это программированием?

PS
Про «штрафы» — шутка же, совсем с работой заморочились? :) CS=Counter Strike, намёк на биатлон
Классы\шаблоны\etc — не более, чем инструмент. Задача программиста как раз в том, чтобы уметь спроецировать реальный мир на математические абстракции, описать реальный мир языком цифр, а именно с цифрами и работает компьютер.
А конечным инструментом может оказаться процедурное\ООП\функциональное программирование, это уже не так важно в данном контексте.

Приведу пусть и не точную, но (мне так кажется) уместную аналогию: на конкурсе мастеров деревообработки не станут проверять мастерство работы с ЧПУ-станком, а как раз выдадут рубанок\молоток\нож и так далее.
Ясно. Понимание программирования на уровне «Если в робота кидаться макаронами, то он сломается, потому что от них у него защиты нет».
Смысл конкурса в том, чтобы определить, кто лучший программист, а смысл программиста — в том, чтобы учить компьютер наиболее оптимально решать задачи. Всё логично.
Тут задачки конкретно на программирование и оптимальные алгоритмы, для которых нужны знания математики и смежных наук, а не наоборот.

Ведь, грубо говоря, почти любую компьютерную задачу можно решить разными способами:
1. Напролом, перебор и т.п. Это займёт уйму времени (может даже и жизни не хватить)
2. Оптимальный. Тут на подмогу приходят знания алгоритмов, умения правильно пользоваться структурами данных и знать их слабые и сильные стороны и прочее. Благодаря этому долгую задачу из #1 можно сократить до порядка минут или секунд.
Особенно это хорошо чувствуется когда идёт обработка больших массивов данных, так как, например, разные алгоритмы эффективны с разным объёмом данных. Так называемое «решение в железе», которое можно применить в реальных условиях и летать с ними на луну.

А на бумаге это больше как теоретическое решение, а не практическое. То же можно решить, но это другие цели.
Ну да, всё верно.

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

Программирование ДАВНО уже перестало быть частью «математики» и стало абсолютно самостоятельной областью, со своими методами, концепциями и «аксиомами». Математика, физика, ДАЖЕ ЭСТЕТИКА стали на службе IT, но это никак не превращает программирование в решение задач для тервера. Эта мысль не вызывает споров? Равно как и мысль, что 99% задач программистов даже рядом не стоят с математическими абстракциями.

Отсюда, возвращаемся к изначальному посту: что конкретно компьютерного вы нашли в задачах от тындекса? Они что, общаются с СУБД? Обрабатывают прерывания? По сетям что-то передают? Достаточно глянуть на решения — это же сплошь математика и формулы, накой им компьютеры-то? Проверить, что математик может закодировать цикл? Так это уже вопрос квалификации МАТЕМАТИКА, но никак не задача для профессиональных программистов. А если я вам скажу, что есть такая компьютерная должность «system analyst», вы со стыда сгорите — это как раз тот человек, который избавляет программистов вообще от какой-либо математики/бухгалтерии/физики, превращая требования реального мира в чисто компьютерное ТЗ (надеюсь, не надо расшифровывать?). Верьте мне, я — программист и знаю лучше дамочек-пиарщиц чем мы занимаемся на работе. :)
К сожалению, не согласен. Не знаю почему я похож на «дамочку-пиарщицу», но это не так важно.

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

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

:))))))))))))) Это важно, потому что речь шла о lperovskaya, с которой и началась эта довольно глупая дискуссия «математика и программирование». А вы это восприняли на себя ввиду излишней занудности и зацикленности — грустный побочный эффект увлечения математикой. :)

> Математика нужна…

Зачем писать банальщину? Вы считаете, что я за 15 лет п-я этого не понял? Это _Я_ вам объясняю, что БОЛЬШИНСТВО п-ских задач даже рядом не стоят с математикой, т.к. решают сугубо компьютерные проблемы — пересылка данных, оптимизации, удобство интерфейса и т.п. Вы нос-то суньте в объявления (ну вот те, которые из реальной жизни) — много там «математики»? Сплошь «похапасты», «облака», «геймдев» и прочее. К чему мне ваши увещевания в математике, месье? Вы совсем не понимаете, что объясняете проф.программисту чем он оказывается занимается! Уж я-то каждый день пишу программы, с людьми разговариваю — мне лучше знать процент вовлечения других дисциплин.

Вот вам сайт: rsdn.ru слэш forum/dotnet/ — сходите что ли, посмотрите чем занимаются люди, чтоб ерунду не писать.
Разве одно другому мешает? Пол Москвы — «выпускники» чего-либо, правда работают, прости господи, вплоть до «ленинградки» :)
Хотя речь не о том, а о том, что человек, работающий в Яндексе, не имеет никакого понимания чем занимается программист. Весь этот бред про математику — умилительная, но далёкая от реальности идея.
Выше я уже дал ссылку на сайт — почитайте их вопросы (по реальной работе) и проверьте, сколько там математики.
Сами же пишете — «99% задач программистов даже рядом не стоят с математическими абстракциями». Следовательно, каждая десятая задача каждого десятого программиста (условно) требует владения математикой. На абстрактном уровне. И когда этот программист столкнётся с этой задачей — он просто не справится со своей работой. 1% — это огромная величина, особенно при современных объёмах программирования.
Требует, но не от программиста. Почитайте кто и чем занимается в составе девелоперской команды:
Business Analyst
Application Architect
DBA
Programmer
Tester
UX specialist
Designer
Все эти люди «как бы пишут программу», но каждый занимается своим делом. Говорить, что программисту нужно хорошо знать математику — не менее тупо, чем требовать от повара список удобрений для морковки — это НЕ ЕГО РАБОТА.
Это в России привыкли на одном Ване пахать за семерых — отсюда и заблуждение.
На этой неделе я нарисовал граф обработки данных в нашем проекте. Каждая из десятка с лишним функций, которые попали в него, была математической задачей, на которую я потратил по нескольку месяцев. Причём там была и разработка алгоритма, и кодирование, и много экспериментов. Предсказать заранее, каким должно быть разделение на блоки, и что у них на входе/выходе, мне не удавалось., Как можно было бы реализовать это дело, если бы я только разрабатывал алгоритмы и передавал их кодеру, не представляю. Вообще.
И что? А у Васи Иванова вообще нет цифр и формул в проекте. Что будем делать? Настырно проталкивать мысль о важности математики или всё же сходим на RSDN? Пока вы там не прочтёте хотя бы 100 вопросов, не вижу смысла тут «я-кать» со своими графами.
Если у Васи в проекте нет формул, то с большой вероятностью ему не приходится реализовывать запросы математика, который пытается перевести свои заумные идеи на понятный Васе язык. Так что речь вообще не о нём. Вот если бы формулы были, а Вася при этом не знал математики, то тогда бы мы посмотрели, как они будут общаться и к чему это приведёт — ведь у каждого своя задача, и математика к программированию не пускают, не так ли?
Объявления не являются показателем всей сферы.

То нанимают «эникейшиков» (так вроде это называется). То есть, люди, которые чисто механически умеют жать на кнопки в правильной последовательности. Для этого много знаний не нужно и, конечно, результат будет соответствующий.
После этого эти самые «похапастые» проекты работают тяп-ляп, жрут неимоверное количество ресурсов и не могут решить простые проблемы достаточно быстро. После этого уже начинаются поиски более оптимальных алгоритмов, моделей и прочего. Или проект просто закрывают.

Эти объявления совсем не означают, что задачи программистов не стоят с теориями, алгоритмами и прочими моделями.
Ведь есть нормальные компании, которые иначе подходят к проблеме и решают их более грамотно. Особенно сегодня когда объёмы данных растут быстрее, чем вчера.

И это объясняю я, как не математик.
А если я вам скажу, что есть такая компьютерная должность «system analyst», вы со стыда сгорите — это как раз тот человек, который избавляет программистов вообще от какой-либо математики/бухгалтерии/физики, превращая требования реального мира в чисто компьютерное ТЗ

:)
Хм, а Вы не путаете «программиста» и «кодера»?
Как насчёт калибровки энкодера в программе? и позиционирования с учетом люфта в механизмах? в ТЗ ни одна сволочь не посчитает нужным это описать (чаще всего именно так, и, вероятно, потому что сами не представляют этого). А Вам, как программисту, все-равно придется это реализовывать.

2. Понадобилось рассчитать угол отклонения вала рулевого колеса для прохождения заданного поворота на заданной скорости по заданному радиусу и грунту. Поверьте, математик разберется в программировании, но тогда уже вы окажетесь не нужны
Калибровка энкодера — тоже интересно. Особенно если в реальном времени (интересно, на основании каких данных). А ещё и рассчитывать управление мотором, чтобы обеспечить равномерное движение на всём участке и остановку в нужном положении (с точностью хотя бы 10-15 секунд)… Теория там не помощник, нужен анализ эмпирических данных.
Теория там не помощник...

Мы тоже как-то без теории написали программу для управления системой с обратной связью. Всё бы ничего, но примерно раз в неделю систему начинало дико «колбасить», т.е. возникал очень сильный автоколебательный процесс. Пришлось таки браться за теорию и курить критерий устойчивости Найквиста и т.п. — после этого всё заработало как часы!
Дан куб, грани которого пронумерованы различными целыми числами от 1 до 6. Также дано гексамино, все клетки которого пронумерованы различными целыми числами от 1 до 6.
Определите,...

Странно, что в условии не поясняется, что такое «гексамино».
К примеру, в гугл-турнирах мало того, что всё тщательно разжуют по два раза на уровне «домохозяек», так ещё и кучу картинок красивых нарисуют, чтобы исключить неоднозначности. А тут сухая жесть какая-то.
UPD: Почитал оригиналы условий — вопросы отпали. Там всё объясняется, есть примеры входных/выходных данных и ограничения на них, что тоже очень важно для осознания масштаба проблемы :)
Хотя картинок не хватает — факт!
те кто нихрена не понимает в математике пишет — что математика в голом виде не программирование
ну и конечно отчасти обидно, что ты типо лох! а эти качки-стероидные они то могут херануть интеграл в уме!

в сущности повседневный спектр задач — это CRUD-technology =)
но если будете строить рекомендательную систему то пару формул выучить придется.

те кто нихрена не понимает в программировании (математики тобишь) — считают что методологии программирования на которых щас все и держится это все бред и надо бы уметь решать алгоритмы на бумажке за 3 минуты.

видали мы код таких «математиков»

кстати слыхали мы, что в яндексе мало платят ;)
Поможет ли победа в Тур де Франс стать самым коммерчески успешным токийским рикшей? Вроде бы занятие технически весьма близкое.
Может стать помочь каким-нибудь велокурьером экстра-класса. И это может быть для победителя интереснее, чем работа рикшей.
Именно. Это разные направления саморазвития. Зачем их сравнивать?
Only those users with full accounts are able to leave comments. Log in, please.

Information

Founded
Location
Россия
Website
www.yandex.ru
Employees
over 10,000 employees
Registered

Habr blog