Почему в олимпиадах по информатике задачи только на программирование

21.03.2018

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

Для начала, формальный ответ. Если говорить конкретно о Всероссийской олимпиаде школьников, то есть основной документ, регламентирующий ее проведение — это Порядок проведения Всероссийской олимпиады школьников. Он устанавливает (п. 35 и аналогичные), что олимпиада (начиная со школьного этапа!) проводится по заданиям, основанным на содержании образовательных программ углубленного уровня. Я не школьный учитель, и потому не могу уверенно рассуждать на тему того, что входит в такие программы, и в каком классе появляется первое программирование, но я нагуглил какие-то программы для 7-8 классов, и там программирование на паскале вполне есть. Поэтому формально то, что в олимпиадах за 8 и старше классы есть программирование, кажется, ничему не противоречит. Если в какой-то школе программирования в 8 классе не проходят, значит, у них какая-то не та программа, возможно, не углубленного уровня. (Более того, в контексте серьезного участия во ВсОШ имеет смысл обсуждать только 9 и старше классы, потому что по 8 и младше классам нет ни регионального этапа, ни Всероссийского, и потому вообще олимпиады ВсОШ младше 9 класса — это несерьезные олимпиады, их зачастую составляет неизвестно кто, и вот там-то бывает что программирования и нет.)

Но это формальный ответ, а по сути?

Ну, в-нулевых, да, название «Олимпиада по информатике» вносит определенную путаницу. Возможно, было бы правильнее называть такие олимпиады «олимпиадами по программированию», чтобы никаких вопросов не было. (Ну и что, что такого предмета нет — предмета «математика» в старших классах тоже нет, а олимпиада есть, или примерно то же самое с астрономией.) Но сейчас уже широко устоялось название именно «по информатике» (хотя название «по программированию» тоже нередко используется, например, в командных олимпиадах), поэтому можно было бы отговориться фразой «так исторически сложилось, а сейчас просто считайте, что слово “информатика” в контексте олимпиад обозначает “программирование”». Ну просто как такой термин вот с таким конкретным значением.

Но на самом деле есть и более глубокие причины. Они довольно неформальны и потому, конечно, с ними можно спорить. Но тем не менее, думаю, они объясняют, почему олимпиады по информатике, требующие чего-то помимо программирования, особого распространения не получили.

Во-первых, и, пожалуй, самое главное. Олимпиада — это не контрольная, это не ЕГЭ. Олимпиадные задачи должны не просто проверять школьные знания, и даже не проверять знания, более широкие, чем школьная программа. Олимпиадные задачи должны проверять, как участник думает, умеет ли он рассуждать, что-то придумывать, делать какие-то выводы. Олимпиадные задачи должны быть интересными; школьник, решивший олимпиадную задачу, должен в идеале узнать что-то новое, совершить мини-открытие, как бы избито эта фраза не звучала.

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

(На самом деле, я не имею особого опыта участия в олимпиадах что по русскому языку, что по английскому или по праву, поэтому, возможно, там задания такого вида встречаются. Более того, когда я учился в лицее 40, на «олимпиадах» по английскому языку задания были как раз взяты из тестов типа TOEFL. Но понятно, лицей 40 — не языковая гимназия, задачи олимпиад по английскому языку в лицее 40 не могут считаться образцом, и я надеюсь, что на серьезных олимпиадах по английскому дают более интересные задания. Ну или, возможно, это не так — тогда это обозначает, что мое видение олимпиад сильно отличается от того, как видят олимпиады составители заданий по английскому языку.)

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

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

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

Какого типа задачи решают ученые-программисты или там информатики? На самом деле это довольно странный вопрос, потому у нас не принято выделять информатику в отдельную область науки, это чаще считается разделом математики, но тем не менее на вопрос можно попробовать ответить. Какие есть вообще области науки, которые более-менее смежны со школьным курсом информатики? В первую очередь это будет, безусловно, computer science — по сути, то самое построение алгоритмов, которое требуется в олимпиадах. Конечно, если подумать дальше, то можно вспомнить и другие области науки, например, какую-нибудь теорию информации, но, кажется, это уже весьма далеко от школьной программы информатики.

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

Еще одна причина, которую стоит упомянуть, состоит в том, что — опять-таки, в отличие от многих других предметов — в программировании существует огромное количество серьезных соревнований, не являющихся школьными олимпиадами, но тем не менее очень близких к ним по формату. Это многочисленные соревнования, проводимые крупными компаниями (Google Code Jam, Яндекс.Алгоритм, VK Cup и т.д.), а также ACM ICPC и т.д. Естественно, что школьные олимпиады чувствуют на себе влияние этих соревнований. Более того, наличие таких соревнований позволяет утверждать, что именно такой формат соревнований несет в себе определенную «практическую ценность» — что это не просто досужее развлечение группы ботаников, а действительно нужно много кому, иначе крупные компании не поддерживали бы олимпиадное движение так активно. Такая «практическая ценность» — очень и очень редкое явление в школьном образовании вообще, поэтому неудивительно, что ее надо учитывать.

Тем не менее, все, что написано выше — это, конечно, неформальные и нестрогие причины, не являющиеся абсолютной истиной. Более того, лично я считаю, что олимпиады по информатике, как отдельная от олимпиад по программированию сущность, вполне имеют право на существование, если найдутся люди, готовые их адекватно и объективно организовывать. Другое дело, что, например, мне лично будет не очень интересно проводить такие олимпиады.

В частности, поскольку я все-таки председатель жюри Нижегородской городской олимпиады школьников по информатике им. В. Д. Лелюха, понятно, что вопрос отсутствия на нашей олимпиаде каких-либо задач, кроме задач по программированию, можно воспринимать и как претензию ко мне лично. Но на самом деле мой ответ на такого типа претензию будет очень простой: мы проводим такую олимпиаду, какую считаем нужной и какую умеем проводить. Тот факт, что она называется «городской олимпиадой по информатике» — это, на самом деле, фактически является решением городского департамента образования. Если, например, департамент решит, что им нужна отдельная олимпиада именно по информатике, то мы просто переименуем нашу олимпиаду во что-нибудь типа «Нижегородская олимпиада по программированию им. В. Д. Лелюха», и будем проводить ее как проводили.


Мой курс по алгоритмическому программированию (и подготовке к олимпиадам) для школьников, студентов и всех желающих — algoprog.ru