6 ССВ: (3) А. Левенчук

Feb 23, 2020 00:03

Анатолий Левенчук  ailev.livejournal.com
25.09.2011  ailev.livejournal.com/953444.html  "Программирование для младшешкольников: алгоритмика и моделирование данных. Это как с джазом и классикой: джазисты могут играть классику, а вот классическим музыкантам джаз обычно не даётся. 
Впрочем, именно это ведь и называется "базовое образование" -- в отличие от "нахватался"? Ибо "нахватавшиеся" с трудом переползают на соседние полянки, а вот люди с базовым образованием даже не замечают, что переползание случилось. Я, кажется, понимаю про победы наших студентов на олимпиадах по программированию: просто они учились программировать не на тайловых языках, и не в виртуальных мирах. По счастью, учебный "прогресс 2.0" до них не дошел -- вот и результаты.
Если так пойдёт дело и дальше, то к Новому Году курс информатики для седьмого класса закончится, и нужно будет думать, что делать дальше. В той же 179 школе, откуда я брал этот курс для семиклассников, в восьмом классе уже Питон (server.179.ru/wiki/?page=Informatika&v=laf). Питон для третьеклассника как-то очень уж сурово. Но, похоже, иных учебных курсов у нас для такой ситуации пока нет.
С другой стороны -- это только алгоритмика, а не информатика. Распишем подробней часть про моделирование данных пункта 3 (про информатику) из моего постинга "картина мира для младшеклассников" ( ailev.livejournal.com/950308.html).
Школьная информатика -- это computer science: про то, какие описания пригодны для рассуждений компьютеров (т.е. про "исполняемые описания"). Рассуждения компьютера (программа), как заметил давным давно Дейкстра, это алгоритм плюс данные. Все наличные курсы школьной информатики, в том числе и лучшая на сегодняшний день технология из ПиктоМира-КуМира с использованием Ершола, учит по факту только алгоритмике, никак не касаясь моделирования данных.
Моделированию данных (точнее, моделированию объектов в реальном мире с результирующими моделями-как-данными, аналогично алгоритмике как моделированию действий в реальном мире с результирующими моделями-как-алгоритмами) в сегодняшней школьной информатике не учат никак. А надо.
Моделирование данных является приложением философской логики к проблемам программирования. Поэтому моделирование данных как наука (компактные объяснения того, как моделируем объекты реального мира) сводится главным образом к философской логике и ее приложениям к метафизике, онтологии и частично гносеологии и эпистемологии -- ибо описание данными объектов окружающего мира начинается с выявления этих объектов в окружающем мире, а ответ на вопрос "что существует в окружающем нас мире" даёт онтология. Ибо нельзя выделить из мира объект, если он не существует. А что существует, то можно выделить. Онтология -- это как раз разделяемый многими людьми ответ на вопрос о том, что существует. Тем самым моделирование данных и онтология -- это близнецы-братья.
Современное моделирование данных исправляет именно философские ошибки древних мыслителей (прежде всего Аристотеля) -- хотя эти ошибки и являются глубоко укоренёнными в языке и нынешних практиках. Увы, эти ошибки приводят к трудностям, и сейчас (относительно недавно -- что-то сто лет назад, что-то тридцать лет назад) придуманы новые способы описания мира, что ведет к новым способам моделирования данных. Эти способы контринтуитивны, и им нужно специально учить. Описание причин, по которым нужны эти новые способы описания данных даны в книжке BORO ( ailev.livejournal.com/938647.html), а пример использования этих способов для создания конкретной методологии моделирования данных HDQM в книжке Developing High Quality Data Models (www.amazon.com/Developing-High-Quality-Data-Models/dp/0123751063/ -- в Сети эту книжку уже тоже можно найти). Научные корни всего этого я обсуждал в ailev.livejournal.com/952930.html.
Если поглядеть на то, как сегодня удаётся обучить алгоритмике даже малых детишек (например,  ailev.livejournal.com/948015.html), то можно обнаружить следующий паттерн: алгоритм пишется для многих вариантов его входных данных (тестовые примеры). Моя гипотеза, что моделированию данных тоже можно обучить даже малых детишек, если модель данных будет писаться для многих вариантов использующих ее алгоритмов (тут я благодарен 
vvagr, который перефразировал уравнение Дейкстры про программы так: "данные нужны только для того, чтобы быть использованными алгоритмом").
Отползая к процедурной парадигме (алгоритмика -- это прежде всего процедурная парадигма) и обучению алгоритмике, понимаешь, что "алгоритмы" и "данные" связаны более тонким образом, нежели просто "использование данных в алгоритме". Недаром КуМир -- это "комплект учебных миров". Данные -- это Миры, в которых действуют Исполнители. И данные, и исполнители затем доступны из алгоритмов (это выражается в том, что алгоритмы на школьном алгоритмическом языке отображаются в КуМире черным цветом, а вот обращения к данным мира и командам исполнителя отображаются синим цветом). Алгоритмический язык остаётся одним и тем же, а вот миры с разнообразными данными и командами исполнителей могут меняться.
Гипотеза по применению этого же принципа к моделированию данных: КуМир для Онтолана (школьный онтологический язык, подходы к его определению см. в  praxos.livejournal.com/13095.html) должен давать возможность моделировать данные, для которых будут корректно исполняться несколько разных тестовых алгоритмов, использующих разных исполнителей. Тогда 300 задач в такой исполняющей среде (это сегодня объем упражнений по начальной алгоритмике) позволили бы выучить начальное онтологическое (семантическое -- основанное на значениях слов) моделирование данных -- это должно быть порядка 60 новых для учеников понятий, как и в школьном курсе информатики.
Что должно войти в Онтолан? Как минимум,
-- множественные специализации (классификации, хотя речь идет не о членстве в классе: ненавижу эту запутывающую терминологию)
-- многоуровневая конкретизация-порождение (уровни абстракции, мета)
-- мереология (части и целое, в том числе темпоральные части)
-- время: моменты и интервалы
-- системный подход: функциональные места и модули
-- агенты, действия, продукты
-- информация, данные, информационные продукты
-- "география" (места, адреса, площадки)
-- свойства и UoM (хотя это очень мутное место! Но без этого трудно стыковаться с естественнонаучным циклом)
Да, всё это очень шапкозакидательно. Я не уверен, что это можно хоть как-то обсуждать в третьем классе. Точнее, уверен, что невозможно -- но с оговоркой. Группе "Аттик" удалось за 20 лет придумать способ, как обучать третьеклассников алгоритмике, а 20 лет назад они придумали способ, как обучать алгоритмике семиклассников. Так что я теперь сильно скептически отношусь к разговорам о начальном возрасте для обучения чему бы то ни было. Похоже, в образовательной промышленности изобретательство и рационализаторство работают не хуже, чем в любых других отраслях -- и при надлежащем подходе новые версии образовательных методик можно выпускать не реже, чем сегодня выпускают новые версии смартфонов.
Но совсем не представляю, как могли бы выглядеть упражнения для обучения моделированию данных, и какой могла бы быть для этих упражнений обучающая компьютерная среда.
15.10.2011  ailev.livejournal.com/955671.html  "Я всё больше и больше прихожу к уверенности, что системной инженерии ("как делать системы коллективными усилиями") нужно учить не в ВУЗе, а в школе -- в ВУЗе уже поздно. ... Умение или неумение научить людей, похоже, зависит от технологии обучения не меньше, чем от врожденных способностей и возраста учеников. Раз за разом выясняется, что дело не в сложности предмета или тупости ученика.
Дело оказывается в: 
-- правильном выборе основных понятий дисциплины ("алхимии" учим, или "химии" -- это ведь для многих сегодняшних предметов верно)
-- правильном конструировании языка, отражающем нужные понятия и создании среды решения задач (моделирования) в этом языке;
-- правильном построении задач ("дано", вместе с соответствующей начальной обстановкой; "надо" с описанием целевой обстановки) для миров, описываемых/меняемых этим языком,
-- заставлении ученика решить все задачи для тренировки "мозговой мышцы", отвечающей за мышление в данной дисциплине ("налёт часов").
Конечная успешность способа обучения зависит от того, правильно ли мы выделили понятия и правильно ли научили ими манипулировать. Случай с ПиктоМиром и КуМиром подсказывает, что языков и связанных с ними наборов задач должно быть несколько, с нарастающим богатством выразительных возможностей и задействованных концептов (напомню, что использование ПиктоМира позволяет за несколько занятий обеспечить возможность начать обучение младшеклассников КуМиру -- ибо младшекласснику трудно одновременно изучить огромное число концептов, нужных для элементарных задач в КуМире. А элементарные задачи в КуМире много легче решать с Роботом, который сильно проще в управлении, чем Чертежник/Черепашка). Если придерживаться этого принципа, то можно замахиваться на весьма и весьма сложные дисциплины в весьма и весьма нежном возрасте.
Вот некоторые идеи последовательности курсов для возможного языкоориентированного (освоил запись на формальном языке моделирования для дисциплины = освоил дисциплину) образования для младшешкольников:
1. Алгоритмика -- язык Пиктолан (среда ПиктоМир), плюс LightBot. Курс готов, piktomir.ru/. Понятия команды, алгоритма, рекурсии, повторителя, условия, режимов редактирования и исполнения.
2. Алгоритмика -- язык Ершол (среда КуМир). Курс готов (server.179.ru/wiki/?page=DenisKirienko/Kumir. Как это работает для младшешкольников, я писал в  ailev.livejournal.com/948015.html). Обычный курс программирования на пакетном (типа Ада, Модула) языке. Когда-то я считал: в алгоритмике на Ершоле детки усваивают примерно 60 понятий. Потом я посчитал число вводимых понятий еще в нескольких школьных учебниках того времени, уже и не помню каких -- получались те же 60 понятий. Вот и будем считать, что 60 усваиваемых понятий -- это объем одного курса. 
3. Онтология: Онтолан (среда ОнтоМир). Объекты и отношения. Индивиды и классы -- порядка 60 понятий, которые можно брать из ISO 15926-2 (но без выхода на моделирование данных. Про "данные" и "информацию" нужно рассказывать отдельно, сильно попозже). Курс сейчас нами активно проектируется (новости будут регулярно появляться в сообществе 
dot15926), кое-какие идеи уже есть. Вот нещадно сейчас критикуемый, но уже пример относительно продвинутой задачи такого курса:
Заполните пропущенные места в тройках "ключевыми понятиями":
кубик принадлежит_к красный
красный это _____
красный ______ цвет
цвет это __________
4. Рассуждения и логические алгоритмы: Онтолан (среда ОнтоМир). Думаю, тут будут те же 60 понятий. Если младшешкольники нормально работают с рекурсией и сложными логическими выражениями, то и тут не растеряются.
5. Системный подход -- Систлан (среда ИнжиМир, такой игрушечный CAD/CAM/PLM -- возможно, работающий с Виртуальным ЛегоСтройТрестом). Понятие системы, понятие модуля. Функция и конструкция, структура и поведение. Жизненный цикл. Чем раньше давать понятие системы, тем проще будет потом. Еще 60 понятий.
6. Описание деятельности -- подмножество Орглана (среда ОргМир, похожий на нынешние редакторы Архимейта, только упрощенный и с переработанным на основе предыдущих курсов набором понятий и отношений). Поскольку в голову уже загружено про объекты и отношения, а также про системы, то можно давать задачи на описание ситуаций окружающего мира. Даже в самом Архимейте не больше 60 понятий.
7. Алгоритмика: программирование на Питоне (что-то из обычных Python IDE). Продвинутый курс -- но не факт, что за пределами начальной школы.
8. Моделирование данных -- ISO 15926 (.15926 Editor): добавление компьютерных типов данных к Онтолану. Продвинутый курс -- но не факт, что за пределами начальной школы.
Это всё про "картину мира" и возможность описывать мир, но не про средства изменения мира. Это "наука", а не "инженерия" -- все эти курсы отнюдь не обучение созидательной деятельности. Продуктивная деятельность подразумевает прежде всего постановку задач, а не решение задач. Перед тем, как научиться ставить задачи, нужно иметь опыт решения кем-то уже поставленных задач, иметь опыт рассуждения в терминах понятий предметной области, записи различных решений. Так что "наука" и аналитика сначала, а "инженерия" и проектность чуть позже. Но они будут, всенепременно -- но только после "грунтовки мозга" и "науки" (это я не первый раз высказываю эту идею, см., например, структуру моей программы верхнего образования инженеров-программистов --  ailev.livejournal.com/937201.html. Там я писал характеристику выпускников первого курса: "После этого курса выходят очень умные, полностью бесполезные в любом деле люди. Зато их можно потом легко обучить многим и многим профессиям, ибо они после этого курса "быстро схватывают"" -- и это как раз то, что будет применимо к младшешкольникам после описанной мной серии решения пакетов задач в различных средах. К вопросу же о "гуманитарном образовании": физики могут идти в поэты, а наоборот не бывает; инженеры могут идти в менеджеры, а наоборот не бывает; математики могут музицировать, а вот музыкантам стать математиками -- увы, не получится. Ну, и так далее -- мысль, надеюсь, ясна.
Курс инженерии (а не "уроки труда", как сейчас) для школы должен быть введен так же, как курс информатики в 1985 году (это тогда казалось полной фантастикой, ибо компьютеров в 1985 году не было не только в школе, но и и на большинстве производств). Я тут не про государство, я про частную инициативу (ибо не верю я в государство, даже -- и особенно -- если речь идет об образовании. Как информатике в восьмидесятые учили, да и сегодня учат тысячи учителей физкультуры и истории, так и инженерии по линии государства будут учить преподаватели рукоделия и литературы).
Длинную дискуссию про "переносимость на другие типы задач", "другие языки", "другие дисциплины", "обучение в игре", "выполнение длинных учебных проектов", "обучение в группе", "уверены ли вы, что учить нужно именно этому", "почему это всё для младшешкольников, им это будет рановато" я тут опущу. Конечно, на все эти вопросы должны быть внятные ответы (и они есть), по всем этим вопросам должны быть написаны тома обоснований -- хотя кто эти тома будет читать?!
Итого: нужно делать набор различных языков (в том числе -- архитектурных), исполняющих сред для них (в том числе -- генераторов отчётов и аналитических инструментов) и наборов задач (а не "проектов"!), которые позволят младшешкольникам всё это освоить "сержантским методом". И этот проект вполне обозрим, хотя и чрезвычайно труден. Да, путь от КуМира к ПиктоМиру у группы "Аттик" занял двадцать лет -- но теперь-то этот опыт есть, и мы понимаем, что делать! В вечной триаде "учебник", "задачник", "методические рекомендации" победил "задачник" и "язык моделирования с его исполняющей средой" при маргинальной роли "методических рекомендаций" -- и это должно относиться к большинству школьных предметов. Если пойти по этому пути, то лестница из цепочек задач может получиться достаточно пологой, чтобы по ней вскарабкался младшешкольник. 
Disclaimer. Да, я понимаю всю радикальность заявленной мной тут программы -- и вытекающие из этой радикальности риски. Но это достаточно сумасшедшая идея, чтобы ей было интересно заниматься. А кто не хочет -- так я ведь не заставляю..."
05.12.2011  ailev.livejournal.com/966480.html  "Дошкольная алгоритмика  Вчера началась и будет до 10 декабря 2011г. идти computer science education week ( ailev.livejournal.com/965761.html). Я уже сегодня выполнил кусочек плана, написал про освоение современного моделирования данных с использованием ISO 15926 ( dot15926.livejournal.com/27293.html). Завтра вечером -- участие в семинаре по дошкольной алгоритмике, и я сформулировал к этому семинару несколько тезисов:
1. Общественное неприятие дошкольной алгоритмики
Алгоритмика для маленьких детишков -- это фронтир, причем не только технологический, но и социологический. Я помню, что в 1985 году школьная алгоритмика воспринималась как что-то абсолютно нереальное, типа поворотов рек. Дело было даже не в отсутствии компьютеров (первый персональный компьютер IBM появился только в 1980 году, и в 1985 году речь шла только о каких-то восьмибитных машинах для средней школы, но и их не было. 16 бит появились только к концу восьмидесятых). Проблема была в отсутствии учителей, в отсутствии методик, в понимании полной неадекватности опускания в школу такой сложной исследовательской еще на тот момент дисциплины, как алгоритмика.
Все так и оказалось: толковые учителя школьной информатики (под которой часто скрывается не алгоритмика, а "библиотечная информатика") в массе отсутствуют до сих пор, исключения редки и их на все школы явно не хватает, вариантов учебников и курсов много -- а толку не очень.
Сегодня точно такой же холодный приём и профанация уготованы дошкольной алгоритмике/информатике. Отсутствие компьютеров сегодня мало кого волнует: все понимают, что если не сегодня, то через пару лет и железо и софт будут. А вот отсутствие надлежащих воспитателей в детских садиках (первые эксперименты показывают: вполне осмысленно начинать с шестилеток) и учителей начальной школы ничем не хуже, чем отсутствие надлежащих учителей средней школы в середине 80-х. Ну, и ровно такой же интеллектуальный ступор при обсуждении опускания такой сложной дисциплины, как алгоритмика из седьмого класса в подготовительный (даже не в первый).
Но есть еще специфика и младшего возраста. Так, моя тёща придерживается легенды, что "если дитенок в раннем возрасте вундеркинд -- то потом он непременно сдуется в очень посредственного человека". Я не далее как три дня назад предложил тёще эксперимент: она приводит пример хоть каких-нибудь конкретных вундеркиндов (с фамилиями), которые потом "сдувались в посредственность", а я взамен привожу на каждую такую фамилию пять фамилий вундеркиндов, которые вырастали далее академиками и нобелевскими лауреатами. Ибо мне в жизни больше встречались книжки типа "Я -- вундеркинд" Ноберта Винера, чем книжки про то, как очень талантливые дети вдруг становились посредственностями (хотя я понимаю, что про таких людей книжек не пишут).
Я думаю, что тёща является просто выразителем настроений огромного количества людей -- и само словосочетание "дошкольная алгоритмика" будет у всех этих людей вызывать рефлекс типа "не делайте из людей вундеркиндов, чтобы потом они были здоровенькими и успешненькими". Я даю гарантию, что пара миллионов тёщ (многие из которых работают в образовании) не отпустят своих деток на какие-то там занятия алгоритмикой в силу именно этой причины. Некоторые самые образованные из них приплетут при этом Пиаже (который говорил, что мозги дитенков полностью не созревают для сложной логической работы вплоть до 11 лет), а большинство даже этого не будут делать -- скажут "дайте малышу счастливое детство, не грузите его! Это даже для взрослых детей сложно! Не нужно из ребенка делать вундеркинда, сломается -- потом ведь не починишь!".
Я бы адресовал эту тему "не нужно делать из детей вундеркиндов" специально, все эти легенды нужно явно развеивать. Это требует какого-то чуть ли не "пиарного" ответа, преодолевающего эти предрассудки полезности позднего интеллектуального развития по сравнению с вредом раннего.
Мой пойнт тут в том, что сломаться-спиться может и взрослый талантливый человек, это не вопрос. Точно так же талантливый и сообразительный дитенка может и сам просачковать своё образовательное счастье, и подходящие педагоги могут ему помочь расслабиться и забыться -- и превратиться в серость. Лонгитюдных исследований, подтверждающих тупость и серость выросших деток, много и радостно занимающихся в раннем детстве математикой, логикой, информатикой, я не знаю. Но я точно знаю, что занятия по предмету "окружающий мир" (я видел несколько учебников -- все они одинаково ужасны), при которых первоклассник должен знать, что такое копытень, вполне могут приводить детей к тупости и серости.
Если писать нормальную программу исследований по "Дошкольной алгоритмике" (не говоря уже о всей информатике), то придется заниматься и этими вопросами просвещения взрослых -- равно как и многими другими. В дошкольной алгоритмике, как когда-то в школьной, диапазон непонятного простирается от психотехник до содержания предмета, от пиара и чуть ли не политтехнологий до экономики образования, от парадигм программирования до геймдева...
Я вводил бы два критерия успешности любого курса, и не только дошкольной алгоритмики:
А) пониженный возрастной/знаниевый ценз (красивым примером тут является ПиктоМир перед КуМиром, который делает именно это: алгоритмику тщательно очистили от всего ненужного, без утери главного -- и это стало доступно дошкольникам)
Б) сокращенное время подготовки по сравнению с "традиционным" (так, моделирование тай цзи цюаня Бориса Майера даёт где-то пятикратное ускорение по сравнению с традицией, а психонетика Олега Бахтиярова дает где-то от двух до пяти крат ускорение).
2. Способности
У меня про способности есть личная история: я слыхом не слыхивал о программировании, пока не поступил в университет. А потом на первом же занятии по программированию выяснилось, что мне практически не требуются разъяснения преподавателя, и первую в своей жизни программу (сразу с вложенными циклами -- подсчет молекулярных весов разных углеводородов) на перфокартах я подготовил сразу без ошибок. Мне всегда казалось странным, что другие студенты вообще с трудом могли писать эти вложенные циклы даже после нескольких занятий.
Но обычно важны не столько способности, но и как преодолеть их отсутствие: грамоте-то и арифметике учат всех, а не только способных!
Когда-то Белла Котик, изучавшая способности к иностранным языкам, сделала тест, в котором в разные уши одновременно говорились разные слова -- а мерялось их распознавание. Этот тест оказался удивительно прогностичным: он позволял по измеренной лево-правополушарной асимметрии давать рекомендации, кому как лучше учить иностранный язык, и эти рекомендации были удивительно действенны -- можно было сказать, что тест мерял способности для разных методов обучения.
Нам бы в случае программирования тоже что-то такое психофизиологическое найти.
Есть такая штука как "нейрокоррекция", которая заявляет о том, что набором специально подобранных упражнений можно развить те или иные нейромеханизмы (от концентрации внимания до речевых центров). Это очень похоже на то, что делала Белла Котик, только за прошедшие двадцать лет в мозгу от различения всего двух частей -- полушарий -- пришли к необходимости учитывать индивидуальные особенности развития многих разных частей мозга, а также связей между этими зонами.
Если бы удалось мэппировать способности программирования (определяемые диагностикой типа использованной Белой Котик, или используемые сейчас нейрокорректорами) на какие-то нейромеханизмы, то можно было бы думать о создании кастомизированного для каждого ученика наборе упражнений. Пока же эти упражнения в центрах нейрокоррекции делают главным образом для русского языка и арифметики (и, говорят, хорошо помогает). Не удивлюсь, если эти упражнения можно будет упаковать в форму какой-то компьютерной игры (возможно, с контроллерами от Wii или Kinect). И не удивлюсь, если будут существенные возрастные особенности как раз с точки зрения формирования этих механизмов (и в отличие от философствований Пиаже это можно будет как-то померять более аналитически и непосредственно).
Конечно, для этого нужно было бы понять, что делает программист "внутри головы" -- какова внутренняя кодировка понятий, удобная для каких-то мыслительных операций. Так, у хороших музыкантов музыка обычно "видится" в виде какой-то звуковысотной линии. А у кого не "видится" такой линией -- у них плохая память на мелодии. Ментальное пространство обычно довольно сложно организовано и мало кто занимается тем, как оно там устроено -- а ведь этому тоже можно учить! См., например, мой опыт отчуждения такого опыта: openmeta.livejournal.com/14954.html (опять же, пардон за много терминологии из другой предметной области).
Если не понимать, что именно даёт "талант" к той или иной деятельности (в нашем случае -- программированию, причем у самых маленьких деток), то мы переходим в деле дошкольной информатики "охоте и собирательству" талантов, что тоже хорошо, но только для спортивных достижений. А нам бы нужно переходить к осёдлому земледелию и выращиванию талантов на потоке -- чтобы уровень действительно талантов был бы вообще невообразимым.
Проблема только в том, что даже для такой крошечной исследовательской программы нужны специалисты самых разных профилей и кто-то типа системного инженера ("системного учёного", хи-хи) для удержания междисциплинарной целостности...
В принципе, есть в летаргическом сне сообщество openmeta -- там несколько сотен человек, из них много увлекающихся психологией, психопрактиками и нейронаукой программистов. Можно было бы развернуть какие-то исследования там, но труд по реанимации тамошней жизни мне представляется сейчас неподъемным."
*

содержание журнала  dar-aya.livejournal.com/5085.html

система обучения

Previous post Next post
Up