Sunday, February 07, 2010

Мурзик и Картер. Чем отличается Змей-Горыныч от Дракона?

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

Это Картер. Примером может послужить Питон и книжка для детей - "Hello World! Computer programming for kids and other beginners", написанная Картером Сандэ (Warren and Carter Sande). Купил ее электронный вариант здесь. Книга хорошая, пользуется большой популярностью, и написана с хорошим запасом материала по пониманию. Имею в виду то, что чтение ее со школьником может быть закончено в любом месте, где становится трудно понимать, скажем на главе 15 Модули. Прочитав и опробовав базовые понятия программирования, можно отложить чтение про звук, графику и спрайты. Если же ваш школьник смышленый и увлеченный (а это конечно так), вы продолжаете занятия. Две этих книги не стоит противопоставлять. Лучше использовать в обучении обе, сначала Занимательную информатику.  Сам бы я выбрал Ruby, но хорошей книжки по обучению детей программированию на нем нет. 

"Занимательная информатика" - книга очень хорошая, ее нужно обязательно читать. Спасибо В.Д.Паронджанову. Примеры алгоритмов остроумны и занимательны. Описание маршрутов типа "АБ нет В нет ГД" хорошо придумано. Прекрасно описано, какими должны быть блок-схемы, чтобы они стали легко понимаемыми и надежными алгоритмами. Хочу отметить также следующее. В Занимательной информатике не даются понятия типов данных, переменных и операций присвоения, которые нужны в условных циклах, представленных автором как ДО и ПОКА (не путать ДО с do). "Несметное число" голов Змея-Горыныча есть нечто качественное, скорее говорящее о бесконечном числе циклов. Число голов не определено, и трудно сказать, сколько повторов и богатырей (для параллельного отрубания) нам может понадобиться. Есть и другие замечания. Конечно, их можно проигнорировать, вот они:
  • "Прошло 60 секунд"  (стр.8) лучше заменить на "Ждать 60 секунд". "Прошло", во-первых, смахивает на вопрос (внук так и норовит прочитать с вопросом, а ветвления нет); во-вторых, это не действие/операция.
  • "Хороший" пример на странице 14 про покупки, с "ясным" заданием, все-таки оставляет неопределенность - "возьми деньги", а сколько?
  • В описание алгоритма на стр.19 рис.16 хорошо бы добавить сведение о том, что мы имеем 2 корзины.
  • "Висячие хвосты" стр.56. В подавляющем большинстве реализаций языков программирования конструкция "if then" (без "else") работает. Поэтому школьник может удивиться, перейдя от чтения и рисования к программированию. 
  • "Утопиться от несчастной любви" стр.60. Это кажется слишком.
  • Сомнительное утверждение на стр.72 - "не поможет" на предложение Мурзика "написал - проверь". Действительность же такова, что тестирование было, есть и будет важной активностью при программировании.
  • Сравнение "меньше или равно" на стр.96 не определено. Здесь же следует ввести понятия AND и OR.
  • "Запусти ракету со скоростью < 7.8" на стр.97. Неопределенность (с которой боролись), а с каким значением скорости?
  • "Удвоение икон" на стр.168. Хорошо ли дублировать код, если и процедуры и объединения уже введены и объяснены?
  • Хотелось бы, чтобы неявное поощрение незнания математики сменилось на явное поощрение знания математики.

Что же, в младших классах нет возможности программировать? Такая возможность есть. 
Например, вы можете использовать Lego, в частности Mindstorms. Или вы можете использовать Scratch
От робото-строения и программирования Mindstorms пацанов не оторвать. Вру, многие стремятся стать болванами и телезрителями, предпочитают смотреть всякую дрянь.

Scratch тоже очень хорош и как среда обучения, и поддержкой разработчиками. Есть клуб преподавателей, а база написанных программ (для детей) включает около 700,000 проектов. Ниже, в качестве примера, программа генерации чисел Фибоначчи, "сконструированная" вместе с внуком. Я специально использовал такие имена переменных как "Fn-1", чтобы озадачить его и получить повод обсудить назначение переменных и операций.


No comments:

Post a Comment