Программирование как игра?

Программирование как игра?

Автор: Константин Кноп

Классики (от Дональда Кнута до Дэвида Гриса и Эдсгера Дийкстры) долго спорили о том, чем же является программирование как вид человеческой деятельности - научной дисциплиной, искусством, профессией или чем-то еще. Никому из "отцов-основателей", видимо, не могло прийти в голову, что программирование станет игрой и даже видом "интеллектуального спорта". Однако именно игровое (или, если угодно, спортивное) программирование в последнее время стало одним из путей, приводящих в эту сферу самую талантливую и яркую молодежь. Причем не поодиночке, а целыми командами.

Ты помнишь,как все начиналось?..

"Википедия" утверждает, что история командных чемпионатов по программированию уходит корнями в далекий 1970 год, когда в Техасском университете было проведено первое соревнование такого рода. Спустя семь лет в рамках научной конференции ACM (Association for Computer Machinery) состоялся первый международный турнир, и пошло-поехало…

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

Впрочем, и у нас дела обстоят неплохо - иначе откуда бы взяться успехам на международной арене? В 1996 году учрежден Северо-Восточный Европейский регион, проводящий свое (полуфинальное) соревнование среди студентов. На сегодняшний день он является крупнейшим в мире как по охвату территории, так и по количеству команд-участниц. Предварительные отборочные турниры проводятся в четырнадцати городах, от Минска и Еревана до Красноярска и Владивостока. Четыре раза "наши" команды становились чемпионами мира.

Восьмой год подряд проводятся Открытые Всероссийские командные олимпиады по программированию среди школьников (ВКОПШ). В последней олимпиаде, проходившей в декабре 2007 года в Санкт-Петербурге, участвовали 140 команд. А главный приз - неожиданно для очень и очень многих - уплыл в Гомель, областной центр братской Беларуси.

Гомельское Чудо -взгляд снаружи…

Первое место и Кубок чемпионов олимпиады завоевала сборная команда городов Гомеля и Столбцов, третье место - команда города Мозыря. Только на втором месте оказался новый чемпион России - сборная команда Нижнего Новгорода и Сарова. Команды Москвы и Санкт-Петербурга остались на четвертом и пятом местах, безнадежно отстав от первой тройки по времени. Такого разгрома школьников российских столиц не случалось за всю многолетнюю историю этих интеллектуальных соревнований".

Эти слова сказаны не сторонним наблюдателем, а профессором СПбГУ ИТМО Владимиром Глебовичем Парфеновым - одним из главных организаторов командных программистских соревнований в России. Охарактеризовав успех двух белорусских команд как "ошеломляющий", он особо обратил внимание на бронзовых призеров из Мозыря (районного центра Гомельской области, города со стотысячным населением): "Команда, подготовленная Алексеем Бруновым, руководителем кружка информатики при Клубе юных пожарных (!) Мозыря, одерживает победу над сборными Москвы и Санкт-Петербурга.

Местонахождение кружка информатики и численность населения Мозыря многократно усиливали шоковый эффект. Впечатление от этого события можно сравнить разве что с эффектом от победы сборной Мозыря по футболу над мадридским "Реалом" или лондонским "Челси".

…и изнутри

И все-таки чудеса не только объяснимы, но даже в каком-то смысле закономерны. Об этом мы беседуем с Михаилом Семеновичем Долинским, тренером гомельской чемпионской команды и создателем тренирующей системы обучения программированию DL.

Как долго вы шли к этой победе?

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

А как вышло, что вы, вузовский преподаватель, стали заниматься со школьниками?

- Двадцать лет назад я получил на кафедре хоздоговорную, как тогда говорили, тему, заказчиком которой был Гомельский завод радиотехнологического оснащения. Когда я спросил, с кем же мне работать, мой заведующий кафедрой, профессор И. В. Максимей сказал: "Тебе нужны люди - воспитай их". И я начал активно работать со студентами. Но вскоре понял, что пока я их научу, они закончат вуз и уйдут. Тогда я стал работать со школьниками, сначала с десятого класса, потом с восьмого. Алексей Данченко, когда-то учившийся в этом 8-м классе, взял две серебряные медали на международных олимпиадах по информатике 1999 и 2000 годов, поступил без экзаменов в минский БГУ, а затем пять лет был капитаном первой команды БГУ по программированию, два раза проходившей в финал чемпионата ACM. В 2000 году я решил начать с пятого класса. Прошлой осенью четверо олимпиадников того самого класса поступили в вузы. Один из них - Володя Миняйлов - в 2006 году выиграл "золото" (8-е место в абсолютном зачете) международной олимпиады. С 2005 года я со своими помощниками начал работу в младших классах под девизом "Умеешь читать - научись программировать". В этом году спустились еще на пару лет - теперь мы учим детей программированию с первого класса, а на первой книжке "Учим слова" написан наш новый девиз: "Не умеешь читать - научись программировать". Прошло всего три месяца - и уже тридцать из пятидесяти пяти наших первоклашек начали писать программы. Некоторые еще толком и читать не умеют!

Да, это впечатляет. Но давайте все-таки вернемся к успехам ваших нынешних воспитанников. Ведь не случайны же они?!

- Систематические успехи вообще не могут быть случайными. Гомельчане, с которыми я работал и работаю, за десять лет завоевали на международных олимпиадах по информатике для школьников (IOI) 14 медалей - 2 золотые, 8 серебряных и 4 бронзовых. За тот же срок на республиканских олимпиадах Белоруссии ребята получили 104 диплома и 27 похвальных отзывов. Я хотел бы подчеркнуть, что в наградах каждого школьника в первую очередь заслуга его лично - его трудолюбия, самостоятельности и способностей. Во вторую очередь - вклад родителей: и в том, что передано ребенку с генами, и в воспитании, и в создании условий для учебы дома. И только в третью очередь эти успехи являются заслугой системы обучения. (Пользуясь случаем, я хочу поблагодарить за постоянную помощь и поддержку администрацию Гомельского государственного университета имени Ф. Скорины, а также своих друзей, учеников и коллег.)

Сколько лет занимается программированием команда-чемпион?

- Секрет успеха этой команды в ее лидере - Гене Короткевиче, ученике 7-го класса гимназии N56 г. Гомеля. Несмотря на свой юный возраст, он уже дважды медалист международных олимпиад! А в этом сезоне Гена в одиночку выиграл почти все командные соревнования школьников: четыре этапа открытого кубка среди школьников, почти все командные тренировочные интернет-олимпиады школьников на сайте neerc.ifmo.ru/school.

Однако по правилам командного первенства от нас требовалось привезти не чемпиона-одиночку, а команду. Поэтому вместе с Геной выступали одиннадцатиклассник Рома Удовиченко из Столбцов (серебряная медаль на IOI 2007) и девятиклассник Леша Каминский из Гомеля. Мы поставили этой команде задачу завоевать первое место, и ребята с нею справились.

А как выступили другие ваши команды?

- Всего мы привезли в Петербург пять команд. Две из них, к сожалению, остались без дипломов, зато мозыряне, заняв третье место, даже "перевыполнили план".

Можно ли ожидать повторения этого успеха?

- Если Гена не перестанет заниматься - а сейчас он занимается весьма добросовестно, - то еще лет пять отнять у него Кубок ВКОПШ будет очень трудно. Но и другие наши ребята тоже занимаются и растут, так что теперь у гомельчан всегда будет одна цель - первое место + дипломы у всех выступающих команд.

А как вообще обстоят дела с обучением программированию в Беларуси?

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

То есть уровень знаний студентов понемногу падает?

- Нет. Кто хочет научиться - учится. Просто, как я уже сказал, заслуга в этом не столько системы образования, сколько самих студентов.

И еще вопрос, о котором нынче не очень принято говорить. Многие наши коллеги в кулуарных беседах признают, что "качество человеческого материала" год от года, мягко говоря, не улучшается.

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

Поработав три месяца с первоклассниками, я понял, что в этом возрасте ребенку еще можно привить трудолюбие.

Вместо эпилога

Дети очень любят играть. Еще больше они любят, когда вместе с ними играют взрослые - учителя и тренеры. К сожалению, учителей, которым не безразлична их работа, с каждым годом остается все меньше. Очень не хочется, чтобы мы забывали: за успехами на международных соревнованиях стоит тяжелейший труд и самих победителей, и тех бескорыстных энтузиастов, которые их приводят к победам. Да, Михаил Долинский готовит будущих программистов уже с первого класса. Но сколько таких Долинских на всю Постсовдепию? Десяток? Сотня?.. Сотни, боюсь, не наберется. А нужно - на пару порядков больше, и это уже совсем не игрушечный вопрос.