i21edu/Docu/ru/ЧерепашкаДоклад2008.odc

КОМПОНЕНТНЫЙ ПАСКАЛЬ И СРЕДА БЛЭКБОКС 
НА УРОКАХ ИНФОРМАТИКИ ДЛЯ 5-КЛАССНИКОВ
Тезисы доклада для XIX международной конференции Применение новых технологий в образовании, Троицк, Московская область, 2627 июня 2008 г.
Леденева Ольга Александровна
МОУ Лицей города Троицка Московской обл.
Ткачев Федор Васильевич (info21@inr.ac.ru)
Институт ядерных исследований РАН (ИЯИ РАН), Москва

Адрес в Сети: http://www.inr.ac.ru/~info21/troitsklicej\bytic-xix-2008.htm
Репортажи: http://www.inr.ac.ru/~info21/troitsklicej/vtorojetap.htm
Доклад-продолжение, 2009: Русифицированные мини-среды...

Аннотация Суммирован опыт использования среды Блэкбокс (конфигурация с исполнителем-черепашкой) в курсе основ программирования для 5-классников в рамках проекта Информатика-21. Оказалось возможным и полезным рано и активно вводить процедуры вместе с понятиями пред- и постусловий, что подготавливает к методу пошагового уточнения. Переход от черепашки к обычным темам не требует никакого переучивания.

Проект Информатика-21 [1] предлагает, по-видимому, единственную на данный момент стройную, научно обоснованную и опирающуюся на богатый педагогический опыт концепцию построения единой системы преподавания информатики, охватывающей учащихся от уровня начинающих до младших курсов университетов. 
Суть предложений проекта  в использовании единой технологической платформы для костяка общих вводных курсов, на который опираются углубленные и профильные курсы в зависимости от специализации учащихся. 
Такая единая платформа должна удовлетворять ряду специфических требований, возникающих в школьном контексте: 
 быть простой (но не примитивной) и легкой для освоения как учениками, так и учителями (а также и родителями); 
 поддерживать общепринятые пользовательские интерфейсы; 
 предельно ясно представлять фундаментальные идеи программирования (иначе не удается эффективно формировать ключевые компетенции у максимально широкого круга учащихся); 
 обеспечивать легкость конфигурации для адаптации к разным условиям и отработки методик;
 быть удобным мостиком к изучению разных промышленных систем.
Простые школьные системы (Турбо Паскаль и всякого рода бейсики) заведомо устарели и слишком примитивны. С другой стороны, промышленные системы  это настоящие монстры, избыточно сложные по субъективным и историческим причинам. Эта избыточная сложность оказывается чрезмерной обузой не только в школьной среде, но и для прикладников (инженеров, ученых и т.п.; заметим, что именно последнее обстоятельство послужило отправной точкой проекта Информатика-21, см. доклад [2]).
Язык программирования Паскаль заслуженно популярен как средство эффективного обучения программированию, но он отражает не вполне зрелый уровень искусства конца 1960-х гг. В конце 80-х гг. автор Паскаля Н.Вирт предложил доработанный вариант Паскаля, названный Обероном [3]. Сохраняя всё ценное в Паскале, Оберон аккуратно инкорпорирует средства объектно- и компонетно-ориентированного программирования, но при этом оказывается меньше старого Паскаля и проще на общем подмножестве. Невозможно преуменьшить значение этой разработки: Оберон оказал глубокое влияние на громкие проекты Java и C#. Однако переход на Оберон в образовании тормозится инерцией и дезориентированностью преподавателей быстрым развитием индустрии ИТ, а также давлением корыстных интересов крупных компаний.
Самая удачная реализация Оберона для работы в распространенных ОС создана в 1993 г. учениками Н.Вирта, называется Блэкбокс (BlackBox) и использует диалект Оберона, названный Компонентный Паскаль, чтобы подчеркнуть родство по прямой линии с классическим Паскалем. Важно отчетливо понимать, что это отнюдь не еще одна система программирования: не говоря о вкладе самого Н.Вирта, отметим, что ее архитектор К. Шиперский  ведущий специалист по архитектуре програмных систем [4] и с 1999 г. сотрудник исследовательской лаборатории Майкрософт.
Система Блэкбокс бесплатна (о получении см. [1]), вокруг нее сложилось активное сообщество преподавателей, программистов, ученых и инженеров, она прекрасно себя зарекомендовала в проектах самого разного уровня сложности и ответственности (см. материалы сайтов [1] и [7]), а также в преподавании (например, в США с 1996 г.; см. учебник [5]). 
В России преподавание на системе Блэкбокс ведется с 2001 г. (первоначально на теоретических кафедрах физического факультета МГУ и в Лицее г. Троицка; отметим, что в 1998 г. С.З.Свердлов начал обучение на основе другой версии Оберона в Вологодском университете [6], и его студенческая команда пробилась в финал Чемпионата мира по программированию 2003 г.). 
C осени 2005 г. функционирует российский сайт поддержки [7]. 
Блэкбокс удобнее Турбо Паскаля (например, свидетельство 5-классника А.Адамовича, параллельно изучающего стандартный курс программирования на Турбо Паскале в Байтике), хотя под внешне простой оболочкой здесь скрыты радикально более мощные механизмы. 
Специалисты называют Блэкбокс практически идеальной платформой для вводных курсов программирования [8]. 
Более того, учащихся можно провести в единой среде, без потерь крайне дефицитного учебного времени на переучивание, от самых первых шагов до весьма продвинутого уровня (включая объектные методы). 
Методисты отмечают это как важнейшее преимущество среды, не имеющей в этом отношении конкурентов [9].
Серьезные усилия по переходу с Турбо Паскаля на Блэкбокс предпринимаются в Томском гос. университете (А.И.Попков и Ю.Л.Костюк), а также преподавателями в Москве, Орле, Екатеринбурге, Новосибирской области и др. (особо отметим Хабаровскую школу программистов [10], возглавляемую опытнейшим методистом и автором ряда учебников В.В.Потопахиным [11]).
Пионерами внедрения Блэкбокса в обучение младших школьников стали белорусские специалисты: в 2006 г. в Витебской области стартовала 4-годичная программа по переводу школьной информатики, начиная с младших классов, на Блэкбокс (рук. А.Б.Кондратович; см. подробнее на сайте [1]). Однако уже после первого года преимущества системы стали настолько очевидны учителям, что по их просьбам программа была форсирована.
В Троицком лицее ощущается проблема с преподаванием информатики в 5-7 классах, связанная с отсутствием часов в учебном плане, несмотря на общую тенденцию к раннему началу преподавания информатики. В старших классах преподавание идет по накатанной колее, но соответствующие методики непригодны для 5-классников, у которых логическое мышление еще только формируется. Поэтому в целях пропедевтики в группе 5-классников вслед за белорусскими коллегами было начато обучение на базе Блэкбокса и графических исполнителей. Подробный отчет о ходе занятий с фотографиями есть в Сети [12]. Ниже сформулирован ряд методических выводов.
Для системы Блэкбокс (кстати, это хороший пример ее уникальной расширяемости) написан ряд исполнителей (черепашка-чертежница, робот и др.), восходящих к методикам 1980-х гг. (Кушниренко и др. [13]). 
Программа для, например, черепашки в Блэкбоксе  это обычная программа на Компонентном Паскале, содержащая вызовы библиотечных команд управления черепашкой. Рисунок черепашка чертит в отдельном окошке.
Сначала мы испытали пакет, собранный И.Е.Ермаковым (работа велась только с одним исполнителем из пакета  черепашкой). Выяснилось, что некоторые дополнительные удобства в пакете (метафора документа как тетради с заданиями, сокрытие нескольких технических строк программы и т.п.), не столько помогают, сколько мешают (нужно разбираться, как всё это работает, причем достаточно скоро всё равно приходится переходить к полноценному штатному режиму работы). 
Во-вторых, выяснилось, что имеет смысл оформить работу каждого ученика в виде отдельной папки со своим меню (по фамилии ученика), с собственными шаблонами программ и т.п., причем настраивать свои меню и проч. может даже сам ученик. 
Такую подсистему легко копировать на флэшку, чтобы забрать домой (некоторые ученики так и поступали; для всего Блэкбокса достаточно флэшки в 32М).
Чтобы сфокусировать внимание на главном, мы построгали черепашку, оставив только самые необходимые команды. Кроме того, конфигурация Блэкбокса была настроена так, чтобы система сразу открывалась с набором окошечек для работы с черепашкой (это делается в специальном модуле Config, который учителю легко подправить под нужды любой группы). В итоге был сформирован простой пакет для работы с черепашкой для начинающих младших школьников (его можно сгрузить с сайта [1]).
Блэкбокс поддерживает многооконный интерфейс: одновременно открыты программа ученика, справка по командам черепашки (откуда их можно копировать в программу), окно с рисунком. Ученики быстро научились открывать второе окошко на свою программу, а также использовать свои старые программы в качестве шпаргалок.
Документы Блэкбокса (в том числе программы) можно форматировать (стандартный набор команд редактирования, выбор гарнитуры, размера, цвета, форматирование абзацев, вставка картинок, и т.п.; кстати, данный текст создан в Блэкбоксе; и, по-видимому, редактора Блэкбокса достаточно для нужд школьного документооборота). Поэтому имеется полезный побочный эффект: программируя черепашку, ученики по ходу дела осваивают арсенал стандартных приемов редактирования документов.
Наблюдение за работой с черепашкой позволило сделать очень важные, на наш взгляд, методические выводы:
Во-первых, рисование черепашкой стимулирует раннее  еще до циклов и переменных  введение процедур (в рисунке домика это процедуры Окно, Крыша и т.п.). Этот пункт очень важен и поддерживается университетским опытом преподавания и опытом сложного программирования: выделение группы элементов (команд) в поименованный блок  ключевое средство формирования организующих абстракций, а это  важнейшая компетенция в программировании и, шире, в управлении любыми сложными системами (известный с античных времен принцип разделяй и властвуй [14]). Например, 5-классникам нелегко даются двойные циклы, но если внутренний цикл оформлен как осмысленная отдельная процедура и представлен понятным именем, затруднение уходит. 
Во-вторых, черепашка, имеющая состояние (положение x, y и направление, куда она смотрит), неожиданно оказалась удобным средством для введения фундаментальных понятий пред- и пост-условий (состояния черепашки в начале и в конце процедуры). Иногда достаточно просто напомнить о них, чтобы юный программер разгадал поведение своей программы.
Раннее введение процедур (для элементов рисунка) вместе с явным проговариванием пред- и пост-условий (т.е. положений черепашки)  очень привлекательно: тот факт, что такие краеугольные понятия можно запечатлеть в умах так наглядно и рано (и затем просто потихоньку наращивать мясо на эту основу в дальнейшем обучении), причем с немедленно ощутимой практической пользой, является приятным методическим сюрпризом.
Итак, наш опыт подтверждает выводы белорусских участников проекта Информатика-21 о том, что Блэкбокс удобен уже для обучения 5-классников. 
При этом гарантирован плавный переход к традиционным темам настоящего программирования в старших классах без каких-либо потерь учебных часов на переучивание. 
Более того, учащиеся будут уже на ты со структурой языка и рядом ключевых понятий. 
При этом с самого начала, совершенно естественным путем и без дополнительной нагрузки на учащихся углубляется содержание общего курса программирования.

Добавление (осень 2010). Опыт, суммированный в докладе, согласуется с основными выводами Кушниренко и Лебедева [15]. К сожалению, источник [15]  на наш взгляд недооцененный школьными учителями информатики  был случайно обнаружен нами уже после конференции.
Литература
[1] Проект Информатика-21: http://www.inr.ac.ru/~info21/
[2] Ф.В. Ткачев. Доклад на конференции JMLC'2003, см. [1].
[3] N. Wirth. The Programming Language Oberon // Software  Practice and Experience, Vol.18, No.7, p.671-690 (1988). N. Wirth, J. Gutknecht. Project Oberon. The Design of an Operating System and Compiler. Addison-Wesley, 1992, xii+548 pp.
[4] C.Szyperski. Component Software. Addison-Wesley Longman 1998.
[5] J.S.Warford. Computing Fundamentals. Vieweg, 2002.
[6] http://www.uni-vologda.ac.ru/cs/
[7] http://oberoncore.ru
[8] Т.Евсикова. Отдел методологии информатики, Институт математики и информатики, Вильнюс, Литва. Электронное письмо, 1999 г.
[9] С.Н. Коваль (Отдел образования Советского района, г. Новосибирск). Выступление на Совещании в Томском гос. ун-те, июль 2007.
[10] Хабаровская школа программистов, http://www.lotos-khv.narod.ru/
[11] В.В.Потопахин. Turbo Pascal. Освой на примерах. С-Петербург, BHV, 2005; Turbo Pascal. Решение сложных задач. С-Петербург, BHV, 2006.
[12] http://www.inr.ac.ru/~info21/troitsklicej/vtorojetap.htm 
[13] А.Г.Кушниренко, Г.В.Лебедев, Р.А.Скворень. Основы информатики и вычислительной техники. М., Просвещение, 1990.
[14] Римский принцип управления сложностью. 
[15] А.Г.Кушниренко, Г.В.Лебедев. 12 лекций о том, для чего нужен школьный курс информатики и как его преподавать. М.: Лаборатория базовых знаний, 2000.