Привет, Хабр!
Вместе с компанией Edison стартуем весенний марафон публикаций.
Я постараюсь докопаться до первоисточников IT-технологий, разобраться, как мыслили и какие концепции были в головах у первопроходцев, о чем они мечтали, каким видели мир будущего. Для чего задумывались «компьютер», «сеть», «гипертекст», «усилители интеллекта», «система коллективного решения задач», какой смысл они вкладывали в эти понятия, какими инструментами хотели добиться результата.
Надеюсь, что эти материалы послужат вдохновением для тех, кто задается вопросом, как перейти «от Нуля к Единице» (создать что-то, чего раньше и в помине не было). Хочется, чтобы IT и «программирование» перестали быть просто «кодингом ради бабла», и напомнить, что они задумывались как рычаг, чтобы изменитьметоды ведения войны образование, способ совместной деятельности, мышления и коммуникации, как попытка решить мировые проблемы и ответить на вызовы, вставшие перед человечеством. Как-то так.
Сегодня справляет свой 22 день рождения человек, который родился в 1928 году (88 астрономических лет).
Сеймур Пейперт — выдающийся математик, программист, психолог и педагог. Один из основоположников теории искусственного интеллекта, создатель языка Logo.
У меня есть правило. Если что-нибудь дает о себе знать из трех независимых авторитетных для меня источников, то на это стоит обратить пристальное внимание.
Первый раз про Сеймура Пейперта я услышал год назад в хакспейсе от shamrin, он читал его книгу на английском и меня заинтересовали его мысли про жонглирование и программирование, а так же как в мозгу детей образуются базовые логические концепты.
Чуть позже я пришел в гости к FISCHERTECHNIK, и разглядел у них на полке эту книгу, выпросил ее почитать на месяцок. Читал взахлеб и понял, что обязан себе купить такую же.
Пол года назад я присутствовал на выступлении Давида Яна, где он, отвечая на вопрос из зала, есть ли у его школы спонсоры не из Армении, упомянул Сеймура Пейперта (похоже, только Ян и я в зале знали, кто это такой).
Сегодня самое время написать об авторе, о книге и о сильных идеях. А так же объяснить, при чем тут жонглирование, ходули и слэклайн.
(а если вы программировали на LOGO, тогда вам обязательно под кат)
Как и Илон Маск, родился в Претории, в Африке.
Учился в Кембриджском университете с 1954 по 1958 год, в это время он участвовал в деятельности троцкистского кружка вокруг революционно-социалистического издания «Socialist Review».
В начале 1960-х годов доктор Пейперт пришёл в Массачусетский технологический институт (МТИ), где совместно с Марвином Мински основал лабораторию Искусственного Интеллекта и в 1970 году выпустил в соавторстве с ним свою книгу «Персептроны». В 1972 году Мински и Пейперт еще написали книгу «Искусственный интеллект».
В MIT, Пейперт создал Epistemology and Learning Research Group при MIT Architecture Machine Group, которая вскоре превратилась в легендарную MIT Media Lab. Здесь он разработал теорию обучения, названную конструкционизм, основанная на работах Жана Пиаже, с которым Пейперт работал бок о бок с 1958 по 1963. Пиаже отзывался: «Никто не понимает мои идеи настолько хорошо как Пейперт».
В 1988 году Пейперт был назван LEGO-профессором исследований по обучению, и специально для него была создана кафедра.
Его деятельность в области образования была отмечена многочисленными наградами, включая Международную награду Маркони (за выдающийся вклад в технологии связи), награду от Ассоциации издателей по математическому обеспечению, а также награду Смитсонианского Компьютерного Мира за лидерство в обучении.
Пейперт несколько раз приезжал в Россию, бывал в Москве и в Санкт-Петербурге (впервые в 2001 году или в начале 1990-х, последний раз — в мае 2005), выступал перед учителями и администраторами образовательных учреждений.
Ершов в своей статье «Программирование — вторая грамотность» ссылается на Пейперта.
Лого (LOGO) — язык программирования высокого уровня, разработанный в 1967 году Сеймуром Пейпертом и Идит Харель в образовательных целях для обучения детей дошкольного и младшего школьного возраста основным концепциям программирования (рекурсии, расширяемости и пр.). Logo также обеспечивает среду, в которой дети могут развивать свои навыки рассуждений и решений задач. По сути, язык Лого является адаптацией языка Лисп (некоторые даже называют его «Лиспом без скобок»).
По инициативе Пейперта в языке стала использоваться так называемая черепашка, обеспечивающая связь “объект — мысль” (сначала употреблялась механическая черепашка, ползающая по полу, а затем — ее условное изображение на экране). Как отмечал Пейперт, “компьютер обычно шаг за шагом ведет ребенка за собой”, а LOGO, наоборот, “убеждает ребенка в том, что он способен управлять машиной, позволяет ребенку сказать: “Здесь я хозяин”.
Написанная на Лисп среда LOGO имела свое физическое воплощение. Удачный вариант визуализации и материализации силы программирования, особенно для детей.
В 1983 году я только родился, а Пейперт учил детей повелевать киберчерепашками
1972 год
Написана в 1980 году, издана на русском в 1989 (с тех пор не переиздавалась). Читать тут, скачать тут.
Lego позаимствовало название для своего контроллера:
Статья в Wired про происхождение названия Lego Mindstorm
В книге очень естественно, из жизненных примеров происходит объяснение структурного программирования, процедур, параллельных процессов, отладки, границы поиска ошибки, модульности. Пейперт показывает, как в образовании перейти от «философии ошибки» к «философии отладки».
Хочу поделиться некоторыми отрывками из книги:
«Пользуясь в качестве моделей зубчатыми передачами, я совсем иначе постигал многие абстрактные идеи. Мне особенно запомнились два примера из школьного курса математики. Таблица умножения, которую я воображал в виде зубчатых передач, и мое первое решение уравнений с двумя неизвестными (типа Зх + 4у=10), сразу представившееся в виде дифференциальной передачи. Как только я представил модель из шестерен, связанных между собой отношением х к у, я смог подсчитать, сколько зубцов требуется каждой из шестерен, и это уравнение сделалось моим добрым другом.»
«Связь между стилем программирования и хождением на ходулях еще очевиднее в случае с Майклом. И только через это сходство Майкл ясно понял разницу в его и Пауля подходах к овладению хождением на ходулях. Другими словами, опыт программирования помог обоим мальчикам лучше понять особенности собственных действий, начать более осмысленно относиться к себе.»
«Основная идея структурного программирования как матетического принципа, как средства учения станет более понятной из следующего примера, в котором описывается процесс овладения еще одним физическим навыком — жонглированием. Этот навык был выбран не случайно. Обучение Черепашки рисованию круга было хорошим поводом для изучения математики «с помощью собственного тела». Жонглирование является не менее хорошим поводом для изучения движений собственного тела «с помощью математики». Конечно, раскрывающаяся нам при этом картина более сложна и интересна, поскольку работа идет в обоих направлениях: от метафорического представления языка тела через вычислительные средства и обратно. По мере овладения геометрией Черепашки дети все острее воспринимали смысл движений своего тела, одновременно они все лучше осваивали формальную геометрию. А теоретические идеи структурного программирования, когда они получили осмысление в связи с жонглированием, в связи с реальными движениями частей тела, получили новое конкретное воплощение, раскрылись новые возможности их использования. В обоих случаях знания, полученные мальчиками, обладают качеством, которое мы характеризуем как синтонное.»
От программирования автор очень ловко переходит к мировоззрению. Как и при написании программы, говорит Пейперт, ребенок строит свою картину мира, потом происходит ее отладка и так множество раз.
Про жонглирование для программистов рекомендовали на Хабре еще в 2011, немного оффтопа про еще одно «полезное занятие для программистов».
Наверняка у каждого, кто читает Хабр возникала или в скором времени возникнет ситуация, когда его спрашивают: «А фто такое плогламмилование?».
Книга Сеймура Пейперта — это отличный импульс, чтобы заново вспомнить (и отрефликсировать как следует) как мы изучали математику и программирование, а так же полюбоваться, насколько гармонично можно объяснять дифуры и программирование, подключая бессознательное и телесные метафоры, ну и порассуждать, как сделать мир лучше, если построить нормальную систему образования.
Сеймур Пейперт заканчивает свою книгу статьей «Математическое бессознательное»
P.S.
Задача:
Положим на стол 2 одинаковых монетки. Одну прижмем к столу, а вторую будем катить по ободу первой. Вопрос, сколько оборотов (вокруг собственного центра) сделает вторая монета, чтобы обогнуть первую монету и вернуться в исходное положение? (трение и скольжение исключаем)
0 марта. Сеймур Пейперт
1 марта. Xerox Alto
2 марта «Позвоните Джейк». История NIC и RFC
3 марта Грэйс «бабуля COBOL» Хоппер
4 марта Маргарет Гамильтон: «Пацаны, я вас на Луну отправлю»
5 марта Хеди Ламарр. И в кино обнаженной сняться и во врага торпедой пульнуть
7 марта Великолепная шестерка: девушки, которые термоядерный взрыв рассчитывали
8 марта «Видеоигры, я ваш отец!»
Вместе с компанией Edison стартуем весенний марафон публикаций.
Я постараюсь докопаться до первоисточников IT-технологий, разобраться, как мыслили и какие концепции были в головах у первопроходцев, о чем они мечтали, каким видели мир будущего. Для чего задумывались «компьютер», «сеть», «гипертекст», «усилители интеллекта», «система коллективного решения задач», какой смысл они вкладывали в эти понятия, какими инструментами хотели добиться результата.
Надеюсь, что эти материалы послужат вдохновением для тех, кто задается вопросом, как перейти «от Нуля к Единице» (создать что-то, чего раньше и в помине не было). Хочется, чтобы IT и «программирование» перестали быть просто «кодингом ради бабла», и напомнить, что они задумывались как рычаг, чтобы изменить
Сегодня справляет свой 22 день рождения человек, который родился в 1928 году (88 астрономических лет).
Сеймур Пейперт — выдающийся математик, программист, психолог и педагог. Один из основоположников теории искусственного интеллекта, создатель языка Logo.
У меня есть правило. Если что-нибудь дает о себе знать из трех независимых авторитетных для меня источников, то на это стоит обратить пристальное внимание.
Первый раз про Сеймура Пейперта я услышал год назад в хакспейсе от shamrin, он читал его книгу на английском и меня заинтересовали его мысли про жонглирование и программирование, а так же как в мозгу детей образуются базовые логические концепты.
Чуть позже я пришел в гости к FISCHERTECHNIK, и разглядел у них на полке эту книгу, выпросил ее почитать на месяцок. Читал взахлеб и понял, что обязан себе купить такую же.
Пол года назад я присутствовал на выступлении Давида Яна, где он, отвечая на вопрос из зала, есть ли у его школы спонсоры не из Армении, упомянул Сеймура Пейперта (похоже, только Ян и я в зале знали, кто это такой).
Сегодня самое время написать об авторе, о книге и о сильных идеях. А так же объяснить, при чем тут жонглирование, ходули и слэклайн.
(а если вы программировали на LOGO, тогда вам обязательно под кат)
Сеймур Пейперт
Как и Илон Маск, родился в Претории, в Африке.
Учился в Кембриджском университете с 1954 по 1958 год, в это время он участвовал в деятельности троцкистского кружка вокруг революционно-социалистического издания «Socialist Review».
В начале 1960-х годов доктор Пейперт пришёл в Массачусетский технологический институт (МТИ), где совместно с Марвином Мински основал лабораторию Искусственного Интеллекта и в 1970 году выпустил в соавторстве с ним свою книгу «Персептроны». В 1972 году Мински и Пейперт еще написали книгу «Искусственный интеллект».
В MIT, Пейперт создал Epistemology and Learning Research Group при MIT Architecture Machine Group, которая вскоре превратилась в легендарную MIT Media Lab. Здесь он разработал теорию обучения, названную конструкционизм, основанная на работах Жана Пиаже, с которым Пейперт работал бок о бок с 1958 по 1963. Пиаже отзывался: «Никто не понимает мои идеи настолько хорошо как Пейперт».
В 1988 году Пейперт был назван LEGO-профессором исследований по обучению, и специально для него была создана кафедра.
Его деятельность в области образования была отмечена многочисленными наградами, включая Международную награду Маркони (за выдающийся вклад в технологии связи), награду от Ассоциации издателей по математическому обеспечению, а также награду Смитсонианского Компьютерного Мира за лидерство в обучении.
Пейперт несколько раз приезжал в Россию, бывал в Москве и в Санкт-Петербурге (впервые в 2001 году или в начале 1990-х, последний раз — в мае 2005), выступал перед учителями и администраторами образовательных учреждений.
Ершов в своей статье «Программирование — вторая грамотность» ссылается на Пейперта.
Письмо Сеймура Пейперта Ершову
LOGO и киберчерепашка
Лого (LOGO) — язык программирования высокого уровня, разработанный в 1967 году Сеймуром Пейпертом и Идит Харель в образовательных целях для обучения детей дошкольного и младшего школьного возраста основным концепциям программирования (рекурсии, расширяемости и пр.). Logo также обеспечивает среду, в которой дети могут развивать свои навыки рассуждений и решений задач. По сути, язык Лого является адаптацией языка Лисп (некоторые даже называют его «Лиспом без скобок»).
По инициативе Пейперта в языке стала использоваться так называемая черепашка, обеспечивающая связь “объект — мысль” (сначала употреблялась механическая черепашка, ползающая по полу, а затем — ее условное изображение на экране). Как отмечал Пейперт, “компьютер обычно шаг за шагом ведет ребенка за собой”, а LOGO, наоборот, “убеждает ребенка в том, что он способен управлять машиной, позволяет ребенку сказать: “Здесь я хозяин”.
Написанная на Лисп среда LOGO имела свое физическое воплощение. Удачный вариант визуализации и материализации силы программирования, особенно для детей.
В 1983 году я только родился, а Пейперт учил детей повелевать киберчерепашками
1972 год
еще видеозаписи Пейперта
Книга
Написана в 1980 году, издана на русском в 1989 (с тех пор не переиздавалась). Читать тут, скачать тут.
Lego позаимствовало название для своего контроллера:
Статья в Wired про происхождение названия Lego Mindstorm
В книге очень естественно, из жизненных примеров происходит объяснение структурного программирования, процедур, параллельных процессов, отладки, границы поиска ошибки, модульности. Пейперт показывает, как в образовании перейти от «философии ошибки» к «философии отладки».
Хочу поделиться некоторыми отрывками из книги:
«Пользуясь в качестве моделей зубчатыми передачами, я совсем иначе постигал многие абстрактные идеи. Мне особенно запомнились два примера из школьного курса математики. Таблица умножения, которую я воображал в виде зубчатых передач, и мое первое решение уравнений с двумя неизвестными (типа Зх + 4у=10), сразу представившееся в виде дифференциальной передачи. Как только я представил модель из шестерен, связанных между собой отношением х к у, я смог подсчитать, сколько зубцов требуется каждой из шестерен, и это уравнение сделалось моим добрым другом.»
Передаточные механизмы моего детства
Мне не было и двух лет, когда у меня возник интерес к автомобилям. Названия деталей машины составляли существенную часть моего словаря тех лет. Я весьма гордился своим знанием частей трансмиссии и коробки передач, но предметом особой гордости было мое знание слова «дифференциал». Конечно, как работают передаточные механизмы, я понял значительно позднее, но, как только это произошло, игра с шестернями стала моим любимым занятием. Я был просто влюблен во вращающиеся наподобие шестерен круглые предметы, и вполне понятно, что прежде всего я собрал из «конструктора» простейшую систему зубчатой передачи.
Я научился мысленно представлять вращающиеся колесики и выстраивать причинно-следственные цепочки типа: «Это колесико вращается так, значит, то должно вращаться вот так, а то...». Мне особенно нравилось в таких системах, как дифференциальная передача, что в них не соблюдается линейная зависимость, поскольку движение с вала к колесной паре может передаваться различными способами — в зависимости от преодолеваемого этой парой сопротивления. Я совершенно ясно помню свое волнение, когда обнаружил, что, не будучи строго детерминированной, система может подчиняться определенным законам и быть абсолютно понятной.
Думаю, что увлечение дифференциальными передачами сильнее сказалось на моем математическом развитии, чем то, чему меня обучали в начальной школе. Пользуясь в качестве моделей зубчатыми передачами, я совсем иначе постигал многие абстрактные идеи. Мне особенно запомнились два примера из школьного курса математики. Таблица умножения, которую я воображал в виде зубчатых передач, и мое первое решение уравнений с двумя неизвестными (типа Зх + 4у=10), сразу представившееся в виде дифференциальной передачи. Как только я представил модель из шестерен, связанных между собой отношением х к у, я смог подсчитать, сколько зубцов требуется каждой из шестерен, и это уравнение сделалось моим добрым другом.
Много лет спустя, когда я читал работы Пиаже, этот случай послужил мне моделью его понятия ассимиляции, и я сразу же обратил внимание на то, что рассуждения ведутся Пиаже не в полном соответствии с собственной идеей. Почти всегда он ведет речь о когнитивных аспектах ассимиляции, хотя существует и аффективная сфера! Безусловно, ассимиляция уравнений при помощи зубчатых передач — плодотворный способ перенесения усвоенных знаний на новый объект. Но такая ассимиляция содержит нечто большее. Уверен, что она помогла мне овладевать математикой при позитивном аффективном тоне, прослеживающемся вплоть до моих детских увлечений автомашинами. Думаю, что Пиаже с этим согласился бы. Когда я познакомился с ним лично, я понял, что его невнимание к аффективной сфере скорее проистекает от сдержанности, определяемой недостаточностью наших знаний об этой сфере, чем от горделивого безразличия. Но позвольте вернуться к моему детству.
Однажды я с удивлением открыл, что некоторые (и даже многие) взрослые не разбираются в зубчатых передачах или просто безразличны к их магии. Я и сам уже не слишком много размышляю об этих механизмах, но вопрос, с которого началось мое открытие, не переставал занимать меня: каким образом столь простое для меня могло оказаться непонятным для других? Гордившийся мною отец предложил в качестве объяснения «наличие ума». Но я мучительно осознавал, что люди, не разбиравшиеся в дифференциальных передачах, легко справлялись с вещами, которые я считал гораздо более трудными. Постепенно я сформулировал то, что до сих пор считаю фундаментальным фактом учения: любая вещь дается легко, если вам удается ассимилировать ее в совокупности собственных моделей. Когда же этого не получается, то что угодно может оказаться мучительно трудным. Именно с этого я в своих размышлениях пошел по пути, созвучному рассуждениям Пиаже. Понимание учения должно быть генетичным, т. е. оно должно опираться на генезис знания. Чему может научиться индивид и как он будет учиться, зависит от того, какими моделями он овладел. Это, в свою очередь, порождает вопрос, как индивид научился своим моделям. Следовательно, в «законах учения» должно раскрываться, как интеллектуальные структуры вырастают одна из другой, как в ходе этого процесса они приобретают не только логическую, но и эмоциональную форму.
Эта книга представляет собой попытку сместить делаемый Пиаже в прикладной генетической эпистемологии акцент на когнитивной сфере, с тем чтобы включить в рассмотрение сферу аффективную. В книге развивается новое направление в педагогических исследованиях, когда внимание сосредоточивается на создании условий, при которых могут возникать интеллектуальные модели. Именно этим я и занимался последние 20 лет, часто вспоминая некоторые из особенностей моего знакомства с дифференциальными передачами. Во-первых, я помнил о том, что никто не говорил мне, чтобы я изучил эти передачи. Во-вторых, я помнил о том, что мой контакт с передаточными механизмами был наполнен чувством, любовью, а не только пониманием. В-третьих, я помнил о том, что впервые столкнулся с этими механизмами на втором году жизни. Если бы тогда какой-нибудь «ученый» педагогический психолог попытался измерить результаты этого столкновения, он скорее всего потерпел бы неудачу. Мое столкновение с дифференциальными механизмами имело глубокие последствия, однако проявились они, как мне кажется, лишь много лет спустя. Тестирование в двухлетнем возрасте «до» и «после» столкновения с этими механизмами ничего бы не дало.
Работы Пиаже задали ту систему понятий, которая позволила мне по-новому взглянуть на передаточные механизмы моего детства. Эти механизмы можно использовать в качестве иллюстрации многих плодотворных «современных» математических идей, таких, как теория групп или теория относительного движения. Но возможности их применения гораздо шире. Ведь с их помощью в сенсомоторных схемах ребенка устанавливается связь не только с формальными знаниями, но и со знанием физического мира. Вы можете, вообразив себя передаточным механизмом, понять, как он вращается, вращаясь вместе с ним. Именно такая двойная связь — абстрактная и чувственная — позволяет через передаточные механизмы приобщать сознание к плодотворной математике. Согласно развиваемой в последующих главах этой книги терминологии, данные механизмы работают в таком случае как переходный объект.
Если бы Монтессори дожила до наших дней, то она, увлекшись моей историей, возможно, предложила бы разработать для детей набор передаточных механизмов, чтобы каждый ребенок смог приобрести тот же опыт, который получил я. Однако надеяться на это означало бы не понять самой сути моей истории. Ведь я полюбил передаточные механизмы! А это нечто такое, что невозможно описать в чисто когнитивных терминах. Со мной произошло что-то очень личное, и нельзя утверждать, что у других детей повторится то же самое.
Итак, мою мысль можно обобщить следующим образом: что не под силу передаточным механизмам, с тем может справиться компьютер. Компьютер — это технический Протей. Его сущность — в его универсальности, в его способности к имитации. Поскольку он может принимать тысячи ликов и выполнять тысячи функций, он может удовлетворить тысячи вкусов. Данная книга — результат осуществленных мною в последние 10 лет попыток превратить компьютер в инструмент настолько гибкий, чтобы многие дети сумели создать для себя нечто похожее на передаточные механизмы моего детства.
Я научился мысленно представлять вращающиеся колесики и выстраивать причинно-следственные цепочки типа: «Это колесико вращается так, значит, то должно вращаться вот так, а то...». Мне особенно нравилось в таких системах, как дифференциальная передача, что в них не соблюдается линейная зависимость, поскольку движение с вала к колесной паре может передаваться различными способами — в зависимости от преодолеваемого этой парой сопротивления. Я совершенно ясно помню свое волнение, когда обнаружил, что, не будучи строго детерминированной, система может подчиняться определенным законам и быть абсолютно понятной.
Думаю, что увлечение дифференциальными передачами сильнее сказалось на моем математическом развитии, чем то, чему меня обучали в начальной школе. Пользуясь в качестве моделей зубчатыми передачами, я совсем иначе постигал многие абстрактные идеи. Мне особенно запомнились два примера из школьного курса математики. Таблица умножения, которую я воображал в виде зубчатых передач, и мое первое решение уравнений с двумя неизвестными (типа Зх + 4у=10), сразу представившееся в виде дифференциальной передачи. Как только я представил модель из шестерен, связанных между собой отношением х к у, я смог подсчитать, сколько зубцов требуется каждой из шестерен, и это уравнение сделалось моим добрым другом.
Много лет спустя, когда я читал работы Пиаже, этот случай послужил мне моделью его понятия ассимиляции, и я сразу же обратил внимание на то, что рассуждения ведутся Пиаже не в полном соответствии с собственной идеей. Почти всегда он ведет речь о когнитивных аспектах ассимиляции, хотя существует и аффективная сфера! Безусловно, ассимиляция уравнений при помощи зубчатых передач — плодотворный способ перенесения усвоенных знаний на новый объект. Но такая ассимиляция содержит нечто большее. Уверен, что она помогла мне овладевать математикой при позитивном аффективном тоне, прослеживающемся вплоть до моих детских увлечений автомашинами. Думаю, что Пиаже с этим согласился бы. Когда я познакомился с ним лично, я понял, что его невнимание к аффективной сфере скорее проистекает от сдержанности, определяемой недостаточностью наших знаний об этой сфере, чем от горделивого безразличия. Но позвольте вернуться к моему детству.
Однажды я с удивлением открыл, что некоторые (и даже многие) взрослые не разбираются в зубчатых передачах или просто безразличны к их магии. Я и сам уже не слишком много размышляю об этих механизмах, но вопрос, с которого началось мое открытие, не переставал занимать меня: каким образом столь простое для меня могло оказаться непонятным для других? Гордившийся мною отец предложил в качестве объяснения «наличие ума». Но я мучительно осознавал, что люди, не разбиравшиеся в дифференциальных передачах, легко справлялись с вещами, которые я считал гораздо более трудными. Постепенно я сформулировал то, что до сих пор считаю фундаментальным фактом учения: любая вещь дается легко, если вам удается ассимилировать ее в совокупности собственных моделей. Когда же этого не получается, то что угодно может оказаться мучительно трудным. Именно с этого я в своих размышлениях пошел по пути, созвучному рассуждениям Пиаже. Понимание учения должно быть генетичным, т. е. оно должно опираться на генезис знания. Чему может научиться индивид и как он будет учиться, зависит от того, какими моделями он овладел. Это, в свою очередь, порождает вопрос, как индивид научился своим моделям. Следовательно, в «законах учения» должно раскрываться, как интеллектуальные структуры вырастают одна из другой, как в ходе этого процесса они приобретают не только логическую, но и эмоциональную форму.
Эта книга представляет собой попытку сместить делаемый Пиаже в прикладной генетической эпистемологии акцент на когнитивной сфере, с тем чтобы включить в рассмотрение сферу аффективную. В книге развивается новое направление в педагогических исследованиях, когда внимание сосредоточивается на создании условий, при которых могут возникать интеллектуальные модели. Именно этим я и занимался последние 20 лет, часто вспоминая некоторые из особенностей моего знакомства с дифференциальными передачами. Во-первых, я помнил о том, что никто не говорил мне, чтобы я изучил эти передачи. Во-вторых, я помнил о том, что мой контакт с передаточными механизмами был наполнен чувством, любовью, а не только пониманием. В-третьих, я помнил о том, что впервые столкнулся с этими механизмами на втором году жизни. Если бы тогда какой-нибудь «ученый» педагогический психолог попытался измерить результаты этого столкновения, он скорее всего потерпел бы неудачу. Мое столкновение с дифференциальными механизмами имело глубокие последствия, однако проявились они, как мне кажется, лишь много лет спустя. Тестирование в двухлетнем возрасте «до» и «после» столкновения с этими механизмами ничего бы не дало.
Работы Пиаже задали ту систему понятий, которая позволила мне по-новому взглянуть на передаточные механизмы моего детства. Эти механизмы можно использовать в качестве иллюстрации многих плодотворных «современных» математических идей, таких, как теория групп или теория относительного движения. Но возможности их применения гораздо шире. Ведь с их помощью в сенсомоторных схемах ребенка устанавливается связь не только с формальными знаниями, но и со знанием физического мира. Вы можете, вообразив себя передаточным механизмом, понять, как он вращается, вращаясь вместе с ним. Именно такая двойная связь — абстрактная и чувственная — позволяет через передаточные механизмы приобщать сознание к плодотворной математике. Согласно развиваемой в последующих главах этой книги терминологии, данные механизмы работают в таком случае как переходный объект.
Если бы Монтессори дожила до наших дней, то она, увлекшись моей историей, возможно, предложила бы разработать для детей набор передаточных механизмов, чтобы каждый ребенок смог приобрести тот же опыт, который получил я. Однако надеяться на это означало бы не понять самой сути моей истории. Ведь я полюбил передаточные механизмы! А это нечто такое, что невозможно описать в чисто когнитивных терминах. Со мной произошло что-то очень личное, и нельзя утверждать, что у других детей повторится то же самое.
Итак, мою мысль можно обобщить следующим образом: что не под силу передаточным механизмам, с тем может справиться компьютер. Компьютер — это технический Протей. Его сущность — в его универсальности, в его способности к имитации. Поскольку он может принимать тысячи ликов и выполнять тысячи функций, он может удовлетворить тысячи вкусов. Данная книга — результат осуществленных мною в последние 10 лет попыток превратить компьютер в инструмент настолько гибкий, чтобы многие дети сумели создать для себя нечто похожее на передаточные механизмы моего детства.
«Связь между стилем программирования и хождением на ходулях еще очевиднее в случае с Майклом. И только через это сходство Майкл ясно понял разницу в его и Пауля подходах к овладению хождением на ходулях. Другими словами, опыт программирования помог обоим мальчикам лучше понять особенности собственных действий, начать более осмысленно относиться к себе.»
Ходули
Эти два стиля планирования и разработки программ распространены повсеместно. Их можно проследить при овладении как «физическими», так и «интеллектуальными» навыками. Рассмотрим, например, случай с двумя пятиклассниками, изучавшими программирование и овладевавшими физическими навыками в нашей лаборатории учения детей.
Майкл — сильный, атлетически сложенный, «задиристый подросток» (так он сам себя характеризует). Пауль более скрытный, старательный, слегка сутулящийся мальчик Майкл плохо успевал в школе, Пауль хорошо, поэтому никто не удивился, когда Пауль стал быстро осваиваться в программировании, легко овладевая столь сложным методом, каким является структурное программирование. После нескольких недель работы Майкл все еще писал программы лишь в стиле «прямой линии». Без сомнения, этот мальчик овладел всеми необходимыми понятиями, чтобы писать более совершенные программы, но ему мешала классическая и ярко выраженная резистентность к использованию процедур.
В это время оба мальчика начали учиться ходить на ходулях. Майкл избрал в качестве стратегии следующую последовательность действий: «Нога опирается на первую ходулю, тело приподнимается, вторая нога опирается на вторую ходулю, первая нога на ходуле продвигается вперед...» Когда попытка проделать эти действия обернулась падением, он бодро стал повторять свои действия снова и снова, уверенный в своем успехе, которого он действительно добился. Но сюрпризом для обоих мальчиков было то, что Пауль первым овладел ходьбой на ходулях.
Стратегия Пауля была иной. Он начал так же, как и Майкл, но когда мальчик увидел, что у него ничего не получается, то постарался выделить и поправить те из своих действий, которые обусловили его неудачу, ошибку. Когда вы делаете шаг вперед, то ходуля остается сзади вас. В этом-то и состоит ошибка, но, как только она выявлена, не составляет труда исправить ее. Одним из приемов является придумывание такого шага, когда ходуля оказывается впереди ступни, для этого ходулю следует приподнять вместе с ногой. Последнее достигается приподнятием ходули рукой, находящейся с другой стороны от ноги, делающей шаг. Сходство со стилем программирования Пауля заставляло предположить, что мальчик «перенес» приемы, освоенные в первом виде деятельности, на овладение данным физическим навыком.
Действительно, весьма вероятно, что обе ситуации связаны с уже сложившимися особенностями общего когнитивного стиля Пауля. Опыт работы с языком ЛОГО лишь позволил ему лучше осознать эти особенности. Связь между стилем программирования и хождением на ходулях еще очевиднее в случае с Майклом. И только через это сходство Майкл ясно понял разницу в его и Пауля подходах к овладению хождением на ходулях. Другими словами, опыт программирования помог обоим мальчикам лучше понять особенности собственных действий, начать более осмысленно относиться к себе.
Майкл — сильный, атлетически сложенный, «задиристый подросток» (так он сам себя характеризует). Пауль более скрытный, старательный, слегка сутулящийся мальчик Майкл плохо успевал в школе, Пауль хорошо, поэтому никто не удивился, когда Пауль стал быстро осваиваться в программировании, легко овладевая столь сложным методом, каким является структурное программирование. После нескольких недель работы Майкл все еще писал программы лишь в стиле «прямой линии». Без сомнения, этот мальчик овладел всеми необходимыми понятиями, чтобы писать более совершенные программы, но ему мешала классическая и ярко выраженная резистентность к использованию процедур.
В это время оба мальчика начали учиться ходить на ходулях. Майкл избрал в качестве стратегии следующую последовательность действий: «Нога опирается на первую ходулю, тело приподнимается, вторая нога опирается на вторую ходулю, первая нога на ходуле продвигается вперед...» Когда попытка проделать эти действия обернулась падением, он бодро стал повторять свои действия снова и снова, уверенный в своем успехе, которого он действительно добился. Но сюрпризом для обоих мальчиков было то, что Пауль первым овладел ходьбой на ходулях.
Стратегия Пауля была иной. Он начал так же, как и Майкл, но когда мальчик увидел, что у него ничего не получается, то постарался выделить и поправить те из своих действий, которые обусловили его неудачу, ошибку. Когда вы делаете шаг вперед, то ходуля остается сзади вас. В этом-то и состоит ошибка, но, как только она выявлена, не составляет труда исправить ее. Одним из приемов является придумывание такого шага, когда ходуля оказывается впереди ступни, для этого ходулю следует приподнять вместе с ногой. Последнее достигается приподнятием ходули рукой, находящейся с другой стороны от ноги, делающей шаг. Сходство со стилем программирования Пауля заставляло предположить, что мальчик «перенес» приемы, освоенные в первом виде деятельности, на овладение данным физическим навыком.
Действительно, весьма вероятно, что обе ситуации связаны с уже сложившимися особенностями общего когнитивного стиля Пауля. Опыт работы с языком ЛОГО лишь позволил ему лучше осознать эти особенности. Связь между стилем программирования и хождением на ходулях еще очевиднее в случае с Майклом. И только через это сходство Майкл ясно понял разницу в его и Пауля подходах к овладению хождением на ходулях. Другими словами, опыт программирования помог обоим мальчикам лучше понять особенности собственных действий, начать более осмысленно относиться к себе.
«Основная идея структурного программирования как матетического принципа, как средства учения станет более понятной из следующего примера, в котором описывается процесс овладения еще одним физическим навыком — жонглированием. Этот навык был выбран не случайно. Обучение Черепашки рисованию круга было хорошим поводом для изучения математики «с помощью собственного тела». Жонглирование является не менее хорошим поводом для изучения движений собственного тела «с помощью математики». Конечно, раскрывающаяся нам при этом картина более сложна и интересна, поскольку работа идет в обоих направлениях: от метафорического представления языка тела через вычислительные средства и обратно. По мере овладения геометрией Черепашки дети все острее воспринимали смысл движений своего тела, одновременно они все лучше осваивали формальную геометрию. А теоретические идеи структурного программирования, когда они получили осмысление в связи с жонглированием, в связи с реальными движениями частей тела, получили новое конкретное воплощение, раскрылись новые возможности их использования. В обоих случаях знания, полученные мальчиками, обладают качеством, которое мы характеризуем как синтонное.»
Жонглирование
Имеется много различных типов жонглирования. Большинство людей связывают с жонглированием циркуляцию с помощью рук летящих предметов. При циркуляции мячики движутся по «кругу» один за другим, вылетая вверх из правой руки, они подхватываются левой, затем внизу перебрасываются в правую и наоборот. Имеется два типа бросков: короткий, низкий полет мячиков из одной руки в другую в нижней части круга; затяжной, высокий полет мячиков в верхней части круга.
Тип жонглирования, называемый каскадным, имеет более простую структуру. Мячики движутся в обоих направлениях по верхней дуге, движение по нижней части круга отсутствует. Здесь присутствует только один тип броска — затяжной и высокий (см. рис. 13). Простота этого движения позволяет лучше разобраться с жонглированием, а заодно и лучше понять наши рассуждения. Направляющим наши рассуждения вопросом является следующий: может ли кому-то, кто хочет научиться каскадному жонглированию, помочь или, напротив, помешать вербальное, аналитическое описание того, как нужно это делать? Ответ: смотря по обстоятельствам. Обстоятельства эти определяются тем, на каком материале учащийся осуществляет аналитическое описание. Мы воспользуемся каскадным жонглированием, чтобы показать, как хорошие компьютерные модели могут помочь построить такие «процедуры» для людей, которые улучшают владение навыками, и как осмысление таких «процедур» может помочь нам научиться программированию и изучить математику. Но, разумеется, определенные вербальные описания могут скорее привести в замешательство, чем помочь. Рассмотрим для примера следующее описание:
1. Начало. Мячи 1 и 2 находятся в левой руке, мяч 3 — в правой.
2. Перебрасываем мяч 1 по крутой параболе в правую руку.
3. Когда мяч 1 достигает вершины параболы, бросаем мяч 3 из левой руки по такой же крутой параболе, но так, чтобы траектория мяча 3 проходила под траекторией мяча 1.
4. Когда мяч 1 достигает правой руки, а мяч 3 находится в вершине параболы, перебрасываем мяч 2 по траектории, проходящей ниже траектории мяча 3. И т.д.
Это описание, по существу, является примитивной физической программой линейного стиля программирования. Она малопригодна для овладения навыком. Люди, чуждые компьютерной культуре, могут заявить, что это описание весьма напоминает программу для компьютера, поскольку здесь «одна, и только одна, инструкция следует за другой». Это описание напоминает некоторые программы, скажем первую программу Кейта ЧЕЛОВЕЧЕК (см. рис. 12б). Но мы уже убедились, что простая цепочка инструкций без внутренней добротной структуры не является хорошей моделью для компьютерного программирования. Мы также еще убедимся, что методики структурного программирования — это как раз то, что нам требуется для написания программ и для матетических описаний жонглирования.
Наша цель — разработать процедуру для людей ЖОНГЛИРОВАНИЕ. В качестве первого шага выявим и обозначим процедуры по аналогии с процедурами, которые использовал Кейт при рисовании человечка (РИСУЕМ КЛИН, РИСУЕМ ГОЛОВУ, РИСУЕМ ЛИНИЮ). В случае жонглирования сами собой напрашивающиеся процедуры — БРОСОК ЛЕВОЙ и БРОСОК ПРАВОЙ. Точно так же, как команда КЛИН функционально была обусловлена тем фактом, что от компьютера требовалось изобразить на экране некоторую фигуру V-образной формы, команда БРОСОК ПРАВОЙ заставляет начинающего жонглера перебросить в левую руку то, что он держит в правой.
Но между программированием процедуры РИСУЕМ ЧЕЛОВЕЧКА и программированием процедуры ЖОНГЛИРОВАНИЕ имеется одно важное различие. Программист первой процедуры может не заботиться о том, сколько времени потребует ее осуществление, программист второй процедуры должен позаботиться о факторе времени. Жонглер должен осуществить действия БРОСОК ПРАВОЙ и БРОСОК ЛЕВОЙ в соответствующие моменты цикла жонглирования, и эти два действия лишь частично совпадают во времени. Поскольку имеется в виду перебрасывание мяча, то эти действия включают также и стадию ловли мяча: процедура БРОСОК ПРАВОЙ включает также ловлю мяча, когда тот приближается к левой руке. Точно так же БРОСОК ЛЕВОЙ означает команду перебросить мяч из левой руки в правую, схватив его, как только он приблизится003.
Поскольку большинство людей в состоянии выполнить эти действия, будем считать БРОСОК ЛЕВОЙ и БРОСОК ПРАВОЙ исходными и сосредоточимся на том, как у этих процедур создать новую процедуру, которую мы обозначили как ЖОНГЛИРОВАНИЕ. Взятые вместе, они в одном существенном отношении отличаются от комбинации процедур КЛИН и ГОЛОВА, из которых складывается процедура РИСУЕМ ЧЕЛОВЕЧКА. БРОСОК ЛЕВОЙ должен происходить, прежде чем закончится действие, вызванное командой БРОСОК ПРАВОЙ. В языке науки о компьютерах это выражается так: мы имеем дело с параллельными процессами, в отличие от строго последовательных процессов, используемых при рисовании человечка.
Чтобы описать эту комбинацию процедур, мы введем новый элемент программирования: понятие «ДЕМОНЫ КОГДА». Оно поясняется инструкцией: КОГДА ГОЛОД ЕСТЬ. В одном из вариантов языка ЛОГО это означало бы: всегда, когда складываются условия, обозначаемые как ГОЛОД, выполняется действие, обозначаемое ЕСТЬ. Метафора «демон» отражает ту идею, что команда подается автономным устройством, находящимся внутри компьютерной системы. Это устройство бездействует до тех пор, пока не происходит определенное событие, и тогда, подобно демону, оно бросается выполнять свою функцию. В акте жонглирования используются два таких ДЕМОНА КОГДА:
За их определения можно принять что-нибудь вроде этого:
КОГДА что-нибудь БРОСОК ЛЕВОЙ,
КОГДА что-нибудь БРОСОК ПРАВОЙ.
Чтобы уточнить эти «что-нибудь», мы опишем два условия, или распознаваемые состояния системы, которые запускают действие бросания.
В ключевой момент перебрасывания мячи располагаются приблизительно так, как это изображено на рис. 14. Но на нем состояние системы передано неполно, поскольку не показано, в каком направлении мячи падают или взлетают. Чтобы восполнить этот пробел, на рис. 15 добавлены стрелки, указывающие направление, а на средней и нижней частях этого рисунка приведены два описания состояния системы.
Если мы вполне резонно предположим, что жонглер умеет распознавать эти две ситуации, то следующая формализация должна восприниматься как сама собой разумеющаяся.
ВЫПОЛНЯЕМ ЖОНГЛИРОВАНИЕ КОГДА ВЕРШИНА ПРАВОЙ БРОСОК ПРАВОЙ КОГДА ВЕРШИНА ЛЕВОЙ БРОСОК ЛЕВОЙ или еще проще:
ВЫПОЛНЯЕМ ЖОНГЛИРОВАНИЕ КОГДА ВЕРШИНА X БРОСОК X
Последнее означает, что, когда возникает состояние ВЕРШИНА ПРАВОЙ, правая рука начинает бросок, а когда возникает ВЕРШИНА ЛЕВОЙ, левая рука начинает бросок. Немного поразмыслив, мы убедимся, что это и есть полное описание- процесс жонглирования самовоспроизводится, поскольку каждый бросок приводит систему в состояние, которое запускает следующий бросок
Как эту модель жонглирования превратить в такую процедуру для людей, которую можно было бы использовать в качестве стратегии обучения? Сначала отметим, что модель жонглирования предполагает некоторые допущения:
1) обучаемый умеет выполнить БРОСОК ПРАВОЙ и БРОСОК ЛЕВОЙ,
2) обучаемый умеет распознать состояние, запускающее ВЕРШИНА ЛЕВОЙ и ВЕРШИНА ПРАВОЙ,
3) обучаемый может объединить эти умения в соответствии с определением процедуры ВЫПОЛНЯЕМ ЖОНГЛИРОВАНИЕ
Теперь мы переведем наши допущения и процедуру для людей в стратегию обучения.
ШАГ 1. Проверяем, умеет ли обучаемый бросать. Даем ему один мяч и просим перебросить из одной руки в другую. Обычно это действие выполняется легко, но мы позднее убедимся, что часто требуется некоторое совершенствование этого движения. Стихийно выполняемая процедура содержит ошибку.
ШАГ 2. Проверяем, что учащийся умеет совмещать броски. Даем два мяча и следующие инструкции:
ПЕРЕБРАСЫВАЕМ
БРОСОК ЛЕВОЙ
КОГДА ВЕРШИНА ПРАВОЙ БРОСОК ПРАВОЙ
КОНЕЦ
Это направленный обмен мячами между левой и правой руками. Хотя кажется, что здесь мы осуществляем простую комбинацию БРОСОК ЛЕВОЙ и БРОСОК ПРАВОЙ, обычно сразу это действие не получается.
ШАГ 3. Ищем ошибку в процедурах броска Почему не срабатывает процедура ПЕРЕБРАСЫВАЕМ? Обычно обнаруживается, что учащийся бросает мяч не так хорошо, как это казалось на шаге 1. Самым распространенным отклонением (или ошибкой) от требуемого процедурой броска является прослеживание глазами за мячом. Поскольку у человека только одна пара глаз, их сосредоточенность на первом броске делает почти невозможным второй бросок, и обычно он заканчивается падением обоих мячей на пол.
ШАГ 4. Отладка. Допустим, что ошибка заключалась в прослеживании глазами за полетом первого мяча, мы отладим этот промах учащихся, вернувшись к бросанию одного мяча без прослеживания его глазами. Большинство учащихся (к своему изумлению) очень быстро овладевают броском, когда глаза фиксируются на верхней точке предполагаемой параболы полета мяча. Когда бросание одного мяча отлажено, учащийся вновь пытается объединить два броска. Большинству это часто удается, хотя могут выявиться какие-то иные ошибки, от которых придется избавляться.
ШАГ 5. Вводим третий мяч. Как только учащийся смог легко выполнить процедуру, обозначенную нами как ПЕРЕБРАСЫВАЕМ, мы начинаем работать с тремя мячами. Чтобы это получилось, вначале берем в одну руку два мяча, а в другую — один (см. рис. 16).
Мяч 2 бросается так же, как при выполнении процедуры ПЕРЕБРАСЫВАЕМ, мяч 1 остается в руке. БРОСОК ПРАВОЙ из процедуры ПЕРЕБРАСЫВАЕМ приводит все три мяча в состояние готовности к процедуре ВЫПОЛНЯЕМ ЖОНГЛИРОВАНИЕ. Переход от процедуры ПЕРЕБРАСЫВАЕМ к процедуре ВЫПОЛНЯЕМ ЖОНГЛИРОВАНИЕ представляет для некоторых учащихся определенную трудность, но она легко преодолима. Большинство людей при этой стратегии овладевают жонглированием менее чем за полчаса.
Варианты этой стратегии обучения использовались многими преподавателями в среде обучения ЛОГО и были детально изучены одним из них, а именно Ховардом Аустином, проанализировавшим жонглирование в своей магистерской работе. Несомненно, эта стратегия весьма эффективна и вполне обоснована: использование понятий программирования в качестве дескриптивного языка, облегчающего отладку.
В нашем рассмотрении рисования человечка и овладения жонглированием центральное место занимал вопрос, как облегчить отладку благодаря применению соответствующего описания сложного процесса. В обоих случаях в описании процесс был представлен в виде модулей, т. е. он подразделялся на естественные функциональные единицы, а выявление ошибки происходило благодаря сужению границ ее поиска. Наихудшими для отладки являются условия, допускающие одновременное совершение нескольких ошибок. Процесс отладки особенно эффективен в тех случаях, когда модули достаточно малы и становится маловероятным, что они содержат более одной ошибки.
Трудности, которые вызывают множественные ошибки, хорошо поясняет ситуация, когда начинающие овладевать жонглированием следуют примитивно физическому подходу. Фактически (как, например, Майкл, в конце концов овладевший ходьбой на ходулях) они часто добиваются успеха, но, как правило, после многочасовых неудачных попыток подкидывать в воздух сразу три мяча, предварительно не научившись перебрасывать два мяча. Овладение навыком таким способом занимает значительно больше времени. Когда Ховард Аустин внимательно пронаблюдал за действиями таких начинающих, он заметил, что они совершают те самые ошибки, которые были отмечены в нашей стратегии рационального подхода, например прослеживают глазами полет мяча. Конечно, благодаря значительному числу повторений (так называемое овладение навыком методом проб и ошибок) вырабатывается нужная форма поведения. В силу чистой случайности бросок оказался слабо проконтролирован глазами. Подобно другим животным человеческая особь запоминает механизмы, способствующие наступлению каких-либо событий и увеличивающие вероятность того, что они произойдут. Постепенно ошибки сглаживаются, и субъект овладевает жонглированием. Люди обладают способностью учиться, подобно крысам в лабиринте. Но процесс этот медлен и примитивен. Мы можем учиться быстрее благодаря сознательному контролю за процессом учения, благодаря четкому различению и анализу особенностей поведения.
Тот факт, что компьютерные процедуры облегчают учение, вовсе не означает, что от всякого повторения можно отказаться или что время, необходимое для овладения жонглированием, можно свести к нулю. Время потребуется на то, чтобы выявить и исправить ошибки, и на то, чтобы овладеть необходимыми компонентами навыка. Что мы можем свести на нет, так это малопродуманные и неэффективные методы. Когда учащийся следует плохой стратегии учения, то овладевает на удовлетворительном уровне жонглированием тремя мячиками после многочасовой работы. Выбрав хорошую стратегию, он овладевает этим навыком гораздо быстрее, обычно за 20—30 минут.
У детей часто развивается резистентность (неприятие) к процессу отладки, аналогичная уже разбиравшейся нами резистентности к процедурам. Ребенок задумал научить Черепашку рисовать определенную фигуру, скажем домик или человечка. Программа быстро пишется и проверяется. Она не работает. Вместо отладки она стирается из памяти. Иногда отбрасывается и все задуманное. Иногда же дети долго не прекращают своих попыток, проявляя удивительную настойчивость, но всегда начинают с нуля, пытаясь сделать все «правильно» одним махом. Ребенок может преуспеть или не преуспеть в умении научить компьютер рисованию. Но это еще не значит, что он добился или не добился успехов в стратегии отладки.
Нетрудно проявить сочувствие, хотя школьная этика прекрасно обходится без этого. Там, где мы видим программу с незначительной ошибкой, ребенок видит «неверное», «плохое», «ошибочное» исполнение. Школьные учителя считают, что ошибки — это плохо; на крайний случай они предлагают поразмыслить над ними, сосредоточиться и подумать. Ребенок же рад воспользоваться способностью компьютера стирать следы его деятельности с тем, чтобы никто не смог их увидеть. Философия отладки предлагает противоположную установку. Ошибки приносят нам пользу, поскольку они заставляют нас разобраться в том, что произошло, понять, где мы пошли по ложному пути, и через такое понимание исправить их. Опыт программирования на компьютере эффективнее любой другой деятельности заставляет их «уверовать» в отладку.
Соприкосновение со средой обучения ЛОГО постепенно подточило устойчивое неприятие процессов отладки и разбиения на отдельные процедуры. Некоторые люди, наблюдавшие, как дети начинали все терпимее относиться к своим ошибкам, приписывали эту тенденцию поведению преподавателей в среде обучения ЛОГО, которые не проявляли интереса и никак не критиковали программы, считавшиеся детьми ошибочными. Я думаю, в этом случае срабатывали более фундаментальные вещи. В среде обучения ЛОГО дети учились тому, что учитель тоже учится и что все они учатся на ошибках.
Тип жонглирования, называемый каскадным, имеет более простую структуру. Мячики движутся в обоих направлениях по верхней дуге, движение по нижней части круга отсутствует. Здесь присутствует только один тип броска — затяжной и высокий (см. рис. 13). Простота этого движения позволяет лучше разобраться с жонглированием, а заодно и лучше понять наши рассуждения. Направляющим наши рассуждения вопросом является следующий: может ли кому-то, кто хочет научиться каскадному жонглированию, помочь или, напротив, помешать вербальное, аналитическое описание того, как нужно это делать? Ответ: смотря по обстоятельствам. Обстоятельства эти определяются тем, на каком материале учащийся осуществляет аналитическое описание. Мы воспользуемся каскадным жонглированием, чтобы показать, как хорошие компьютерные модели могут помочь построить такие «процедуры» для людей, которые улучшают владение навыками, и как осмысление таких «процедур» может помочь нам научиться программированию и изучить математику. Но, разумеется, определенные вербальные описания могут скорее привести в замешательство, чем помочь. Рассмотрим для примера следующее описание:
1. Начало. Мячи 1 и 2 находятся в левой руке, мяч 3 — в правой.
2. Перебрасываем мяч 1 по крутой параболе в правую руку.
3. Когда мяч 1 достигает вершины параболы, бросаем мяч 3 из левой руки по такой же крутой параболе, но так, чтобы траектория мяча 3 проходила под траекторией мяча 1.
4. Когда мяч 1 достигает правой руки, а мяч 3 находится в вершине параболы, перебрасываем мяч 2 по траектории, проходящей ниже траектории мяча 3. И т.д.
Это описание, по существу, является примитивной физической программой линейного стиля программирования. Она малопригодна для овладения навыком. Люди, чуждые компьютерной культуре, могут заявить, что это описание весьма напоминает программу для компьютера, поскольку здесь «одна, и только одна, инструкция следует за другой». Это описание напоминает некоторые программы, скажем первую программу Кейта ЧЕЛОВЕЧЕК (см. рис. 12б). Но мы уже убедились, что простая цепочка инструкций без внутренней добротной структуры не является хорошей моделью для компьютерного программирования. Мы также еще убедимся, что методики структурного программирования — это как раз то, что нам требуется для написания программ и для матетических описаний жонглирования.
Наша цель — разработать процедуру для людей ЖОНГЛИРОВАНИЕ. В качестве первого шага выявим и обозначим процедуры по аналогии с процедурами, которые использовал Кейт при рисовании человечка (РИСУЕМ КЛИН, РИСУЕМ ГОЛОВУ, РИСУЕМ ЛИНИЮ). В случае жонглирования сами собой напрашивающиеся процедуры — БРОСОК ЛЕВОЙ и БРОСОК ПРАВОЙ. Точно так же, как команда КЛИН функционально была обусловлена тем фактом, что от компьютера требовалось изобразить на экране некоторую фигуру V-образной формы, команда БРОСОК ПРАВОЙ заставляет начинающего жонглера перебросить в левую руку то, что он держит в правой.
Но между программированием процедуры РИСУЕМ ЧЕЛОВЕЧКА и программированием процедуры ЖОНГЛИРОВАНИЕ имеется одно важное различие. Программист первой процедуры может не заботиться о том, сколько времени потребует ее осуществление, программист второй процедуры должен позаботиться о факторе времени. Жонглер должен осуществить действия БРОСОК ПРАВОЙ и БРОСОК ЛЕВОЙ в соответствующие моменты цикла жонглирования, и эти два действия лишь частично совпадают во времени. Поскольку имеется в виду перебрасывание мяча, то эти действия включают также и стадию ловли мяча: процедура БРОСОК ПРАВОЙ включает также ловлю мяча, когда тот приближается к левой руке. Точно так же БРОСОК ЛЕВОЙ означает команду перебросить мяч из левой руки в правую, схватив его, как только он приблизится003.
Поскольку большинство людей в состоянии выполнить эти действия, будем считать БРОСОК ЛЕВОЙ и БРОСОК ПРАВОЙ исходными и сосредоточимся на том, как у этих процедур создать новую процедуру, которую мы обозначили как ЖОНГЛИРОВАНИЕ. Взятые вместе, они в одном существенном отношении отличаются от комбинации процедур КЛИН и ГОЛОВА, из которых складывается процедура РИСУЕМ ЧЕЛОВЕЧКА. БРОСОК ЛЕВОЙ должен происходить, прежде чем закончится действие, вызванное командой БРОСОК ПРАВОЙ. В языке науки о компьютерах это выражается так: мы имеем дело с параллельными процессами, в отличие от строго последовательных процессов, используемых при рисовании человечка.
Чтобы описать эту комбинацию процедур, мы введем новый элемент программирования: понятие «ДЕМОНЫ КОГДА». Оно поясняется инструкцией: КОГДА ГОЛОД ЕСТЬ. В одном из вариантов языка ЛОГО это означало бы: всегда, когда складываются условия, обозначаемые как ГОЛОД, выполняется действие, обозначаемое ЕСТЬ. Метафора «демон» отражает ту идею, что команда подается автономным устройством, находящимся внутри компьютерной системы. Это устройство бездействует до тех пор, пока не происходит определенное событие, и тогда, подобно демону, оно бросается выполнять свою функцию. В акте жонглирования используются два таких ДЕМОНА КОГДА:
За их определения можно принять что-нибудь вроде этого:
КОГДА что-нибудь БРОСОК ЛЕВОЙ,
КОГДА что-нибудь БРОСОК ПРАВОЙ.
Чтобы уточнить эти «что-нибудь», мы опишем два условия, или распознаваемые состояния системы, которые запускают действие бросания.
В ключевой момент перебрасывания мячи располагаются приблизительно так, как это изображено на рис. 14. Но на нем состояние системы передано неполно, поскольку не показано, в каком направлении мячи падают или взлетают. Чтобы восполнить этот пробел, на рис. 15 добавлены стрелки, указывающие направление, а на средней и нижней частях этого рисунка приведены два описания состояния системы.
Если мы вполне резонно предположим, что жонглер умеет распознавать эти две ситуации, то следующая формализация должна восприниматься как сама собой разумеющаяся.
ВЫПОЛНЯЕМ ЖОНГЛИРОВАНИЕ КОГДА ВЕРШИНА ПРАВОЙ БРОСОК ПРАВОЙ КОГДА ВЕРШИНА ЛЕВОЙ БРОСОК ЛЕВОЙ или еще проще:
ВЫПОЛНЯЕМ ЖОНГЛИРОВАНИЕ КОГДА ВЕРШИНА X БРОСОК X
Последнее означает, что, когда возникает состояние ВЕРШИНА ПРАВОЙ, правая рука начинает бросок, а когда возникает ВЕРШИНА ЛЕВОЙ, левая рука начинает бросок. Немного поразмыслив, мы убедимся, что это и есть полное описание- процесс жонглирования самовоспроизводится, поскольку каждый бросок приводит систему в состояние, которое запускает следующий бросок
Как эту модель жонглирования превратить в такую процедуру для людей, которую можно было бы использовать в качестве стратегии обучения? Сначала отметим, что модель жонглирования предполагает некоторые допущения:
1) обучаемый умеет выполнить БРОСОК ПРАВОЙ и БРОСОК ЛЕВОЙ,
2) обучаемый умеет распознать состояние, запускающее ВЕРШИНА ЛЕВОЙ и ВЕРШИНА ПРАВОЙ,
3) обучаемый может объединить эти умения в соответствии с определением процедуры ВЫПОЛНЯЕМ ЖОНГЛИРОВАНИЕ
Теперь мы переведем наши допущения и процедуру для людей в стратегию обучения.
ШАГ 1. Проверяем, умеет ли обучаемый бросать. Даем ему один мяч и просим перебросить из одной руки в другую. Обычно это действие выполняется легко, но мы позднее убедимся, что часто требуется некоторое совершенствование этого движения. Стихийно выполняемая процедура содержит ошибку.
ШАГ 2. Проверяем, что учащийся умеет совмещать броски. Даем два мяча и следующие инструкции:
ПЕРЕБРАСЫВАЕМ
БРОСОК ЛЕВОЙ
КОГДА ВЕРШИНА ПРАВОЙ БРОСОК ПРАВОЙ
КОНЕЦ
Это направленный обмен мячами между левой и правой руками. Хотя кажется, что здесь мы осуществляем простую комбинацию БРОСОК ЛЕВОЙ и БРОСОК ПРАВОЙ, обычно сразу это действие не получается.
ШАГ 3. Ищем ошибку в процедурах броска Почему не срабатывает процедура ПЕРЕБРАСЫВАЕМ? Обычно обнаруживается, что учащийся бросает мяч не так хорошо, как это казалось на шаге 1. Самым распространенным отклонением (или ошибкой) от требуемого процедурой броска является прослеживание глазами за мячом. Поскольку у человека только одна пара глаз, их сосредоточенность на первом броске делает почти невозможным второй бросок, и обычно он заканчивается падением обоих мячей на пол.
ШАГ 4. Отладка. Допустим, что ошибка заключалась в прослеживании глазами за полетом первого мяча, мы отладим этот промах учащихся, вернувшись к бросанию одного мяча без прослеживания его глазами. Большинство учащихся (к своему изумлению) очень быстро овладевают броском, когда глаза фиксируются на верхней точке предполагаемой параболы полета мяча. Когда бросание одного мяча отлажено, учащийся вновь пытается объединить два броска. Большинству это часто удается, хотя могут выявиться какие-то иные ошибки, от которых придется избавляться.
ШАГ 5. Вводим третий мяч. Как только учащийся смог легко выполнить процедуру, обозначенную нами как ПЕРЕБРАСЫВАЕМ, мы начинаем работать с тремя мячами. Чтобы это получилось, вначале берем в одну руку два мяча, а в другую — один (см. рис. 16).
Мяч 2 бросается так же, как при выполнении процедуры ПЕРЕБРАСЫВАЕМ, мяч 1 остается в руке. БРОСОК ПРАВОЙ из процедуры ПЕРЕБРАСЫВАЕМ приводит все три мяча в состояние готовности к процедуре ВЫПОЛНЯЕМ ЖОНГЛИРОВАНИЕ. Переход от процедуры ПЕРЕБРАСЫВАЕМ к процедуре ВЫПОЛНЯЕМ ЖОНГЛИРОВАНИЕ представляет для некоторых учащихся определенную трудность, но она легко преодолима. Большинство людей при этой стратегии овладевают жонглированием менее чем за полчаса.
Варианты этой стратегии обучения использовались многими преподавателями в среде обучения ЛОГО и были детально изучены одним из них, а именно Ховардом Аустином, проанализировавшим жонглирование в своей магистерской работе. Несомненно, эта стратегия весьма эффективна и вполне обоснована: использование понятий программирования в качестве дескриптивного языка, облегчающего отладку.
В нашем рассмотрении рисования человечка и овладения жонглированием центральное место занимал вопрос, как облегчить отладку благодаря применению соответствующего описания сложного процесса. В обоих случаях в описании процесс был представлен в виде модулей, т. е. он подразделялся на естественные функциональные единицы, а выявление ошибки происходило благодаря сужению границ ее поиска. Наихудшими для отладки являются условия, допускающие одновременное совершение нескольких ошибок. Процесс отладки особенно эффективен в тех случаях, когда модули достаточно малы и становится маловероятным, что они содержат более одной ошибки.
Трудности, которые вызывают множественные ошибки, хорошо поясняет ситуация, когда начинающие овладевать жонглированием следуют примитивно физическому подходу. Фактически (как, например, Майкл, в конце концов овладевший ходьбой на ходулях) они часто добиваются успеха, но, как правило, после многочасовых неудачных попыток подкидывать в воздух сразу три мяча, предварительно не научившись перебрасывать два мяча. Овладение навыком таким способом занимает значительно больше времени. Когда Ховард Аустин внимательно пронаблюдал за действиями таких начинающих, он заметил, что они совершают те самые ошибки, которые были отмечены в нашей стратегии рационального подхода, например прослеживают глазами полет мяча. Конечно, благодаря значительному числу повторений (так называемое овладение навыком методом проб и ошибок) вырабатывается нужная форма поведения. В силу чистой случайности бросок оказался слабо проконтролирован глазами. Подобно другим животным человеческая особь запоминает механизмы, способствующие наступлению каких-либо событий и увеличивающие вероятность того, что они произойдут. Постепенно ошибки сглаживаются, и субъект овладевает жонглированием. Люди обладают способностью учиться, подобно крысам в лабиринте. Но процесс этот медлен и примитивен. Мы можем учиться быстрее благодаря сознательному контролю за процессом учения, благодаря четкому различению и анализу особенностей поведения.
Тот факт, что компьютерные процедуры облегчают учение, вовсе не означает, что от всякого повторения можно отказаться или что время, необходимое для овладения жонглированием, можно свести к нулю. Время потребуется на то, чтобы выявить и исправить ошибки, и на то, чтобы овладеть необходимыми компонентами навыка. Что мы можем свести на нет, так это малопродуманные и неэффективные методы. Когда учащийся следует плохой стратегии учения, то овладевает на удовлетворительном уровне жонглированием тремя мячиками после многочасовой работы. Выбрав хорошую стратегию, он овладевает этим навыком гораздо быстрее, обычно за 20—30 минут.
У детей часто развивается резистентность (неприятие) к процессу отладки, аналогичная уже разбиравшейся нами резистентности к процедурам. Ребенок задумал научить Черепашку рисовать определенную фигуру, скажем домик или человечка. Программа быстро пишется и проверяется. Она не работает. Вместо отладки она стирается из памяти. Иногда отбрасывается и все задуманное. Иногда же дети долго не прекращают своих попыток, проявляя удивительную настойчивость, но всегда начинают с нуля, пытаясь сделать все «правильно» одним махом. Ребенок может преуспеть или не преуспеть в умении научить компьютер рисованию. Но это еще не значит, что он добился или не добился успехов в стратегии отладки.
Нетрудно проявить сочувствие, хотя школьная этика прекрасно обходится без этого. Там, где мы видим программу с незначительной ошибкой, ребенок видит «неверное», «плохое», «ошибочное» исполнение. Школьные учителя считают, что ошибки — это плохо; на крайний случай они предлагают поразмыслить над ними, сосредоточиться и подумать. Ребенок же рад воспользоваться способностью компьютера стирать следы его деятельности с тем, чтобы никто не смог их увидеть. Философия отладки предлагает противоположную установку. Ошибки приносят нам пользу, поскольку они заставляют нас разобраться в том, что произошло, понять, где мы пошли по ложному пути, и через такое понимание исправить их. Опыт программирования на компьютере эффективнее любой другой деятельности заставляет их «уверовать» в отладку.
Соприкосновение со средой обучения ЛОГО постепенно подточило устойчивое неприятие процессов отладки и разбиения на отдельные процедуры. Некоторые люди, наблюдавшие, как дети начинали все терпимее относиться к своим ошибкам, приписывали эту тенденцию поведению преподавателей в среде обучения ЛОГО, которые не проявляли интереса и никак не критиковали программы, считавшиеся детьми ошибочными. Я думаю, в этом случае срабатывали более фундаментальные вещи. В среде обучения ЛОГО дети учились тому, что учитель тоже учится и что все они учатся на ошибках.
От программирования автор очень ловко переходит к мировоззрению. Как и при написании программы, говорит Пейперт, ребенок строит свою картину мира, потом происходит ее отладка и так множество раз.
Слэклайн (немного оффтопа)
Про жонглирование для программистов рекомендовали на Хабре еще в 2011, немного оффтопа про еще одно «полезное занятие для программистов».
одномерный батут
Я впервые узнал про слэклайн в Яндекс-Лагере. После него я сразу же приобрел себе стропу и уже следующим летом вместе с наручниками взял слэклайн в GoToCamp
Слэклайн ставит в ситуацию, когда привычные координационные программы не работают, но их легко изменить, если следовать процедуре, а не интуиции. (Баг жонглирования — смотреть на мяч, баг слэклайна — смотреть под ноги. Интуитивно хочется начинать с края, а эффективнее — с середины и тд.)
Процесс обучения легко разбивается на подпрограммы (держать равновесие на одной ноге, делать шаг и пр), первый устойчивый успех достигается за полчаса-час, уверенно делать десяток шагов можно через 3-5 часов тренировки, причем есть еще и море позитива и соревновательных моментов.
Обучалка:
Устройство очень простое.
Это 15 метров стропы и трещотка (придуманная Леонардо да Винчи)
www.russian-slackline.ru/slacklines/gibbon/gibbon-jibline
Что вытворяют профи:
А еще слэклайн спину вправляет и с девушками помогает знакомиться.
Я впервые узнал про слэклайн в Яндекс-Лагере. После него я сразу же приобрел себе стропу и уже следующим летом вместе с наручниками взял слэклайн в GoToCamp
Слэклайн ставит в ситуацию, когда привычные координационные программы не работают, но их легко изменить, если следовать процедуре, а не интуиции. (Баг жонглирования — смотреть на мяч, баг слэклайна — смотреть под ноги. Интуитивно хочется начинать с края, а эффективнее — с середины и тд.)
Процесс обучения легко разбивается на подпрограммы (держать равновесие на одной ноге, делать шаг и пр), первый устойчивый успех достигается за полчаса-час, уверенно делать десяток шагов можно через 3-5 часов тренировки, причем есть еще и море позитива и соревновательных моментов.
Обучалка:
Устройство очень простое.
Это 15 метров стропы и трещотка (придуманная Леонардо да Винчи)
www.russian-slackline.ru/slacklines/gibbon/gibbon-jibline
Что вытворяют профи:
А еще слэклайн спину вправляет и с девушками помогает знакомиться.
Заключение
Наверняка у каждого, кто читает Хабр возникала или в скором времени возникнет ситуация, когда его спрашивают: «А фто такое плогламмилование?».
Книга Сеймура Пейперта — это отличный импульс, чтобы заново вспомнить (и отрефликсировать как следует) как мы изучали математику и программирование, а так же полюбоваться, насколько гармонично можно объяснять дифуры и программирование, подключая бессознательное и телесные метафоры, ну и порассуждать, как сделать мир лучше, если построить нормальную систему образования.
Сеймур Пейперт заканчивает свою книгу статьей «Математическое бессознательное»
«Ни математика, ни человек не могут быть полностью поняты, будучи отделенными друг от друга.»
P.S.
Задача:
Положим на стол 2 одинаковых монетки. Одну прижмем к столу, а вторую будем катить по ободу первой. Вопрос, сколько оборотов (вокруг собственного центра) сделает вторая монета, чтобы обогнуть первую монету и вернуться в исходное положение? (трение и скольжение исключаем)
0 марта. Сеймур Пейперт
1 марта. Xerox Alto
2 марта «Позвоните Джейк». История NIC и RFC
3 марта Грэйс «бабуля COBOL» Хоппер
4 марта Маргарет Гамильтон: «Пацаны, я вас на Луну отправлю»
5 марта Хеди Ламарр. И в кино обнаженной сняться и во врага торпедой пульнуть
7 марта Великолепная шестерка: девушки, которые термоядерный взрыв рассчитывали
8 марта «Видеоигры, я ваш отец!»
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
marcor
На задачу: один оборот, так как радиусы одинаковы. Монетке сверху надо пройти два пи эр по монетке снизу, что в точности равно её собственному два пи эр, что составляет один оборот.
Ещё проще это понять, представив монеты шестерёнками)
Aniro
Если представляете шестеренки — нарисуйте на одной из них отметку и посмотрите куда она направлена через четверть оборота.
marcor
А, по ободу. Я читать не умею)
Я думал, что первая — в плоскости x-y, вторая — в x-z. А если обе в одной, то конечно два.
0x0FFF
Если у нас две шестеренки по 50 зубцов в каждой, то как возможно, чтобы за один оборот вокруг зафиксированной шестеренки движущаяся совершила два оборота? Ведь она пройдет ровно 50 зубцов зафиксированной шестеренки, и завершит оборот ровно на том зубце, с которого начинала. Разве не так?
marcor
Возьми монетки)
В одной плоскости правда два оборота получается.
Потому что шестерня, которая оборачивается, должна пройти не путь два пи эр, а четыре, так как центр стоит дальше в два раза.
Ну, как я понимаю.
Img
ik62
монета, двигаясь, совершает "два вращения" — вращается вокруг первой монеты и вокруг собственного центра. Вокруг первой монеты будет совершен один оборот, вокруг своего центра — два. Задача сформулирована нечетко.
zirf
Вообще проблема с грамотностью уже на лицо. Для кодирования за бабло не нужно знать, что такое квайн. ПМ зачастую понять не может, почему человеко-месяц мифический, а сисадмины иногда даже думают, что "излучение спутника Дебриса" существует. В средневековье священники могли читать молитвы, не понимая сути — латинского не знали.
LOGO был описан в "Науке и жизни" в 1986 или 1987 году в разделе "Школа начинающего программиста". Вообще иногда люди с трудом понимают зачем знать основы. Увы когда, computer science из науки и искусства стала превращаться в выгодный бизнес, начался процесс вырождения самих жрецов, раньше в ВУЗе жреца ковали, сейчас "специалистов" штампуют. Жрецом можно только самому стать, в том числе и читая такие книги.
VioletGiraffe
Проблема с грамотностью либо налицо, либо на лице, но никак не «на лицо» ;)
Irony on so many levels.
drafterleo
Главное, чтобы не заподлицо :)
ik62
"Вопрос, сколько оборотов сделает вторая монета," смотря что здесь понимается под "оборотом". Вокруг первой монеты конечно один оборот. Вокруг собственного центра — два.
VioletGiraffe
Какие 2 оборота? Длина окружности монет одинаковая. Мы приставили монеты друг к другу и развернули в линию, а длина этой линии равна длине окружности. Разве нет?
drafterleo
Я для верности даже эксперимент провел — реально провернул одну монету вокруг другой, сцепив гуртами. Риски сошлись после одного оборота. Парадокс, однако :).
drafterleo
А вокруг своей оси вторая монета — действительно два раза оборачивается, как это ни удивительно :).
ik62
Не удивительно если представить себе что монеты — это вращающиеся зубчатые колёса, закреплённые на неподвижных осях. Для того что-бы риски сошлись обе монеты должны совершить один полный оборот каждая вокруг своей оси. Поскольку в нашей ситуации одно колесо имеет неподвижную ось и к тому-же само неподвижно — второе делает вынужденный дополнительный оборот.
PQR
удалено
sova
удалено
olegkrasnov
32 марта тоже пост будет?
MagisterLudi
это идея, спасибо
SADKO
Вау, как раз занят поиском среды разработки для дочки, вспомнил про ЛОГО, буду выбирать среду…
… к сожалению стремясь сделать среду более доступной для ребёнка, разработчики под час игнорят не только детскую психологию, но саму логику программирования, из-за чего простые алгоритмы в графических средах вроде скрэтча или лего превращаются в адский ад.
MagisterLudi
Поисследуйте среду у FISCHERTECHNIK, вроде ее по уму делали.
Фигуры, использующиеся в ROBO Pro для изображения программных элементов, в некоторой степени повторяют элементы, перечисленные в ГОСТ 19.701-90.
В ROBO Pro программы составляются в виде классических блок-схем, которые представляют собой графическое отображение (или диаграмму), показывающее последовательность основных шагов выполнения алгоритма.
xenohunter
Батут, кстати, двумерный.
MagisterLudi
Батут = двумерный батут, а слэклайн = одномерный батут.
Я постарался определить новое через привычное старое.
xenohunter
Почему обычный батут — двумерный? Я имел в виду, что двумерный как раз слэклайн. На батуте можно двигаться вниз-вверх (одно измерение) и смещаться вправо-влево и вперёд-назад (ещё два). На слэклайне: если пренебречь балансировочными колебаниями в стороны, то можно двигаться вперёд-назад (одно измерение) и вниз-вверх, как на батуте (второе).
MagisterLudi
у батута есть длина и ширина (плоскость), у слэклайна — длина (линия)