Мнения
«Десять лет спустя», или Вместо эмоций
Константин Кноп
Очень захотелось откликнуться на полную эмоций статью Александра Иглицкого «Десять лет спустя, или Кажинный раз на эфтом самом месте», опубликованную в «Компьютерре» #25 (152). В ней – всего на двух журнальных страницах, зато с двадцатью (!) сносками – автор разносит в пух и прах и академика Ершова, и авторов рецензируемой им книги «Программирование. Вводный курс», а заодно достается и школьным учителям, повинным только в том, что они за мизерную зарплату пытаются-таки научить наших детей информатике и компьютерному делу.
Я не буду спорить с А. Иглицким, защищая А. П. Ершова – академик не нуждается в моей защите. Просто хочется напомнить, что об ушедших – либо хорошо, либо молча...
А вот о книге говорить нужно. Прежде всего потому, что надо без предубеждения разобраться, так ли она плоха – или просто пала жертвой личных вкусов и антипатий рецензента. Только сначала договоримся, что обучение (в частности, обучение программированию) должно исходить из интересов учеников, а не из амбиций взрослых. Следовательно, и критика учебных пособий должна исходить из того же. Если вы с этим не согласны -можете дальше не читать.
Итак, пройдемся повторно по «этому самому месту».
Прежде всего, в предисловии четко сказано, что книга «Программирование. Вводный курс» является только первой частью. Вторая часть этого же курса называется «Программирование. Теоремы и задачи». Она вышла одновременно с первой и распространялась вместе с нею (кстати, на прилагаемой дискете записаны тексты обеих книг). [Примечание 1. Я покупал эту книгу непосредственно в 57-й школе. Когда мне предложили к ней дискету на 5,25°, я попросил заменить ее на 3,5". Заменили немедленно.] Именно обе части вместе следует рассматривать как пособие для «учителей информатики, старшеклассников, студентов младших курсов». Первая часть, взятая отдельно, имеет значительно более узкую аудиторию – школьников математических классов первого года обучения и их учителей.
Что же предлагают авторы для начального знакомства с программированием (не с информатикой – не будем смешивать два разных понятия!)? Книжка состоит из двух разделов: «Поиграем?» и «Описания программ». Первый раздел содержит собственно учебный материал и занимает 68 страниц. Второй раздел содержит только описания прилагаемых программ и вполне умещается в 18 страниц. Именно о них пишет А. Иглицкий: «...содержание их более чем заурядно: как начинать работу, как обращаться с меню, "горячие" клавиши и т. д., и т. п.». Простите, но каким же еще должно быть описание, предназначенное для неквалифицированных пользователей-школьников?! Или учитель должен бегать от компьютера к компьютеру, показывая каждому ученику все эти горячие клавиши? А может, их надо задиктовывать на уроке?
В книжке – а значит, и в предлагаемом авторами курсе – три программы, три учебных среды: Робот, RL и SCHEME. Почему именно эти три, авторы пытаются объяснить во введении. «Мы считаем, что нельзя обучать нескольким вещам одновременно – если изучается новый язык, то первые программы не должны вызывать алгоритмических сложностей... Вот почему мы начинаем изучение программирования с языка управления Роботом... Обучение программированию математически одаренных детей, на наш взгляд, не должно сводиться к изучению лишь одной "ветви" современного программирования – процедурным языкам. В качестве иллюстрации мы приводим функциональный язык RL... Нам представляется полезным знакомить старшеклассников с основами математической логики при помощи программы моделирования схем из функциональных элементов...» Можно спорить с таким эклектичным выбором тем, составляющих курс для первого года, но нельзя сказать, что «ничего не понятно». Или эти две странички введения Александр Иглицкий просто пропустил при беглом чтении?
О главе I – «Игре в Робота»
Игра – она и есть игра. Дети любят играть и с удовольствием изучают правила каждой новой для них игры. И если игра в чем-то моделирует жизнь, то детей не будет удивлять примитивность модели – ведь все с удовольствием играют в шахматы или «морской бой».
Правила игры в Робота описаны в книжке очень кратко и вместе с тем исчерпывающе. Вот, например, как определено понятие цикла:
«Назовем командой то, что можно построить по правилам:
- [...]
- повторение команды k, пока истинно некоторое условие u – команда:
пока и выполнять
|
| k
|
конец
При этом команда k выполнится столько раз, сколько нужно для того, чтобы условие и стало ложным.
Образованная таким образом команда называется циклом, u – условием цикла, k – телом цикла;»
[Примечание 2. Для всех служебных слов в командах Робота использован другой шрифт – шрифт пишущей машинки; латинские символы u и k набраны курсивом. Авторы не виноваты в том, что это место книги в «Компьютерре» процитировано в таком жутком виде: «пока u выполнять ! ! k ! конец» – одним и тем же шрифтом, причем без сохранения исходных строк программы.]
Именно это место приводит в пример Александр Иглицкий, говоря, что это – «программирование по-русски» и дальше можно, вообще говоря, не читать. Почему же не читать? Только потому, что по-русски, а «подобно тому, как медицина пользуется латинскими терминами, программирование пользуется английскими»? Я очень бы хотел посмотреть на здоровье А. И., если бы всем нашим врачам преподавали исключительно на латыни. На программистов, которых учили исключительно на C++ (не переходя даже в объяснениях на русский), я уже насмотрелся...
Напомню, что мы договорились исходить из интересов учеников. А они, как известно, не всегда учат английский язык – сплошь и рядом (возможно, не в Москве, но в провинции – точно) изучается немецкий, французский, испанский. И даже те, которым с пятого класса вбивают в головы English, к девятому помнят только «my name is...». Я несколько раз, начиная работать с новым классом, давал им простейший диктант: записать и перевести 15-20 английских слов (from, to, while, repeat, else...). Лучшие из лучших показывали 70%-ный результат.
Я мог бы пройтись с позиции нормального школьного преподавателя по каждому высказыванию рецензента Александра Иглицкого. Честное слово, при непредвзятом подходе все его умопостроения разваливаются, как карточный домик. Позволю себе последнюю цитату из его рецензии:
«Удивителен не детсадовский уровень этой задачки, а то, что всего лишь через 18 страниц появляются слова "косвенная рекурсия". (Напоминаем название книги: "Программирование: вводный курс".) Плюнь в глаза тому, кто скажет, что можно объять необъятное...»
Наверное, это надо понимать так, что косвенная рекурсия – нечто очень трудное для детского восприятия. Но это отнюдь не так! Мне неоднократно приходилось учить пяти- и шестиклассников на Logo, и идею рекурсии (в том числе и косвенной) они понимают обычно с полуслова. С более стандартными программистскими идеями при обучении приходится возиться несравнимо больше.
Так что не надо удивляться, что через 18 страниц появляется косвенная рекурсия: ведь еще через 11 страниц глава о Роботе заканчивается. В ней 28 задач, причем к 25 приведены решения – программы и комментарии. Вот последняя задача из этой главы. Я очень хочу, чтобы читатель прорешал ее сам – на любом известном ему языке программирования.
Задача 1.28. Попробуйте получить следующие узоры как для бесконечного в одну сторону, так и для конечного коридора:
а) + – + + – + + + – + + + + ...
(одна клетка закрашена, одна пропущена, две закрашены, одна пропущена, три закрашены, одна пропущена, и т. д.);
б) + – – + + + – – – –...
(одна клетка закрашена, две пропущены, три закрашены, четыре пропущены, и т. д.);
в) + – – + + + + – – – – – – – –...
(одна клетка закрашена, две пропущены, четыре закрашены, восемь пропущены, шестнадцать закрашены, и т. д.);
[Примечание 3. В книге вместо плюсов и минусов нарисованы нормальные строчки из клеток. Для тех, кто никогда не видел школьного учебника и языка управления Роботом, сообщаю, что для данной задачи достаточно трех команд: «шаг вправо», «шаг влево», «закрасить», и трех проверок: «справа свободно», «слева свободно», «закрашено».]
О следующих главах и следующих играх
Дабы у читателя не создавалось впечатление, что я целиком защищаю авторов книжки и нападаю на Александра Иглицкого, скажу сразу: по главе II («Игра в RL») я бы никогда в жизни заниматься с девятиклассниками – даже математически одаренными – не стал. Не из-за того, что я не люблю функциональные языки программирования, а просто потому, что эта глава значительно «круче» и предыдущей, и последующих глав книги. «Круче» так, как бывает крута лестница, в которой при той же длине ступеньки высота увеличена вдвое.
Дело здесь вовсе не в том, что авторы перешли на англоязычные термины (NAME, BODY, QUOTE, EXPR) и на LISP-подобный язык, а в том, что они поскупились на объяснения и комментарии. Такой телеграфный стиль явно не годится для материала, который впервые попадает в учебное пособие для старшеклассников.
А третья глава («Игра в схемы») вновь вполне доступна и вновь похожа на игру. Она вполне отвечает цели авторов – помогает понять «работу» логических операций И, ИЛИ, НЕ. Но она отнюдь не тривиальна – не «кристально прозрачна, как продукция завода "Кристалл"» (эх, вновь я цитирую А. И.). Для сомневающихся предлагаю порешать задачу 3.24: «Описать схему с семью входами, на выходе которой единица, если более трех входов имеют единицы».
В общем, мне кажется, что в отрецензированной книге (кстати, давайте все-таки хоть раз упомянем авторов: Р.Авданин, А.Суханов, В.Хименко, Д.Школьник) далеко не все столь однозначно плохо, как в рецензии А.Иглицкого.
И наконец – о послесловии редактора «Смените руку». Я не согласен с одним из ключевых утверждений уважаемого мною Георгия Кузнецова: «Наша школа застряла в прошлом, и в компьютерной отрасли это ощутимо гораздо больше, чем в других, просто потому, что она быстрее развивается. Наши учителя, и в особенности учителя учителей, – это какой-то парк Юрского периода».
Я не спорю: динозавров в учительской среде немало. Но есть вполне разумные преподаватели, которые по мере своих сил стараются, чтобы их ученики выросли нормальными гражданами XXI века. Можно, конечно, априори утверждать, что нельзя научить школьников работать в завтрашнем дне, используя при этом устаревшую еще позавчера технику. На самом же деле компьютерная техника – не более чем средство обучения, а вовсе не объект изучения. Главная цель школьного обучения – научить думать. Что именно при этом является «учебным полигоном» -компьютер, штатив с реактивами или же классическая русская литература – не суть важно. Поэтому давайте в массовом компьютерном журнале помещать не статьи с руганью в адрес учителей-энтузиастов, а материалы, которые помогут этим учителям. Как говорит Михаил Жванецкий, «можно, конечно, этого и не делать – если вас не интересует результат».