Олімпіадне програмування як мистецтво
"У наш час вважається загальновизнаним,
що з усього, так чи інакше стосується мистецтва,
ніщо більше не може вважатися загальновизнаним "
Теодор Адорно
Все почалося з того, як одна людина намагалася з'ясувати вирішення завдання контесту, який проходив в даний момент. Завдання було дуже просте, всім було очевидно, що ця людина не займе хорошого місця, не отримає футболку і т. п. Але тим не менш жоден з 5000 + членів спільноти не дав жодної підказки (ну або хоча б з 30 + осіб, які це бачили і знали відповідь). Мені такий результат вже давно здається закономірним і я спробував пояснити його в двох словах. Тепер спробую трохи більш детально. Заздалегідь прошу вибачення у людей, які в це поняття вкладають не те, що я. Я лише хотів викласти свій погляд.
Спочатку трохи теорії з вікіпедії: Програмування, Олімпіади з програмування, Мистецтво. Зверніть увагу, в останній статті зазначено «Поняття мистецтва вкрай широко - воно може проявлятися як надзвичайно розвинена майстерність в якійсь певній області».
Мені завжди здавалося, що програмування, це свого роду мистецтво. Ось є вузька область - клас олімпіадних завдань з програмування. Вміння швидко і точно вирішувати завдання схоже зі спортом, і часто олімпіадне програмування називають спортивним, адже тут, як і в спорті, спочатку кілька років тренуєшся, потім один раз виступаєш, зливаєш все нафіг і забиваєш на програмування досягаєш деяких результатів і радієш з іншого боку спорт - не сильно творче заняття. Зазвичай стратегії складаються не головними учасниками і вони не блищать оригінальністю і красою. А в програмуванні все не так.
Ніхто не буде сперечатися, що вірші - мистецтво. А що таке вірші? Вірші - це вміння вкладати свої думки в чіткі рамки ритму і рими, стилю і словникового набору. Є безліч обмежень, які не дають просто викладати те, що ти хочеш. Навіщо ж вони? Це додає віршу краси і витонченості, це показує, що автор вклав зусилля, щоб висловити свої думки таким чином, відповідно, ці думки були ретельно обдумані автором, обточені і отримали матеріальну форму у вигляді вірша. Крім того, мова думок сильно відрізняється практично від усіх мов світу, будь це мова слів, мова зображень, мова звуків або мова архітектури.
Схожим чином ситуація йде і з програмуванням. Якщо автор хоче написати вірш, йому треба уявити думку, а потім створити вірш, що виражає цю думку. Для того, щоб вирішити завдання, потрібно спочатку придумати рішення, а потім послідовно перетворити його на алгоритм, потім на програму мовою програмування. Але мова програмування погано поєднується з мовою думок, тому ми повинні знайти спосіб висловити нашу думку через цю мову. І ми рік за роком покращуємо це вміння створюючи все більш і більш досконалі твори мистецтва.
Ось ви бачите дошку в міському будинку творчості. На дошці зверху рівними літерами написано «Виставка дитячих малюнків», а під написом вже не настільки рівно зображені різні епізоди з дитячого побуту. Спробуйте відповісти - це мистецтво? Моя відповідь - так, безумовно. Ці діти знайшли свій спосіб спілкуватися зі світом, показувати йому свої думки. Нехай вони вельми примітивні і грубо зображені (хоча, буває по-різному, деякі діти здатні на шедеври, які і не снилися дорослим художникам), але це мистецтво. Можливо, коли-небудь, один з цих дітей буде писати легендарні картини, і люди з усього світу будуть приїжджати, щоб подивитися на них. Все починається з малого.
Я б хотів, щоб сайти на зразок Topcoder або Codeforces були свого роду клубами мистецтва програмування (як, наприклад, будетляни), в яких люди спілкуються, діляться секретами, творять разом, допомагають новачкам, але ніколи не будуть видавати чужі думки за свої.
