27 Ноя 2013

Блокли идет в школу

Блокли идет в школу

Начну с определений.  Blockly — визуальный язык программирования с веб-интерфейсом. Создание программы осуществляется путём соединения блоков. Blockly является почтенным представителем семейства визуальных языков, прародителем которого является мой любимый . Разработчики родства не скрывают и источником вдохновения считают  похожий проект AppInventor, изначально развиваемый для платформы Android. При этом сам AppInventor в свою очередь родился исключительно по причине успеха Scratch.

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

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

Scratch увлекает и требует свободы. Школа требует формализированных упражнений, которые можно корректно оценивать.

И вот тут нам на помощь приходит Blockly.

На первый взгляд Blockly очень похож на Scratch — те же визуальные блоки, тот же принцип соединения.

Blockly  Блoкли    Черепашка

 

Однако это только на первый взгляд. Приглядевшись, сразу виден аскетичный интерфейс Blockly. Это — не игрушка, и не инструмент для создания игрушек. Вообще говоря, Blockly используется для решения вполне себе «взрослых» задач. Но об этом — чуть позже.

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

Blockly  Блoкли    Лабиринт

Собственно, задание «Лабиринт» показывает, как может строиться обучение при помощи Blockly: ученик шаг за шагом выполняет задания, сложность которых нарастает при продвижении к финишу, в результате чего в конце мы имеем вполне осмысленное задание на создание универсальной программы прохождения любого лабиринта.

Для того, чтобы понять, насколько разными могут быть подобные задания, взгляните на скриншот  головоломки по странам и флагам:

Blockly  Блoкли    Головоломка

Пока что не очень понятно, как такие задания делаются. Но на странице Blockly в сети Google+ с завидной регулярностью появляются все новые и новые задания. Сейчас доступны несколько таких заданий, специально разработанных авторами для обучения:

Учитесь использовать интерфейс Блокли.
Используйте Блокли, чтобы пройти лабиринт.
Используйте Блокли для рисования.
Постройте график функции с Блокли.
Переведите программу Блокли на JavaScript, Python или XML.
Решите математическую задачу с одной или двумя переменными.
Создайте свои блоки, используя Блокли.

 

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

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

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

А это уже  создает условия для реализации самых разных подходов по дальнейшему развитию проекта. Например,  разработчики могут использовать Blockly для быстрого создания отдельных частей больших и сложных программ. которые   затем, после компиляции, например в Python, могут дорабатываться уже на Python’e , или даже попросту вставляться в уже готовый проект в целях его расширения.

Разработка осуществляется непосредственно в браузере, в процессе разработки программы её промежуточные результаты сохраняются и вновь загружаются в формате XML. Google Blockly поддерживает не только обычные циклы и ветвления, но и рекурсию. В ближайшее время планируется реализовать: элементы отладки, поддержку мобильных устройств, работу с курсором для лучшего удобства работы, генерацию кода для устройств на базе Arduino. Будут добавлены простейшие элементы событийно-ориентированного программирования – вызов обработчиков при возникновении определенных ситуаций или изменений. В самое ближайшее время планируется существенно улучшить документацию, одновременно добавив множество новых блоков, а также реализовать возможность передачи параметров в процедуры и функции. Над логическими блоками (или сразу массивом из блоков) будет обеспечен набор визуальных операций drag & drop, cut, copy и paste.

В завершение — еще несколько примеров, разработанных Paul Yorke

Blockly Examples: (All fixed!- July 21, 2013)

Planets & moon — Turtle Graphics
Back-words — Code
12 squares — Turtle Graphics
Add 2 numbers — Code
Square function — Turtle Graphics
Spell the word — Code
Draw a circle — Turtle Graphics
Find the word — Code
Color blend example (not my code) — Turtle Graphics
Cross hairs  — Turtle Graphics
Concentric Circles — Turtle Graphics

Метки:, ,

,