Наука — Школе |
... В целом широкой образовательной публикой плохо осознается, насколько тормозит всю систему (речь идет о преподавании программирования) отсутствие единой технологической платформы для средних и старших классов средней школы и младших курсов вузов.
Совершенно очевидно (и доказано практикой), что такой общей платформой не может быть никакой из С-образных языков. С другой стороны, ясно, что нет никаких препятствий для выучивания особенностей любого языка программирования в специальных курсах университетов или профессиональных училищ после того как с минимальными усилиями освоены основы программирования (по принципу "щи -- отдельно, мухи -- отдельно"). Наконец, для тех, кто вовсе не собирается специализироваться в профессиональном программировании -- но кому по жизни неизбежно придется столкнуться с необходимостью писать программы (а таких программистов-"непрофессионалов" в три раза больше, чем чистых профессионалов [оценка Mайкрософт, июль 2004 г., сделанная по следам нашего доклада; http://www.inr.ac.ru/~info21/info/fvtjmlc2003r.htm; см. также настоящий диск]) -- таким "непрофессионалам" важно еще знать и свой основной предмет -- и вот здесь минималистская ясность Оберона/Компонентного Паскаля оказывается критически важной.
Итак, центральный мессидж проекта Информатика-21 таков:
Экспериментально доказано, что существует совершенно реальная -- реальная и с технической, и с педагогической точек зрения -- возможность иметь общую технологическую платформу -- безукоризненно современную, но и не порывающую с существующей традицией Паскаля в российском образовании -- для выстраивания столь необходимой нам стройной общей системы обучения программированию, начиная с азов (11-16 лет), кончая достаточно продвинутыми по старомодным меркам -- но, в сущности, элементарными вещами из "программирования в большом" в университетах (примерно первые два курса обучения, с вариациями в зависимости от специальности, как и в случае курсов по высшей математике).
Такая платформа уже существует здесь и сейчас: это две версии БлэкБокса (для школ и для университетов) вместе с сопуствующим программным обеспечением, наработанным участниками проекта Информатика-21. Вероятно, какие-то детали еще нужно "выглаживать", но мы утверждаем, что полноценная основа есть.
Первым и самым важным шагом был бы перевод всех основных курсов программирования в школах на Компонентный Паскаль, где и так доминирует Паскаль. Этот шаг может быть совершен достаточно безболезненно (причем, очевидно, с меньшими усилиями, чем переход с бейсика на ТурбоПаскаль): например, для модуля графики ТурбоПаскаля, важного в начале курса программирования, имеется аналог в БлэкБоксе, так что перенос программ учителей может быть совершен с минимальными усилиями.
Нужно оценить и тот факт, что в школьном варианте БлэкБокса все меню и даже сообщения компилятора (!) переведены на русский язык (причем учитель может их без труда изменять -- или перевести, например, на бурятский язык).
Остановимся и на ряде проблем с преподаванием основ программирования, выявленных в опыте, полученном в рамках проекта Информатика-21.
1) Самое главное: скорость развития мира ИТ такова, что картина мира ИТ, предстающая в коллективном сознании, сильнейшим образом фрагментирована и сильнейшим образом искажена рекламой (включая дезинформацию и т.наз. "ложь умолчанием"), мифами и т.п. Механизмы, способствующие возникновению разного рода мифов, особенно среди необученной, но крайне самоуверенной молодежи, не осознаются и действуют в полную силу на фоне невежества существенного большинства и преподавателей, и лабухов от программирования в отношении фундаментальных основ программирования как систематической деятельности. Подчеркнем, что под "фундаментальными основами" мы здесь понимаем не квазинаучную пустотность в духе предложений об изучении аксиоматик теории множеств Геделя-Бернайса и др. на химическом факультете МГУ (соответствующие предложения, сделанные, кстати, при поддержке Microsoft, о чем публично умалчивается, и в которых ни разу не упомянут Паскаль, но зато обязательно C#, вывешены в Рунете). Под "фундаментальными основами" мы понимаем квинтессенцию огромного опыта программирования (которое началось не пять, а 50 лет назад), выделенную острейшими умами, интеллектуальные достижения которых заслуженно увенчаны Тьюринговскими премиями (повторим эти имера: Э.В.Дейкстра, Н.Вирт, Ч.Э.Р.Хоор, О.-Й.Дал ...).
2) Вся существующая система преподавания программирования ориентируется на подготовку программистов-профессионалов. Тот факт, что физики (которые сейчас, например, наиболее активно "проталкивают" Интернет2 для своих нужд), инженеры-строители (вспомним катастрофу Трансвааль-Парка), лингвисты (вспомним громадную проблему перевода документов в Евросоюзе), химики, экономисты, инженеры-автомобилестроители (система управления BMW содержит десятки CPU), инженеры аэрокосмического (беспилотные летательные аппараты) и военно-промышленного ("умное оружие") комплексов -- все эти программитсы-"непрофессионалы" заняты программированием существенную и все увеличивающуюся часть своего совокупного времени -- этот громадный факт громадного значения система школьного образования громадно игнорирует.
3) Это прежде всего проявляется в патологически преувеличенной роли олимпиад по программированию в школьном преподавании. Задачи, предлагаемые на таких олимпиадах, носят весьма специфический характер (комбинаторные перечисления и т.п.). То, что следует вырабатывать в общем курсе основ программирования, -- ясность и точность выражения простых базовых алгоритмов в широко используемых типах задач (каковых типов, в сущности, немного), а также составление ясных, четко структурированных программ из таких блоков, -- в школьном преподавании практически игнорируется. Подчеркнем: в основу обшего курса нужно положить воспитание интеллектуальной привычки к ясности выражения, которая и для профессионального программирования несопоставимо важнее ловкости в решении комбинаторных задач, тем более что подавляющее большинство олимпиадных задач легко решаются применением 2-3х базовых алгоритмических схем (чаще всего, схемы линейного поиска). Было бы гораздо целесообразнее приучать детей систематически использовать такие схемы в простых типовых задачах и на языке, прямо такие схемы поддерживающем (Компонентный Паскаль), чем заставлять их вымучивать уродливые алгоритмы на устаревшем языке.
4) Как следствие патологически преувеличенной роли олимпиад по программированию -- полная ориентация школьных курсов на те программистские платформы, которые используются на олимпиадах. Но на олимпиадах по чисто организационным причинам используется лишь минимум платформ программирования. Образуется абсолютно вредный замкнутый круг: использование морально устаревшей платформы (старый Паскаль) препятствует освоению "техничного" решения типовых задач в силу того, что старый Паскаль "техничные" приемы решения поддерживает неудовлетворительно. Забавно, что преодоление дефектов версий старого Паскаля нередко оказывается по факту важной компонентой "сложности" олимпиадных задач. Нельзя назвать такую ситуацию иначе как абсурдной.
5) Коммерциализация университетской системы, о которой эмоционально написал Н.Вирт (доклад "Потерянная дорога", см. сайт проекта Информатика-21). В результате преподаватели в университетах "завязываются" на определенные коммерческие платформы (образуя разного рода курсы проф. подготовки) и при соответствующей финансовой поддержке "проталкивают" эти платформы в общие курсы. А типичная суета, царящая в таком многолюдном заведении, как университет, эффективно препятствует тому, чтобы систематически разобраться с вопросом, что и для чего мы преподаем студентам. Кроме того, школьная проблематика настолько специфична (чему первое и самое поверхностное свидетельство -- громадные децибелы, обрушивающихся на визитера, входящего в школу во время перемены), что университетские преподаватели не желают и не способны правильно учесть эту специфику в своих суждениях.
6) Неотделенность, в частности, в школьных курсах дисциплин, которые можно условно назвать "основы вождения компьютера" и "основы алгоритмизации". Нужно четко понимать, что это две разные дисциплины: первая подобна обучению вождению автомобиля, и проблемы, возникающие здесь (устаревший парк компьютеров, отсутствие в школах Интернета и т.п.), имеют преходящий характер. Что касается второй дисциплины, то она гораздо ближе и по важности, и по характеру ("гимнастика ума"), к математике. Научиться "устанавливать программы" (реальная похвальба школьника) можно и от приятеля-соседа. Узнавать и научиться использовать классическую схему линейного поиска в программе можно только в систематическом курсе. Причем значительную и важную часть "основ алгоритмизации" вообще можно преподавать без компьютеров (причем не только можно, но и, видимо, даже предпочтительней; это утверждение основано на нашем лицейском опыте, когда в течение почти года пришлось работать без комьпютеров в результате кражи машин из компьютерного класса).
7) Очевидно, что задачу создания единой платформы для преподавания программирования в старших классах школы и на младших курсах вузов никто не ставил. Очевидно также, что и важность этой назревшей задачи еще толком и не осознается. Вероятно, главный психологический "блок", препятствующих размышлениям о важности такой платформы, -- непонимание самой возможности ее.
Проект Информатика-21 доказывает, что такая возможность и такая платформа реально существуют. Хотя полное понимание образовательным сообществом -- от школьных учителей до министерских администраторов -- всех положительных последствий принятия такой платформы еще потребует немало просветительных усилий.
Координатор проекта Информатика-21
Ф.В.Ткачев
Наука — Школе |