Ксения Донская 25 февраля 2021 |
Интерес к компьютерам у меня появился классе в пятом-шестом. В свободном доступе их тогда, конечно, не было, но мой папа работал электронщиком на предприятии, и в его обязанности входило обслуживание ЕС ЭВМ – единой системы электронных вычислительных машин. Иногда я приходил к нему на работу, и зрелище меня очень впечатляло: большой зал, в нем стоят огромные синие шкафы, гудят кондиционеры. На машинах можно было играть, правда, по нынешним меркам игры эти покажутся смешными. Была, например, игра «Стартрек». Представьте себе текстовый монитор – здоровенный, пузатый, зеленые буковки и никакой графики. На этом мониторе появляется поле 8 на 8, на нем буквой обозначен враг, которого надо уничтожить, и ты своему звездолету даешь команды: в каком направлении и на сколько клеток лететь.
Примерно в 1986 году я узнал, что у нас в Свердловске есть компьютерный клуб, и начал туда ходить. На занятиях мы программировали на Бейсике. Доступ к компьютеру у меня фактически был раз в неделю, поэтому я писал программы дома в тетрадке, потом приходил в клуб, все это вводил, проверял, работают они или нет. И постепенно втянулся во всю эту тему.
Информатики в школе тогда не существовало в принципе, этот предмет еще не придумали. Зато было нечто под названием УПК – учебно-производственный комбинат: начиная с 7 класса школьники раз в неделю ходили в специальную организацию, где знакомились с разными профессиями, в будущем это должно было помочь определиться с выбором. Были массовые профессии вроде металлообработки, были модные – например, сбор печатных плат. Сложнее всего было попасть на программирование, причем писать программы нужно было даже не для компьютеров, а для калькуляторов. Это тоже было смешно: калькулятор размером с полстола, с огромными цифрами, вводишь туда какие-то программы и вычисления. Сначала я не прошел по конкурсу: нужно было решить математические задачи на вычисления, у меня было несколько ошибок. Но потом я убедил комиссию, что арифметика и программирование – это все-таки разные вещи, и мне нашли местечко. На УПК нам тоже что-то рассказывали, но признаться честно, в те времена в Свердловске учить программированию никто особо не умел: компьютеры только-только появились в университетах. Книжек тоже было мало, я читал все, что удавалось достать. А потом мне посоветовали сходить на олимпиаду по информатике.
Первая моя олимпиада была классе в шестом-седьмом. Не помню, занял ли я какое-то место, но мне определенно все очень понравилось. Я считаю, что на олимпиадах большую роль играет твой опыт участия, потому что важно не только научиться решать задачки, но и понять, как устроено соревнование. Поэтому здорово, что я попал в олимпиадное движение так рано.
В первых моих олимпиадах по информатике было два тура: теоретический и практический. На теоретическом мы на бумаге решали задания, которые требовали поиска алгоритмов. Сегодня олимпиады организованы гораздо более технологично, они стали гораздо более «спортивными». Тогда в оценках было очень много субъективизма, не хватало четких критериев, особенно это касалось теоретического тура.
В 10 классе я перешел в СУНЦ при Уральском госуниверситете – сейчас это, пожалуй, одна из лучших школ Екатеринбурга. Там с нами, олимпиадниками, занимался Дмитрий Олегович Филимоненков — он был математиком, недавно окончил аспирантуру и очень интересовался программированием. Эти занятия здорово помогали.
Дальше была классика: город, область, Россия, Всесоюзная олимпиада.
На первую свою Всесоюзную олимпиаду я поехал в 1990 году, это был 9 класс. Она проходила в Харькове. Не знаю, как все, но я в те времена точно путешествовал меньше, чем сейчас, а соревнования все время проводили в разных городах, участников обязательно возили на экскурсии, показывали что-то интересное, так что путешествие само по себе было отдельным впечатлением.
На олимпиаде нас распределили по кабинетам, где стояли компьютеры: они уже больше походили на современные, хотя понятно, что мониторы были гораздо толще. По сигналу нам раздали листы с распечатанными заданиями. Задачи1 были на алгоритмы, на перебор. Сейчас часто бывает, что задач в олимпиаде больше, чем успеваешь сделать, поэтому важный навык сегодня – понять, за какие стоит браться. А в те времена лучшие участники выполняли почти все, поэтому как такового вопроса выбора не было.
Программировали тогда, в основном, на Паскале, он дает гораздо меньше возможностей, чем тот же Python, поэтому важно было научиться программировать какие-то типовые действия. Например, часто в задачах использовалась так называемая «длинная арифметика»: Паскаль умеет работать с числами определенного размера, а в условии они гораздо длиннее. Соответственно, надо придумать, как производить математические операции с длинными числами. Когда мы тренировались, то старались такие базовые алгоритмы довести до автоматизма, научиться писать их быстро и без ошибок.
Никакой онлайн-проверки, конечно, не было, просто программируешь, в конце тура скидываешь на дискету все, что получилось, и сдаешь ее. После начиналось нервное время: списки с баллами вывешивались только на следующий день. Сейчас информатика в этом плане более живая, потому что проверяется все на лету.
Важным этапом олимпиады была апелляция. Сегодня это довольно формальная процедура, потому что ты задачу либо сделал, либо нет, автотесты никакого поля для возражений не оставляют, а тогда это было критично: жюри могло что-то не увидеть, у участников был шанс отстоять свое решение. Это тоже навык, которому приходилось учиться.
На олимпиаде были участники с разным уровнем настроя и подготовки. Кто-то приезжал просто посмотреть, а кто-то – бороться. Я в Харьков ехал за победой. Так что диплом третьей степени меня, в общем-то, расстроил, мне казалось, что я способен на большее. Хотя для первого раза это, конечно, неплохо.
После Всесоюзной олимпиады я просто продолжал заниматься с Филимоненковым, он готовил меня и моего одноклассника Женю Штыкова – мы с ним соревновались за первые места на областной олимпиаде, потом вместе вышли на Всероссийскую, где я его и обошел. Система подготовки у нас осталась прежней: мы продолжали нарабатывать алгоритмы и навыки, очень активно тренировались. Плюс само понимание того, как проходит Всесоюзная олимпиада, дало очень много. На первом соревновании ты не до конца понимаешь сам процесс: что за чем идет, какого типа задачи, как их лучше делать. Во второй раз у тебя уже есть некая фора просто за счет того, что ты знаешь правила игры.
В 1991 году на Всесоюзной олимпиаде в Бишкеке2 мне вручили диплом первой степени. На этот раз я остался доволен результатом.
Честно говоря, даже не могу вспомнить, знал ли я вообще о существовании Международной олимпиады по информатике до того, как попал на сборы. Я думал, что на Всесоюзной все заканчивается.
Перед Международной олимпиадой 6-7 человек пригласили на недельные сборы в ФМШ при МГУ (сейчас СУНЦ МГУ – прим. ред.). Было интересно, преподаватели рассказывали нам какие-то очень глубокие вещи про компьютеры и информатику, но сама по себе система подготовки для меня новой не была, мы с Филимоненковым делали примерно то же самое, просто здесь темп был выше. Потом прошла внутренняя мини-олимпиада, по результатам которой уже отобрали трех человек в сборную.
Международная олимпиада проводилась в Греции. Был 1991 год: у нас все еще СССР, границы, по сути, закрыты, хранить дома загранпаспорт запрещено, он лежит где-то в КГБ. До этого я один раз выезжал из страны – в Чехословакию по «околокомсомольской» истории, и паспорт мне выдали ровно на время поездки. С путешествием в Грецию произошло то же самое. Конечно, специальных людей, которые следили бы за каждым нашим шагом, уже не было, но какие-то наставления перед путешествием за границу нам давали. Еще нам выделили командировочные деньги, но самостоятельно распоряжаться ими было нельзя, они хранились у руководителей. Хочешь сувенир купить – подходишь к ним и просишь, сколько надо.
В Греции были экскурсии, нам показали Афины, помню, как меня впечатлил Акрополь. Честно говоря, все остальные достопримечательности я особо не зафиксировал: нас везде возили на автобусе, показывали какие-то очередные античные развалины, что-то про них рассказывали. Конечно, была куча народу из разных стран, все пытались как-то общаться. Мой английский тогда был на уровне «привет-пока», но тем не менее. Задания нам тоже давали на английском, и кто-то из наших руководителей переводил их на русский и писал перевод от руки.
Задачи3 оказались примерно того же уровня, что и на Всесоюзной олимпиаде, но подход к заданиям был совсем другой. В наших олимпиадах обычно работал принцип «одна задача – одно решение», а тут нам дали задачу с подпунктами, причем, чтобы справиться с каждым следующим, нужно было решить предыдущий. Я выполнил несколько пунктов и сдал программу, которая делала пункт D – чтобы дойти до него, надо было, соответственно, сделать A, B и С. А потом оказалось, что требовалось сохранить не только конечную программу, но и алгоритмы для каждого отдельного пункта. И в результате мне посчитали только то решение, которое я сдал. Мы с делегацией ходили на апелляцию, что-то мне добавили, тем не менее, баллы за выполненные, но не записанные отдельно алгоритмы я недополучил. И тут как раз история не про знания или навыки, а про опыт и понимание того, какими бывают задачи.
Результат этого соревнования стал для меня самым большим олимпиадным огорчением: было четкое ощущение, что я мог бы получить золото. К тому же, это был выпускной класс, а значит, мое первое и последнее участие в Международной олимпиаде. Конечно, серебряная медаль, 13 место – это все равно приятно. Но чувство легкой зависти сохранялось: за золото дарили то ли принтеры, то ли компьютеры, что-то абсолютно недостижимое. У меня компьютер появился только на третьем курсе университета, до этого мне это казалось чем-то из области фантастики.
Конечно, олимпиадная деятельность на высоком уровне сильно вышибает из учебы, но к моим пропускам учителя относились достаточно лояльно. Правда, когда-то я хотел идти на золотую медаль, но к старшим классам о ней уже и речи не было. Когда у меня по каким-то предметам не вытягивались пятерки и я приходил и спрашивал, можно ли что-то досдать, мне говорили: «Да ладно, зачем тебе? Занимайся своим делом».
После олимпиады мне вручили письмо от министра образования, которое давало мне право поступления без экзаменов в любой вуз страны по специальности. Это была классная штука. Я выбрал матмех в Уральском госуниверситете. Сейчас, конечно, можно размышлять о том, стоило ли так поступать, возможно, было бы лучше пойти в МГУ или в ИТМО. Но тогда я выбрал УрГУ по нескольким причинам. Во-первых, это 1991 год, страна в непонятной ситуации, неясно, что будет дальше, решения принимать сложно. К тому же, в 18 лет юношеский максимализм такой, что иногда я задавался вопросом, стоит ли вообще учиться, тратить время и силы на занятия, если с программированием у меня и так уже все хорошо.
В университете сначала казалось, что олимпиады для меня закончились, потому что в них участвуют только школьники. А потом, когда я был уже на четвертом курсе, вдруг возникла тема AСM – международной студенческой олимпиады по программированию. Это соревнование, конечно, существовало и раньше, просто, видимо, до нас еще ветром вести не донесло. И вот мы спешно собрали команду, потому что чемпионат начинался совсем скоро, и поехали в Москву. Выступили там не очень успешно – все-таки для нас это был новый формат, да и времени на подготовку не хватило. На этом история АСМ закончилась для меня, но не для УрГУ: университет стал активно развивать эту тему, появились специальные отборочные соревнования для студентов первых курсов, сайт Timus Online Judge с задачами. То есть, выстроилась целая локальная инфраструктура для того, чтобы выращивать новых участников. В результате наши команды стали выходить на международный уровень, показывать отличные результаты, а в 2014 году всемирный финал чемпионата прошел в Екатеринбурге, для города соревнования такого масштаба – это что-то почти нереальное.
Безусловно, участие в олимпиадах сильно повлияло на мою работу, в первую очередь, на ее выбор: что мне оставалось, кроме как стать айтишником?:) Также опыт олимпиадного программирования очень помогал, когда я был программистом-разработчиком. Соревнования прокачивают навыки быстрого поиска решений, это важно.
Я десять лет проработал в «Яндексе» и уже полтора года возглавляю компанию «Кнопка», где мы пытаемся совместить несовместимое: айтишные технологии, нейронные сети, автоматизацию и бухгалтерию – нечто очень традиционное и консервативное. Мне это направление кажется интересным и перспективным, надеюсь, у нас получится совершить прорыв.
Сейчас первые шаги в олимпиадах делает мой сын – он в шестом классе. Я поддерживаю его интерес, но не могу сказать, что тут проявляется мое влияние: очень сложно заставить человека всерьез делать что-то, если он не хочет. Но, возможно, его мотивирует мой пример: он видит, как меня увлекает то, чем я занимаюсь.
1. Задания III Всесоюзной олимпиады по информатике можно посмотреть в архиве журнала «Квант».
2. Задания IV Всесоюзной олимпиады по информатике можно посмотреть в архиве журнала «Квант».
3. Задачи III Международной олимпиады по информатике можно посмотреть в архиве журнала «Квант».