1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /152, 1996 г./ | Бонус | Поиск  

Разборки

Десять лет спустя, или Кажинный раз на эфтом самом месте (вместо рецензии)

Александр Иглицкий


© 2004, Еженедельник «Компьютерра» | http://www.computerra.ru/offline
Этого материала на сайте "Компьютерры", к сожалению, нет

"Программирование: вводный курс. М., МЦНМО (Московский центр непрерывного математического образования), 1995. Учебное пособие рекомендовано Министерством образования Российской Федерации. ...Для учителей информатики, старшеклассников, студентов младших курсов высших учебных заведений. Пособие может быть использовано на кружковых и факультативных занятиях в общеобразовательных учреждениях, а также в школах с углубленным изучением математики и информатики..."

Вместо введения

Поскольку книга вышла в самом конце 1995 года, она, естественно, не смогла оказать заметного влияния на учебный процесс 1995/96 гг. Но сейчас, в конце старого учебного года, самое время подумать, какую новую жизнь мы начнем в учебном году следующем. Итак, что же нам предлагает коллектив именитых авторов, взявших на себя благородную миссию сеять разумное и т.д. – по крайней мере, в рамках информатики?

Вместо воспоминаний

Лет десять назад в школах тогда еще социалистического государства появился предмет "информатика". Это вызвало, без преувеличения сказать, что-то вроде маленького массового психоза. Сколько было совещаний, заседаний, конференций и симпозиумов, сколько статей написано, сколько копий сломано! Сколько тысяч компьютеров должны были обрушиться на нашу школу, как из рога изобилия! Даже появился как бы новый язык программирования, специально предназначенный для обучения наших детишек (этот язык почти официально назывался "Ершол", поскольку академик Ершов стоял у колыбели школьной информатики)1. И, очевидно, предполагалось, что столь мощная интеллектуальная и техническая поддержка гарантирует небывалые успехи новорожденного школьного предмета.

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

Во-первых, чем маститее ученый, желающий облагодетельствовать начальный уровень образования, тем сомнительнее результаты. Освоение четырех действий арифметики не требует предварительного знания дедекиндовых сечений, но высокоученый муж вполне может счесть наиболее правильным именно такой порядок. Это допустимо, например, для математического кружка (одного на всю Москву), но абсолютно неприемлемо для массового образования.

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

В-третьих, информатика, как и математика (в отличие, скажем, от литературы или истории), не поддается профанации. Конечно, ее можно излагать на уровне детского лепета, но тогда это должно называться как-то иначе.

В-четвертых, преподавание информатики в так называемом "безмашинном" варианте существовать не может, как не может существовать обучение плаванию без воды.

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

Практика – критерий истины, как нас учил при социализме марксизм-ленинизм. Посмотрим же, как мы усвоили уроки прошлого.

Вместо усвоения уроков прошлого

Предисловие поясняет: "Мы попытались... решить проблему, обобщив... опыт занятий... с учащимися математических классов московской школы №57". Иными словами, изначально был выбран именно тот подход, который является заведомо бесполезным для основной массы обучающих и обучаемых информатике2.

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

Далее по тексту предисловия: "...либо не изучали программирования... либо (что, по нашему мнению, еще хуже) изучали Бейсик3". Здесь очевидная ошибка: философские категории "лучше" и "хуже" не имеют отношения к Бейсику. Изучивши Бейсик, дурак не станет лучше, а умный – хуже. А написать несколько элементарных программок в любом случае полезно.

Вместо усвоения уроков настоящего

Заканчивается предисловие демонстрацией широкой натуры авторов. Они объявляют, что все содержимое прилагаемой к книге дискеты может свободно распространяться, но без отсебятины. A если кто будет заниматься отсебятиной, пусть заведет отдельный файл.

Налицо полная неосведомленность о реалиях, нравах и обычаях нашего программного, с позволения сказать, рынка4. Любая информация, которую можно переписать, копируется и модифицируется без всякого учета мнения первоначального источника информации. А если источник обеспокоен неприкосновенностью своего творения, то пусть обеспечит таковую не прекраснодушными призывами, а иными методами (кому надо, тот знает).

Своеобразным продолжением предисловия является последняя страница обложки со следующим текстом:

"Дистрибутивная дискета.

В этом разделе мы опишем…"

Конечно, сейчас не времена милитаризма, и каждый может издавать книги в том виде, как ему заблагорассудится, но все же подобный стиль издания несколько озадачивает. А еще больше озадачивает содержание "этого раздела". Некоторые цитаты: "Они сжаты с помощью INFO-ZIP и могут быть извлечены с помощью программ UNZIP или PKUNZIP"; "Программы, хранящиеся в директориях ROBOT, IRL и SCHEME, в целях экономии места могут быть сжаты программами LZEXE или PKLITE". Что значит "могут быть'?! Никакого "может быть" не может быть, потому что есть лаконическое выражение "as is", т.е. "как есть5". Во всяком случае, все программное обеспечение в мире поставляется в таком виде, что оно почти что само инсталлируется и само начинает работать. А если потенциальному пользователю придется, может быть, столкнуться с какими-то затруднениями, то он, может быть, поищет для себя что-нибудь другое.

Вместо общего взгляда

Прочитавши написанную курсивом страничку предисловия6, перейдем к содержанию. Что можно понять, глядя на часть I "Поиграем?" ("Игра в Робота", "Игра в RL", "Игра в схемы") и часть II "Описания программ" ("Программа РОБОТ", "Программа IRL", "Программа SCHEME")? Только то, что по названиям ничего не понятно. Приступим же к собственно чтению текста.

Вместо чтения

Первое, что бросается в глаза -"программирование по-русски", например:

пока u выполнять ! ! k !

конец

И даже латинские буквы и и k вовсе не являются уступкой заокеанскому лэнгвичу, а несут в себе скрытый намек на Условие и Команду.

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

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

программа вСевероЗападныйУгол

процедура НаСеверДоУпора ! !

пока на севере свободно выполнять

! ! ! ! шаг на север ! ! ! конец

! конец

процедура НаЗападДоУпора ! !

пока на западе свободно выполнять

! ! ! ! шаг на запад ! ! ! конец

! конец

начало ! ! НаСеверДоУпора ! !

НаЗападДоУпора !

конец

Но удивителен не детсадовский уровень этой задачки8, а то, что всего лишь через 18 страниц появляются слова "косвенная рекурсия9". (Напоминаем название книги: "Программирование: вводный курс".) Плюнь в глаза тому, кто скажет, что можно объять необъятное...

Вместо продолжения

Конечно, хотелось бы быть совершенно беспристрастным и добросовестно прочитать всю книгу от первой до последней буквы, но тогда сроки написания этой "вместо-рецензии" растянулись бы, наверно, на весь учебный год, потому что дальше в лес – больше дров. Следующая глава называется "Игра в RL", где появляются такие слова, как "терм", "унарная10 арифметика", "бинарная арифметика", а программы при этом имеют, например, такой вид:

(UNARY_ADD (X Y) (IF (CALL IS_NUMBER X)

(IF (CALL IS_NOMBER Y) (EXPR X Y) (ABORT)

) (ABORT)

) )

(IS_NUMBER(X) (IF (EQUAL X (QUOTE))

(QUOTE TRUE) (IF (EQUAL (FIRST X) (QUOTE I))

(CALL IS_NUMBER (BF X)) (QUOTE FALSE)

) )

)

Еще раз напоминаем название книги: "Программирование: вводный курс". No comment11. Напротив, глава "Игра в схемы" кристально прозрачна, как продукция завода "Кристалл". Что может быть проще, чем логические элементы И, ИЛИ, НЕ? Но возникает резонный вопрос: а зачем? При анализе сложных логических выражений12 в языках программирования или при описании аппаратных принципов13 электронно-вычислительной техники этот материал был бы очень полезен, но взятый в отдельности он вызывает только легкое недоумение.

Вместо последовательности

Игра в робота занимает 34 страницы текста, игра в RL – 20, игра в схемы – 10. Остальные три главы книги, вместе взятые, занимают 16 страниц. Содержание их более чем заурядно: как начинать работу, как обращаться с меню, "горячие" клавиши и т.д. и т.п14. Таким образом, заметна непоследовательность авторов: начавши с нарочито удаленных15 от жизни сложных построений неясного назначения, они вдруг забывают обо всем этом и переходят просто к выработке практических навыков написания программ. Может быть, именно с этого и стоило начать?

Вместо современности

По признанию самих авторов, "Игра в робота" была предложена в 1980 году, программное обеспечение, распространяемое на дискете, – в 1990-м (с последующими изменениями). Кстати, сама дискета – 5,25", что ныне не встречается16. Да и весь материал, похоже, возник не "ныне", а достаточно давно17, и почему-то только сейчас увидел свет18. Почему – знают только авторы и Всевышний.

Вместо теории

В популярной пьесе известного советского драматурга упоминает-

ся охотник, который не охотился, но разрабатывал теорию охоты. С информатикой – примерно то же самое. Она не нуждается19 в теории точно так же, как в ней не нуждается процесс забивания гвоздей. Надо знать, что вбивают гвоздь в стену, а не наоборот; и притом острием, а не шляпкой. Ну, надо знать еще чуть-чуть, и для начала достаточно. А теорию молоточно-гвоздо-стенного взаимодействия можно разработать и потом, если понадобится.

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

Далее. С неожиданно большим трудом усваивается важнейший тезис: компьютер есть исполнительное устройство. На аппаратном уровне выполняются команды, с точки зрения программиста – операторы написанной им программы, более отдаленный пользователь склонен думать, что компьютер как-то выполняет программы целиком. Но в любом случае, опять-таки раз и навсегда надо усвоить, что работа машины есть продолжение работы человека и ничто другое. Если машина делает что-то не так – ошибку ищите у себя.

Наконец, также немаловажную роль играет обыкновенная механическая память. Грубо говоря, средний зубрила может работать на компьютере; рассеянный гений – никогда.

Вместо заключения

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

 

_____________________

1 Впрочем, уже тогда проницательные люди отмечали, что "Ершол" имеет странное сходство с "Мейер-Бодуэнолом" (см. Б.Мейер, К.Бодуэн, Методы программирования, М., 1982, под редакцией и с предисловием А.П.Ершова), а последний в свою очередь поразительно напоминает "Виртол", если можно так назвать Паскаль – знаменитое творение Н.Вирта...

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

3 Но если Бейсик так уж плох, как тогда объяснить его поразительную живучесть? Сколько языков пронеслось по небосклону программирования тунгусским метеоритом и бесследно исчезло, а Бейсик упорно существует. Опять же, практика – критерий истины.

4 Вот уж воистину – не рынок, а базар, по выражению известного политика.

5 Правда, в русский перевод иногда вкладывается несколько иной смысл. Видимо, это обусловлено плохим знанием доморощенными переводчиками американского языка и смысла терминов.

6 'Умные мысли подобны строкам, напечатанным курсивом". Но, как известно, из импликации А=>В не следует В=>А.

7 Случай из жизни. В некоем научном институте некая военная комиссия принимала некое программное обеспечение. И нашелся старый дурак, который поинтересовался, кто позволил писать программы на языке потенциального противника. К счастью, подбежали более молодые друзья-однополчане и увели ветерана. А то, не дай Бог, пришлось бы все переделывать.

8 Содержание этой программы настолько примитивно, что понятно без объяснений. Однако форма ее говорит гораздо больше, чем содержание. С одной стороны, авторы ни в коем случае не хотят употреблять слов закордонного языка. Но с другой стороны, они без зазрения совести пользуются иностранной манерой "склеивать" слова, оставляя в середине большие буквы. Налицо явная нехватка то ли здравого смысла, то ли национальной самобытности. Впрочем, это неудивительно, поскольку в данном случае это две несовместные вещи.

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

10 Уже впечатляет, не правда ли?

11 По примеру и подражая авторам, которые в конце концов перешли на английский. Не выдержали!

12 Чего учащиеся, как считается, пока не знают.

13 Чего они, как считается, и не должны знать.

14 И все это поразительно похоже на борландовский Паскаль! Стоило ли огород городить...

15 Очевидно, по принципу "чем дальше, тем лучше".

16 На это указывают и некоторые другие признаки.

17 Может быть, слишком?

18 Без всякой поправки на время, стиль и эпоху.

19 По крайней мере, на начальной стадии.

20 Именно так, как сказано; иначе не получается. Увы, многократно проверено.


1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /152, 1996 г./ | Бонус | Поиск  

© 2004, Издательский дом «Компьютерра» | http://www.computerra.ru
Телефон редакции: (095) 232-22-61
E-mail редакции: inform@computerra.ru