Научная статья на тему 'РЕАЛИЗАЦИЯ ПАРАЛЛЕЛЬНО-КООПЕРАТИВНОГО ВЫПОЛНЕНИЯ ЗАДАНИЙ В УЧЕБНОЙ СИСТЕМЕ ПРОГРАММИРОВАНИЯ ДЛЯ ДОШКОЛЬНИКОВ И МЛАДШИХ ШКОЛЬНИКОВ'

РЕАЛИЗАЦИЯ ПАРАЛЛЕЛЬНО-КООПЕРАТИВНОГО ВЫПОЛНЕНИЯ ЗАДАНИЙ В УЧЕБНОЙ СИСТЕМЕ ПРОГРАММИРОВАНИЯ ДЛЯ ДОШКОЛЬНИКОВ И МЛАДШИХ ШКОЛЬНИКОВ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
47
8
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КООПЕРАТИВНЫЕ ИГРЫ / ПИКТОМИР / МЕТАМИР / СЕТЕВОЕ ПРОГРАММИРОВАНИЯ / ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ / COOPERATIVE GAMES / PIKTOMIR / METAMIR / NETWORK PROGRAMMING / PARALLEL PROGRAMMING

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Бесшапошников Н.О.

В статье описана архитектура и реализация модуля для параллельно-кооперативного выполнения заданий в системе программирования ПиктоМир. Данный модуль адаптирован для использования дошкольниками и младшими школьниками как самостоятельно, так и в рамках проведения школьных олимпиад с помощью системы МетаМир. Рассмотрен метод для решения проблем синхронизации параллельного выполнения программ в рамках системы ПиктоМир.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Бесшапошников Н.О.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

PERFORMANCE OF PARALLEL-COOPERATIVE TASKS IN EDUCATIONAL SYSTEM OF PROGRAMMING FOR PRESCHOOLERS AND PRIMARY SCHOOL PUPILS

The article describes the module architecture and implementation for parallel-cooperative tasks in the PiktoMir programming system. This module is adapted for use by preschool children and primary school pupils both individually and during school Olympiads with the help of the MetaMir system. The article considers the method for solving synchronization problems of parallel execution of programs within the PiktoMir system as well.

Текст научной работы на тему «РЕАЛИЗАЦИЯ ПАРАЛЛЕЛЬНО-КООПЕРАТИВНОГО ВЫПОЛНЕНИЯ ЗАДАНИЙ В УЧЕБНОЙ СИСТЕМЕ ПРОГРАММИРОВАНИЯ ДЛЯ ДОШКОЛЬНИКОВ И МЛАДШИХ ШКОЛЬНИКОВ»

УДК 519.682:372.8+004.421:372.8

РЕАЛИЗАЦИЯ ПАРАЛЛЕЛЬНО-КООПЕРАТИВНОГО ВЫПОЛНЕНИЯ ЗАДАНИЙ В УЧЕБНОЙ СИСТЕМЕ ПРОГРАММИРОВАНИЯ ДЛЯ ДОШКОЛЬНИКОВ И МЛАДШИХ ШКОЛЬНИКОВ

Н. О. Бесшапошников

Федеральный научный центр Научно-исследовательский институт системных исследований РАН, nbesshaposhnikov@vip. niisi. ru

В статье описана архитектура и реализация модуля для параллельно-кооперативного выполнения заданий в системе программирования ПиктоМир. Данный модуль адаптирован для использования дошкольниками и младшими школьниками как самостоятельно, так и в рамках проведения школьных олимпиад с помощью системы МетаМир. Рассмотрен метод для решения проблем синхронизации параллельного выполнения программ в рамках системы ПиктоМир.

Ключевые слова: кооперативные игры, ПиктоМир, МетаМир, сетевое программирования, параллельное программирование.

PERFORMANCE OF PARALLEL-COOPERATIVE TASKS

IN EDUCATIONAL SYSTEM OF PROGRAMMING FOR PRESCHOOLERS AND PRIMARY SCHOOL PUPILS

N. O. Besshaposhnikov

System Research Institute, Russian Academy of Sciences, nbesshaposhnikov@vip. niisi. ru

The article describes the module architecture and implementation for parallel-cooperative tasks in the PiktoMir programming system. This module is adapted for use by preschool children and primary school pupils both individually and during school Olympiads with the help of the Met-aMir system. The article considers the method for solving synchronization problems of parallel execution of programs within the PiktoMir system as well.

Keywords: cooperative games, PiktoMir, MetaMir, network programming, parallel programming.

Педагогическая практика учит, что коллективные занятия, будь то соревновательные или кооперативные, часто более продуктивны, чем индивидуальные. Неудивительно, что в процессе обучения алгоритмике и программированию младших школьников и дошкольников, выполнение индивидуальных заданий сочетается с выполнением заданий коллективных. Например, в методическом пособии [1] по проведению цикла «Алгоритмика для дошкольников», коллективные активности предусмотрены на пяти занятиях из 17. Дети соревнуются в составлении наиболее сложного лабиринта, проверяют друг у друга правильность выполнения задания, сравнивая «на просвет» нарисованные на бумаге картинки, разгадывают шифры, разбившись на пары. Однако все эти коллективные активности имеют место в бескомпьютерной части занятий, а работы по составлению программ проводятся индивидуально.

Коллективные активности младших школьников и дошкольников легко организовать в форме соревнования, олимпиады по составлению программ, но в таком подходе есть «подводные камни».

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

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

Можно перейти от одномоментных соревнований с ранжированием результатов к периодическим квалификационным испытаниям с бинарной оценкой «выполнено» - «не выполнено». Такой подход дает ребенку возможность достичь желаемого результата в процессе нескольких попыток, и, тем самым, смягчает психологическую напряженность каждого квалификационного испытания, в какой-то степени снизит конкуренцию.

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

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

В настоящей статье предлагается развитие системы ПиктоМир [2-3], решающее эту задачу. Доработанная система ПиктоМир может использоваться совместно с системой Ме-таМир для проведения командных соревнований и олимпиад по алгоритмике для дошкольников и младших школьников. Возможности кооперативного выполнения задания будет предоставлять и смешанная пиктограммно-текстовая учебная система программирования ПиктоМир-К.

1. Неформальное описание правил кооперативного программирования в системе ПиктоМир. Структура кооперативного (командного) задания. Кооперативные задания неформально имеют следующую структуру. Задание рассчитано на выполнение командой с заранее фиксированным числом членов (минимально - два). Задание предоставляет в распоряжение каждого члена команды виртуального робота. Задана одна общая обстановка, в которой эти роботы синхронно, такт за тактом, по одним и тем же часам выполняют индивидуально составленные членами команды ПиктоМир-программы. Каждый член команды составляет программу, в которой можно использовать команды управления собственным роботом, но нельзя использовать команды управления «чужими» роботами. Роботы могут быть разных типов или одного, но в любом случае разные роботы должны быть графически различимы на экране при показе текущей обстановки в процессе выполнения

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

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

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

Этап подготовки (редактирования) кооперативной программ: каждый член команды составляет/редактирует свою индивидуальную программу, управляющую приписанным к данному члену команды роботом. Закончив составление/модификацию программы управления собственным роботом, участник сообщает об этом ПиктоМиру, эта информация становится доступной остальным членам команды. Когда составление/модификацию индивидуальной программы закончит последний член команды, кооперативная программа готова к запуску, о чем ПиктоМир оповещает всех членов команды. Получив от каждого участника команды разрешение на запуск, ПиктоМир переходит к этапу выполнения кооперативной программы.

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

Ввиду ориентации заданий на дошкольников и младших школьников условия и правила проведения параллельной работы индивидуальных программ максимально упрощены. По этой причине никаких примитивов синхронизации поведения роботов не предусмотрено. Программа каждого участника может по команде-запросу получить информацию о глобальной обстановке в окрестности управляемого этим участником робота, но передать явно какую-либо информацию другим программам не может. Неявная передача информации возможна путем изменения глобальной обстановки. Попытки нескольких роботов воспользоваться одним и тем же ресурсом глобальной обстановки в одних ситуациях могут оказаться успешными, в других - привести к отказу. Что именно произойдет в каждом конкретном случае, зависит от «Правил использования обстановки», которые заранее сообщаются членам команды. Например, попытка двух роботов зажечь один и тот же фонарь может быть предусмотрена «Правилами» как допустимая, попытка двух роботов перейти в одну и ту же клетку может быть предусмотрена «Правилами» как недопустимая и приводить к отказу, в то время как попытка робота А на данном такте перейти в клетку, которую в этом же такте покидает робот Б, может быть предусмотрена «Правилами» как допустимая.

Предусмотренный «Правилами» отказ относится к процессу исполнения кооперативной программы программ в целом. В случае отказа одновременно прекращается выполнение всех индивидуальных программ.

Правила использования обстановки. Эти правила описывают: успешность или неуспешность попытки выполнения очередного такта; графическое изображение результата неуспешной попытки, например, что должно быть нарисовано, если:

а) один робот сделал допустимый шаг, а другой «разбился об стену»;

б) два робота попытались перейти в одну и ту же клетку;

в) один робот приказал зажечь фонарь, а другой робот приказал этот же фонарь погасить, и т. д.

Формально, попытка выполнения очередного такта кооперативной программы представляет собой набор:

(обстановка, включая положения и состояния всех роботов;

очередная команда, посылаемая роботу 1;

очередная команда, посылаемая роботу 2;

••• )

Задание, как правило, допускает различные варианты разделения работы между участниками, и для успешного выполнения задания участники команды должны до этапа составления кооперативной программы договориться о выборе варианта деления. Договоренности проводятся членами команды вне программы ПиктоМир, с помощью других программных систем или непосредственно 1. Пример кооперативного задания для команды из двух участников, управляющих роботами «Двигун» и «Тягун», перемещающими в нужные места ящики и бочки на складе, приведен в прил.

2. Описание подсистем подготовки и выполнения кооперативных заданий. Подсистемы подготовки и выполнения кооперативных заданий являются модулем системы Пик-тоМир, реализованным на языке С++ с помощью кроссплатформенной библиотеки eNet [4]. Она позволяет реализовать легковесное клиент-серверное взаимодействие посредством протокола ЦОР с поддержкой гарантированной доставки пакетов. Вся сетевая активность происходит в локальной сети.

Данные подсистемы можно условно разделить на три части:

1. Система непосредственной связи и синхронизации действий между учениками.

2. Система «управления классом» - специальным модуль, доступный учителю, позволяющий контролировать кооперативную деятельность учеников.

3. Система самостоятельного поиска партнера для прохождения кооперативного задания.

Далее в статье будет описана только первая часть.

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

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

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

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

Реализация этапа выполнения. Когда все участники кооперативной игры реализовали свои программы и подтвердили, что готовы к выполнению, система дополнительно проводит синхронизацию программ и одновременно всем передает сообщения для начала выполнения задания в системе ПиктоМир. Выполнения происходит локально на каждом устройстве, ввиду того, что они могут принципиально отличаться по характеристикам, и это могло бы привести к графическим неудобствам.

После этапа компиляции программ учеников, подробно описанного в статье [5], и начала их исполнения могут получиться рассинхронизации в тактах (системы исполнения инструкции, а не роботов) их исполнения. Например, это может произойти из-за использования циклов и условий в разных местах программы. Так как со стороны дошкольника или школьника важна только графическая интерпретация выполнения, то имеет смысл синхронизировать только на этапах выполнения конкретных действий робота, например, движение вперед.

1 Например, обмениваясь сделанными карандашом на бумаге рисунками, изображающими желаемые состояния обстановки в различные моменты выполнения кооперативной программы.

Так как каждый робот хранит состояние о том, проигрывается ли им сейчас анимация, то возможна синхронизация для одновременного начала действии и удержания тактов выполнения для одновременного их конца. Рассмотрим на схематичном примере:_

Программа робота 1 Программа робота 2

1. <— 1. <—

2. подготовка цикла 2. вперед

3. вперед 3. налево

4. проверка условия 4. направо

5. условный переход на 1

1. подготовка цикла <— Ожидание

2. вперед

3. проверка условия

4. условный переход на 1

1. подготовка цикла 1. вперед <—

2. вперед <— 2. налево

3. проверка условия 3. направо

4. условный переход на 1

Ожидание завершения всех анимация Ожидание завершения всех анимация

1. подготовка цикла Ожидание

2. вперед

3. проверка условия <—

4. условный переход на 1

1. подготовка цикла Ожидание

2. вперед

3. проверка условия

4. условный переход на 1<—

и так далее.

Настоящая работа выполнена по теме госзадания 2017 г. (№ 0065-2015-0105).

Приложение

Пример кооперативного задания для команды из двух участников, управляющих роботами «Двигун» и «Тягун»

1. Шаблон программы для Тягуна:

2. Шаблон программы для Двигуна:

Для решения этой задачи детям нужно договориться: на сколько клеток тянет ящики Тягун, на сколько клеток двигает Двигун. На поле три ящика и есть три линии, соединящие начальное и конечное положение каждого ящика. Каждый ящик нужно сдвинуть на 4 клетки вдоль своей линии. Часть этой работы должен сделать Тягун, а оставшуюся часть - Двигун. Предположим, что Тягун тянет каждый ящик на одну клетку, а Двигун его двигает на три клетки. В этом случае программы Тягуна и Двигуна могут быть такими:

Программа для Тягуна:

Программа для Двигуна:

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

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

и 1 г Л и и

клетку и уити на вторую линию. Двигун же за 3 секунды дойдет до первой линии и повернется к первому ящику. В этот период роботы друг другу мешать не будут. Ну а дальше, пока Двигун будет работать на первой линии, Тягун успеет закончить работу на второй линии и уйдет на третью. И в это период и позже роботы друг другу мешать не будут. Изобразим это схематически.

После выполнения первой команды: Тягун - тянуть, Двигун - вперед.

■ ■ €)д

X X X

После второй команды: Тягун - направо, Двигун - вперед.

■ ■ Од

От

X X X

После третьей команды: Тягун - вперед, Двигун - вперед.

■ ■ ОД

О т

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

X X X

После четвертой команды: Тягун - направо, Двигун - налево.

□ Од

О т

X X X

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

Можно проверить, что при выполнении программы Тягун получит 3 раза по 7 команд, всего 21 команду и через 21 секунду закончит работу. А Двигун получит две предварительные команды и еще 3 раза по 11 команд, всего 35 команд. Таким образом, Двигун будет продолжать работать в то время, когда Тягун уже будет отдыхать.

Литература

1. Кушниренко А. Г., Леонов А. Г. Райко М. В., Рогожкина И. Б. Методические указания по проведению цикла занятий «Алгоритмика» в подготовительных группах дошкольных образовательных учреждений с использованием свободно распространяемой учебной среды ПиктоМир. URL: https://www.niisi.ru/piktomir/m2016.pdf (дата обращения: 10.10.2017).

2. Кушниренко А. Г., Рогожкина И. Б., Леонов А. Г. ПиктоМир: пропедевтика алгоритмического языка (опыт обучения программированию старших дошкольников). URL: http://ito.edu.ru/sp/SP/SP-0-2012_09_25.html (дата обращения: 10.10.2017).

3. Бесшапошников Н. О., Кушниренко А. Г., Леонов А. Г. ПиктоМир - как и зачем мы учим бестекстовому программированию дошкольников, школьников и студентов педунивер-ситетов. URL: http://2017.secr.ru/program/submitted-presentations/pictomir (дата олбращения: 30.11.2017).

4. Пирс Ч. С. Что такое знак? // Вестн. Томск. гос. ун-та. Сер. Философия. Социология. Политология. 2009. № 3 (7). С. 88-95.

5. Кушниренко А. Г., Леонов А. Г., Ройтберг М. А. Знакомим дошкольников и младших школьников с азами алгоритмики с помощью систем ПиктоМир и КуМир // Тр. НИИСИ РАН. 2017. Т. 5. № 1. С. 134-137.

6. Кушниренко А. Г., Леонов А. Г. Программирование для дошкольников и младших школьников // Первое сент. Информатика. 2011. № 15. С. 20-23.

i Надоели баннеры? Вы всегда можете отключить рекламу.