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