Что такое олимпиадное программирование?

Только изучаю программирование.
Часто встречаю фразу "олимпиадное программирование".
Помогите понять, что это и чем оно отличается от "НЕолимпиадного"
В Google четкого термина не нашел.
Еще встречал понятие "Спортивное программирование". Это одно и то же?
Спасибо
  • Вопрос задан
  • 2146 просмотров
Решения вопроса 1
barmaley_exe
@barmaley_exe
Олимпиадное и спортивное программирование действительно два имени одной сущности.

Обычное (промышленное) программирование нацелено на решение бизнес задач с использованием компьютеров. Такие задачи, как правило, характеризуются следующим:

  • большой фронт работ (т.е. разрабатывается не в одиночку, а большой командой)
  • имеют большой цикл поддержки (т.е. программа, написанная Вами сегодня наверняка пригодится через полгода-год),
  • должны быть эффективны с точки зрения бизнеса (иногда алгоритмическая эффективность влечёт усложнение решения, что приводит к увеличению издержек. Далеко не всегда повышение алгоритмической эффективности приводит к ощутимому бизнес профиту)


Даже если вы не продаёте программный продукт, а, например, пишете opensource программу или библиотеку, Вас всё равно интересует бизнес-эффективность: хотелось бы иметь простой и надёжный код (чем алгоритм сложнее — тем проще допустить ошибку), возможность расширения и изменения программы спустя некоторое время (т.е. думать об архитектуре).

Спортивное программирование, в свою очередь, сосредоточено лишь на решении формальных задач с максимальной эффективностью в плане времени исполнения и объёма затрачиваемой памяти. Самым эффективным способом практики этого вида программирования являются соревнования, проводимые, например на codeforces или topcoder. Такие соревнования длятся несколько часов и предлагают несколько задач различной сложности. Чем быстрее и больше участник решил — тем больше он молодец.

Таким образом
  • программы оказываются очень небольшие по размеру — не более пары сотен строчек
  • срок жизни такой программы составляет, как максимум, несколько часов, поэтому написать её можно как угодно, лишь бы работала.

    Например, однобуквенные переменные пишутся гораздо быстрее длинных и осмысленных, однако их предназначение понятно лишь самому автору и лишь в течение крайне небольшого срока после написания программы.
  • поскольку программа невелика, нет необходимости в разбиении её между несколькими программистами
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
globuzer
@globuzer
gezgrouvingus progreszive ombusgrander greyderzux
олимпиадное или спортивное программирование - это фактически стиль программирования, нацеленный на получение спортивных достижений, основными из которых являются: скорость, время, изящество алгоритмов и чистота решения задач. основное и главное тут: правильно решенная задача, за минимально короткое время, с учетом того, что время выполнения программы этой задачи также минимально, при этом использованы минимум ресурсов, как человеческих, так и компьютерных....
это не тоже самое что практическое программирование, что в жизни, но порой многие задачи и их части из олимпиадного программирования дают большую пользу для решения задач в жизни, в практике
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Это программирование на олимпиадах по информатике в школе и олимпиадах по программированию в универах.
Отличается тем что результат по сути никому не нужен, а на работе результат кому то нужен.
Ну ещё упор там сделан на алгоритмы, и зачастую даже нет интерфейса графического у решения и все данные поступают из файлов, так как проще реализовать тестирование.
Ответ написан
Комментировать
@mamkaololosha
Решение алгоритмических задач на время. Помогает выявить способности быстро оценить задачу и закодить решение. Популярно в алгоритмически наукоемких областях информатики и соответствующих компаниях. Не путать с системным программированием и прикладным программированием.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы