Институт

Городняя Л.В. Откуда берутся хорошие программисты

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

Школьная информатика

ШЮП, ЛШ, ЗШ, ШИ — этими аббревиатурами Андрей Петрович обозначал части механизма, продвигавшего Информатику и Компьютеры в наши школы:

— с 1975 года ЛШ или ЛШЮП (Летняя Школа Юных Программистов),
— с 1977 года ШЮП (Школа Юных Программистов),
— с 1978 года ЗШ (Заочная ШЮП),
— с 1982 года ШИ (Школьная Информатика).

Летом 1975 года Ю.А. Первин и Н.А. Садовская пригласили в Новосибирск из Харькова кружок юных кибернетиков Г.А. Звенигородского. Результативность харьковской методики вовлечения школьников в компьютерный мир настолько впечатлила А.П. Ершова, что в 1977 году Г.А. Звенигородский был приглашен в Новосибирск и сделал первый набор (более 70 школьников, возраст от 10 до 15 лет) в новосибирскую Школу Юных Программистов (ШЮП). Эту методику сейчас можно бы называть как объектно-ориентированное программирование учебных обстановок на понятном младшим школьникам языке Робик. В 1978 году на страницах журнала "Квант" Н.А. Юнерман энергично развернула Заочную Школу юных программистов (ЗШ), лучшие ученики которой приглашались в Новосибирск на Летние Школы (ЛШ) поработать на ЭВМ. Преподавали в этих школах преимущественно настоящие программисты-практики.

Летние Школы юных программистов

ЛШ — самое яркое и эффективное звено этого запущенного А. П. Ершовым механизма распространения и популяризации Информатики. ЛШ были предельно привлекательны для всех участников — школьников, педагогов, программистов, конструкторов ЭВМ и ученых.

На ЛШ съезжались школьники, чтобы впервые увидеть ЭВМ и вкусно поработать, педагоги, чтобы нащупать методику учебного применения ЭВМ, программисты, чтобы вместе со школьниками опробовать свои замыслы, конструкторы, чтобы испытать новую технику, ученые, чтобы популярно изложить свои идеи благодарной аудитории.

Ехали, чтобы за 10-20 дней узнать 5-10 языков и систем программирования, чтобы испытать себя в программистских олимпиадах, поработать в проектах рядом с мастерами программирования и подискутировать с мировыми светилами и классиками программирования. Решения задач на олимпиаде представлялись любыми способами. Никому и в голову не приходило ограничивать используемые языки программирования. Делом чести компетентного жюри было обеспечить проверку решения на любом известном школьнику языке.

Ехали, чтобы вернуться знатоками программирования на ассемблере, Паскале, Форте, Алголе-68, Лиспе, Сетле, Модуле, Фортране, Поплане и т.д. и специалистами по наладке функционирования самого капризного в мире школьного оборудования: БЭСМ-6, HP, ЕС ЭВМ, СМ, Apple, АГАТ, Yamaha, БК0010, IBM PC, выставочные экземпляры зарубежной техники, предоставляемой ИПИ АН (А.В. Гиглавый). Машин остро не хватало — распределяли время круглосуточно.

Были случаи, что после ЛШ восьмиклассник в родном городе, где нет программистов, самостоятельно справлялся с установкой и запуском в эксплуатацию новых, никому не известных школьных компьютеров, превращая свою школу в очередной центр ШИ. Школьный учитель, прошедший ЛШ на правах ученика, получал импульс для самостоятельной организации аналогичной школы у себя дома.

Жизнь летней школы

Ехали, чтобы завести друзей, петь ночью у костра, ставить спектали про Аду, Алгол и Фортран, "начинать" КВН, читать стихи, выпускать стенгазету и сочинять свои песни к конкурсу городов, слушать программистские байки от умных людей. А.А. Берс., Н.Н. Бровин, Д.Ш. Матрос, А.Н. Терехов, О.Ф. Титов, Л.Б. Штернберг и многие другие были доступны круглосуточно и в отличие от ЭВМ бесперебойно. Ежевечерние "Программистские сказки" А.А. Берса у костра впечатляли школьников не меньше, чем борения с ЭВМ. Иные лекции, например, по технологии программирования в исполнении А.Н. Терехова, завершались криком души юных дарований "ХОЧУ!... ХОЧУ, ЧТОБЫ У МЕНЯ БЫЛИ ТАКИЕ УЧИТЕЛЯ!!".

Сложнейшие приемы программотехники от кодирования до оптимизации программ, включая методы тестирования, разработки компиляторов и создания своих языков программирования и конструирования приложений постигались школьниками ради продвижения любимых и интересных тем. Сообщение Л.Б. Штернберга, что он в любой программе найдет хотя бы одну неоптимальность, юные "ассы программирования" воспринимали как интеллектуальный вызов и рьяно доводили свои программы до совершенства.

Мир ЛШ отнюдь не замыкается на программировании. Вечерами ученые Академгородка, Москвы, Ленинграда и других городов много рассказывали о физике, биологии, генетике, лингвистике, астрономии, истории и другом. Рассказывали не только школьникам, но и педагогам и программистам.

Поощрение индивидуальности

Ученики могли показать себя не только успехами в учебе и программировании, но и докладом на конференции, и показом "домашних" проектов, и изданием газеты, и подготовкой концерта. Можно было поздравлять именинников на утренней линейке (Н.Н. Бровин ее проводил так, что это было весело), поболеть или победить на шахматном чемпионате, тенисном турнире, поиграть в баскетбол. На берегу Обского моря — катамараны, серфинг, водный парашют, прогулка на теплоходе.

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

Яркие события


Каждой ЛШ ее научный руководитель А.П. Ершов посвящал хотя бы один день, в 1987 году в работе ЛШ принял участие Дж. Маккарти, бывали и другие знаменитости. Все это создает атмосферу энтузиазма, творческого накала, жажды знаний и доброжелательной инициативы. ЛШ начинали ждать сразу с сентября, как только приходили в себя.

Ученики и консультанты

Наиболее естественно формирование ЛШ получалось, когда приглашение учащихся определялось по результатам их учебы в ЗШ. Практиковался и конкурсный отбор, а также привлечение по рекомендации. Следует отметить, что рекомендации программистов-практиков намного превышают по уровню подтверждения в деле конкурсный отбор. По-видимому, критерии профессиональной пригодности к программированию еще не вполне осознаны, но на практике достаточно очевидны.

Если ЗШ занималась поиском наиболее способных и заинтересованных учеников для ЛШ (почти без возрастных ограничений, включая отдельных школьных педагогов), то Новосибирская ШЮП в течение учебного года формировала команду консультантов-подмастерьев, берущих на себя значительную нагрузку по организации и проведению ЛШ. Эта команда начинала работу с марта в форме заседаний оргкомитета ЛШ. Обсуждались, проговаривались заранее, согласовывались разные детали механизма ЛШ — нечто вроде безмашинной отладки программ. Школьникам и студентам, включившимся в эту команду, многое доверяли, но и многое спрашивали. Ни возраст, ни неопытность, ни неумение не могли быть оправданием в случае провала поручения. Такая, заранее сплоченная, команда всегда была в курсе происходящего на ЛШ и обеспечивала ее здоровый микроклимат — дух ЛШ.

География участников ЛШ быстро расширилась: Харьков, Красноярск, Ленинград, Горький, Москва, Иркутск, Абакан, Братск, Томск, Петропавловск, Ульяновск, Махачкала, Владивосток, Фрунзе, Ташкент, Алма-Ата и другие города СССР, Болгария, Чехословакия, Венгрия, Германия, Польша, Голландия. По сути ЛШ превращалась в международный клуб любителей детского программирования.

Обучение программированию

Методика Г.А. Звенигородского раннего обучения программированию учащихся ШЮП кроме языка Робик (идеи исполнителей которого отчасти воплощены в Роботландии Ю.А. Первина), активно использовала прорисовку синтаксических диаграмм, четкое выделение методически обусловленных учебных концентров и профилактику прирастания к первому средству. Разнообразие ЭВМ, языков и систем программирования, операционных систем, стилей и технологий представало перед учащимися в первый же год обучения. Для более старших школьников методика Г.А. Звенигородского в Новосибирске получила развитие в виде учебно-производственного языка Рапира — похож на бестиповый Паскаль с более универсальными структурами данных и управления — и проекта интегрированной учебной среды "Школьница". Большую роль на этом уровне сыграла компьютерная графика — система Шпага для программирования прорисовки любимых картинок в понятных детям терминах.

Коллективные проекты

Важнейшей особенностью подхода Г.А. Звенигородского к обучению школьников следует признать целенаправленое формирование разноуровневых по квалификации и возрасту групп/мастерских, выполняющих коллективный проект по внешнему заказу. В группу включаются добровольно — кому интересно. При группе имеются консультанты/подмастерья — знатоки используемых средств и методов из числа более опытных учеников. Группой руководит мастер — специалист, интересующийся задачами, близкими к внешнему заказу. Внешне это очень похоже на часто упоминаемый метод проектов: система вводных и базовых проектов ВКИ НГУ, проектные разработки по заказу учителей в своей школе, проекты по моделированию физических процессов (движение ракеты, "стрелялки" и т.п.). Принципиальная разница заключается в наличии внешнего заказа, критерии выполнения которого не подвластны руководителю и консультантам. Интересно, что прошедшие такую выучку программисты оказались в дальнейшем способны к бесконфликтному оптимальному распределению обязанностей в коллективных проектах.

Квалификация лучших учеников

Под руководством Г.А. Звенигородского группой студентов и старшеклассников на первом советском ПК "АГАТ" была создана система "Школьница", в которую вошли Робик и Рапира, использовавшиеся при разработке первых демонстрационных образцов программных средств обучения по школьной тематике. Эти образцы были продемонстрированы Комиссии очень высокого ранга, что и позволило ШИ стать новой школьной дисциплиной "Основы информатики и вычислительной техники".

В 1985 году участники и выпускники ЛШ Л.С. Бараз, Н.Г. Глаголева, П.А. Земцов, Е.В. Налимов, Е.В. Боровиков, А.В. Грабарь, С.А. Терехов, Н.Ш. Погосян, М.А. Зайцев и др. под руководством Л.В. Городней приступили к профессиональной разработке школьного программного обеспечения на базе КУВТ Ямаха и Электроника УКНЦ. Кроме удобной системы программирования на языке Рапира с дружелюбным интерфейсом, окнами и достаточно быстрой машинной графикой, был разработан тренажер Микрорапира для начального знакомства с программированием, непревзойденный по устойчивости и удобству ряд текстовых редакторов Tor, система подготовки текстовых документов Dcm, автоматизированные средства восстановления файловой системы Vfy, текстовый макрогенератор Gpm, низкоуровневые средства ручной работы с файлами Fix и Nalim Commander для ПК Yamaha-MSX-2 — прекрасный аналог Norton Commander. В реализации на Электронике УКНЦ язык Рапира был обогащен возможностью работать с вычисляемыми именами и ассоциативными таблицами. Кроме того были разработаны эффективные сервисные средства системного администрирования и поддержки профессионального программирования на СМ-4. Многие из этих средств эксплуатируются в школах до сих пор.

Вывод

Таким образом Новосибирская система ЛШ+ЗШ+ШЮП+ШИ показала способность готовить программистские кадры мирового уровня. Механизм ее организации и функционирования вполне соответствовал критерию Дж. Вейнберга, автора основополагающего труда "Психология программирования". На вопрос: "Откуда берутся хорошие программы и хорошие программисты?" — Дж. Вейнберг дает ответ: "Хорошее программирование как хорошая дружба — крепнет от поощрения индивидуальности и признания достоинств." Программные средства для новых компьютеров и очередные версии информационных систем многих известных фирм теперь выпускаются при участии выпускников ЛШ, ныне работающих в фирмах Intel, Microsoft, HP, IBM, Oracle и т.д.