Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Программирование для младшешкольников: алгоритмика и моделирование данных

Наконец-то закончили с дитенком половину курса для семиклассников (http://ailev.livejournal.com/948015.html). Сегодня решили первые шесть задачек уже из второй половины (десятая тема, "Рекурсия"), и я в награду за дитенкины интеллектуальные труды решил показать ему Kodu и Scratch.

Хороший программист должен уметь программировать на утюге -- так меня учили. Ага, у утюга нет процессора и памяти -- в этом-то и фишка!

После девяти уроков для Робота в КуМире программирование на этих tile-утюгах выглядит особо зрелищно, красочно и малополезно. Я записал для себя эти Kodu и Scratch в "развлечения".

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

Разницу между "исполнителями" КуМира и объектами с методами Kodu и Scratch дитенка не заметил. Подумаешь, еще парочка исполняющих сред -- после "дотайловых" Лайтбота и ПиктоМира, а также полнотекстового КуМира!

Это как с джазом и классикой: джазисты могут играть классику, а вот классическим музыкантам джаз обычно не даётся.

Впрочем, именно это ведь и называется "базовое образование" -- в отличие от "нахватался"? Ибо "нахватавшиеся" с трудом переползают на соседние полянки, а вот люди с базовым образованием даже не замечают, что переползание случилось. Я, кажется, понимаю про победы наших студентов на олимпиадах по программированию: просто они учились программировать не на тайловых языках, и не в виртуальных мирах. По счастью, учебный "прогресс 2.0" до них не дошел -- вот и результаты.

Если так пойдёт дело и дальше, то к Новому Году курс информатики для седьмого класса закончится, и нужно будет думать, что делать дальше. В той же 179 школе, откуда я брал этот курс для семиклассников, в восьмом классе уже Питон (http://server.179.ru/wiki/?page=Informatika&v=laf). Питон для третьеклассника как-то очень уж сурово. Но, похоже, иных учебных курсов у нас для такой ситуации пока нет.

С другой стороны -- это только алгоритмика, а не информатика. Распишем подробней часть про моделирование данных пункта 3 (про информатику) из моего постинга "картина мира для младшеклассников" (http://ailev.livejournal.com/950308.html).

Школьная информатика -- это computer science: про то, какие описания пригодны для рассуждений компьютеров (т.е. про "исполняемые описания"). Рассуждения компьютера (программа), как заметил давным давно Дейкстра, это алгоритм плюс данные. Все наличные курсы школьной информатики, в том числе и лучшая на сегодняшний день технология из ПиктоМира-КуМира с использованием Ершола, учит по факту только алгоритмике, никак не касаясь моделирования данных.

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

Моделирование данных является приложением философской логики к проблемам программирования. Поэтому моделирование данных как наука (компактные объяснения того, как моделируем объекты реального мира) сводится главным образом к философской логике и ее приложениям к метафизике, онтологии и частично гносеологии и эпистемологии -- ибо описание данными объектов окружающего мира начинается с выявления этих объектов в окружающем мире, а ответ на вопрос "что существует в окружающем нас мире" даёт онтология. Ибо нельзя выделить из мира объект, если он не существует. А что существует, то можно выделить. Онтология -- это как раз разделяемый многими людьми ответ на вопрос о том, что существует. Тем самым моделирование данных и онтология -- это близнецы-братья.

Современное моделирование данных исправляет именно философские ошибки древних мыслителей (прежде всего Аристотеля) -- хотя эти ошибки и являются глубоко укоренёнными в языке и нынешних практиках. Увы, эти ошибки приводят к трудностям, и сейчас (относительно недавно -- что-то сто лет назад, что-то тридцать лет назад) придуманы новые способы описания мира, что ведет к новым способам моделирования данных. Эти способы контринтуитивны, и им нужно специально учить. Описание причин, по которым нужны эти новые способы описания данных даны в книжке BORO (http://ailev.livejournal.com/938647.html), а пример использования этих способов для создания конкретной методологии моделирования данных HDQM в книжке Developing High Quality Data Models (www.amazon.com/Developing-High-Quality-Data-Models/dp/0123751063/ -- в Сети эту книжку уже тоже можно найти). Научные корни всего этого я обсуждал в http://ailev.livejournal.com/952930.html.

Если поглядеть на то, как сегодня удаётся обучить алгоритмике даже малых детишек (например, http://ailev.livejournal.com/948015.html), то можно обнаружить следующий паттерн: алгоритм пишется для многих вариантов его входных данных (тестовые примеры). Моя гипотеза, что моделированию данных тоже можно обучить даже малых детишек, если модель данных будет писаться для многих вариантов использующих ее алгоритмов (тут я благодарен vvagr, который перефразировал уравнение Дейкстры про программы так: "данные нужны только для того, чтобы быть использованными алгоритмом").

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

Гипотеза по применению этого же принципа к моделированию данных: КуМир для Онтолана (школьный онтологический язык, подходы к его определению см. в http://praxos.livejournal.com/13095.html) должен давать возможность моделировать данные, для которых будут корректно исполняться несколько разных тестовых алгоритмов, использующих разных исполнителей. Тогда 300 задач в такой исполняющей среде (это сегодня объем упражнений по начальной алгоритмике) позволили бы выучить начальное онтологическое (семантическое -- основанное на значениях слов) моделирование данных -- это должно быть порядка 60 новых для учеников понятий, как и в школьном курсе информатики.

Что должно войти в Онтолан? Как минимум,
-- множественные специализации (классификации, хотя речь идет не о членстве в классе: ненавижу эту запутывающую терминологию)
-- многоуровневая конкретизация-порождение (уровни абстракции, мета)
-- мереология (части и целое, в том числе темпоральные части)
-- время: моменты и интервалы
-- системный подход: функциональные места и модули
-- агенты, действия, продукты
-- информация, данные, информационные продукты
-- "география" (места, адреса, площадки)
-- свойства и UoM (хотя это очень мутное место! Но без этого трудно стыковаться с естественнонаучным циклом)

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

Но совсем не представляю, как могли бы выглядеть упражнения для обучения моделированию данных, и какой могла бы быть для этих упражнений обучающая компьютерная среда.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 32 comments