Ко мне на занятие приходит новый мальчик лет 10 лет, Максим. Перед началом он презрительно осматривает группу ребят 7-9 лет, все младше него. И говорит: Антон, ну а Скретч же уже нигде не используют, сейчас же на более сложных языках детей учат программировать?
Я: есть и другие языки, а ты на Скретче умеешь работать?
Он: Ну да, делал программы.
Я: отлично, садись, посмотрим что ты умеешь.

Максим садится рядом с 8-летним Сережей, фанатом наших занятий. Сегодня задание такое: я словесно описываю программу, а ребята сами ее должны сделать. Тренируем внимание к требованиям и заодно проверяем текущие навыки.

Программа такая: наверху экрана плавают 5 воздушных шариков, внизу — ракета, которой мы управляем клавишами влево-вправо. По нажатию на пробел ракета должна вылетать наверх и лопать шарики. Когда все шарики лопнули, показать экран победы.

Поехали!

Ребята бросаются в бой — кто-то начинает с расстановки шариков, кто-то с ракеты и ее управления. Через несколько минут показывают свои программы — шарики висят, ракета ездит влево-вправо.
Замечаю, что новенький Максим сидит, в ступоре глядя, как Сережа рядом быстро делает игру.
— Не пойму, с чего начать?
Я подсказываю — выбери шарики, задай им положение на сцене.
— А как это сделать?
Показываю…
— А как стрельбу сделать?
Рассказываю — делаешь отдельный объект-пулю, она невидимо перемещается за ракетой и следит за нажатием пробела — когда нажимаем, она летит наверх.
— Ничего не понял — как невидимо перемещается, как летит?

В итоге намучался я с этим опытным мальчиком. Как делать плавное движение — не знал, с координатами не разобрался, клонирование не понял. Оказалось, что в такой простой штуке, как Скретч, есть вещи, которых парень не знал. И это базовые вещи — движение, управление объектами…

Зато в конце занятия он начал мне рассказывать, что создает сервер для Майнкрафта.

Такую точку зрения среди ребят я встречаю не первый раз. Что визуальное программирование, где нужно блоки перетаскивать — это просто стыд и позор, ясельная группа:

А вот сервера создавать — для GTA или Майнкрафта — это настоящее крутое программирование.

Действительно ли Скретч — бесполезная трата времени и нужно ли переключать детей на более сложные вещи? Давайте смотреть.

Мнимая крутизна

Что означает, что ребенок создает игровые сервера? Говоря простыми словами, он берет готовую игру, копирует ее и меняет настройки. Что меняет:
— Притяжение (гравитацию)
— длительность дня
— силу удара персонажей
— количество жизней у героя

И задача программирования в том, что ребенок в четко оговоренном месте меняет несколько чисел.
/time set day — и в Майнкрафте наступил день.
/summon horse — и уже бежит квадратная лошадь

Вроде бы в этом нет ничего серьезного? Да, серьезного в выполнении простых команд ничего нет. Умственных усилий при таком программировании почти не прикладывается. Но у ребенка перед глазами совсем другая игра, к которой он приложил руку. И ему кажется, что он сам создал весь этот новый мир. Это открывает ребенку новые возможности:
— Можно говорить друзьям “я вчера новый сервер Майнкрафта сделал”
— Можно считать себя настоящим программистом, который пишет код
— Помечтать о том, что в его версию майнкрафта будут играть тысячи человек и на этом можно заработать

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

Пар из ушей

Теперь подсмотрим за ребенком, который делает игру в Скретче. Игра такая — мы играем за башню, на которую нападают монстры. Монстры лезут с разных сторон, а мы должны стрелять по ним.

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

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

Так, теперь стрельба. Делаю пулю, пусть следит за направлением мышки. Делаю обработчик клавиши пробел — теперь пуля вылетает в сторону курсора мыши. Отлично!

Непорядок, у нас получается только одна пуля, которая все время вылетает при выстреле. Получается, нельзя выстрелить, пока пуля не улетела за край экрана? Придется заморочиться с созданием клонов — пусть летят клоны, настоящая пуля будет скрыта.
А лучше сделать перерыв, чайку попить…

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

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

Пар из ушей во время программирования — это нормально, так и должно быть. Когда дети пишут программы на Scratch, то пар идет.

Бесполезное развлечение?

Теперь о том, полезны ли занятия Скретчем с детьми или это баловство?

Давайте начнем с плохого, с минусов Скретча:

👎 Из-за блоков программы получаются громоздкими. Блоки с движениями героя и сменой его внешности сразу занимают много места. Если же мы начинаем добавлять разные штуки вроде переходов по уровням или стрельбы, программа быстро вырастает.
Дети могут потеряться в программе, их нужно специально учить организовывать свой код. Иначе получится свалка из разных блоков.
👎 Перетаскивание блоков утомляет. Чтобы собрать простое движение героя, нужно сбегать за разными блоками — движение, проверки на нажатие клавиши, циклы. Первые программы получаются медленно. Должно пройти время прежде чем ребенок начнет быстро ориентироваться в готовых кирпичиках команд.
👎 Сложно сделать что-то сложное. В Скретче нет готовых игровых блоков — физики игры, управления персонажами, собиранием предметов и так далее — все нужно делать своими руками. Поэтому выйти на новый уровень, создать сложные и интересные игры не так-то просто. Подавляющее большинство детских проектов однообразны и примитивны — догонялки, стрелялки, кликеры. Создавать что-то сложнее детям самим непросто, их нужно этому специально учить.

Теперь поговорим о хороших сторонах Скретча.

⭐ Главная польза в том, что во время занятий ребенок активно думает. Ему приходится. Ничего не делается само собой. Чтобы герой плавно двигался, прыгал с одной стороны карты на другую, выпускал по несколько пуль сразу — все это нужно делать своими руками. Использовать клоны или нет? Как перебрасывать героя по координатам? Масса задач и проблем, которые приходится решать здесь и сейчас. Отличная тренировка для мозгов.

⭐ Дети осваивают простые инструменты компьютерного языка — циклы, условия, алгоритмы. Да, это происходит в визуальном виде, вместо настоящего

for (int i = 0; i < 10; i++) {
hero.Move(10);
}

Ребенок использует два готовых блока — цикл и движение:

 

 

 

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

⭐ Скретч работает в браузере и офлайн. Ребенок может делать свои проекты с любого компьютера, где есть интернет. И преподаватель их может удаленно посмотреть и прокомментировать. Или даже подправить. А если нет интернета, можно создавать игры в офлайн-программе — в отпуске на море, в дороге, школе. Я сам не раз создавал игры в самолете. Проекты ребенка можно показывать в школе, выкладывать на сайте, посылать друзьям.

⭐ Учит бороться с трудностями. Пока сделаешь программу — десять раз вспотеешь.. Программирование для майнкрафта — это как из 5 панелей сложить дом. Скретч — это ножовка, топор и куча бревен, а дом строишь сам. Это реальный опыт преодоления неудач и сложностей, который очень благотворно влияет на детей. Ребенок с таким опытом преодоления рвется дальше в бой и не боится трудностей.

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

⭐ Градусы и координаты, синусы и притяжение — математика и физика начинают помогать делать компьютерные игры. Ребенок и лучше понимает эти абстрактные вещи, и по-другому к ним относится. Скретч здесь хорошее подспорье, чтобы лучше освоить эти школьные понятия.

 

Что в итоге?. Я вижу Скретч отличным стартом в мир программирования для детей 7-12 лет. На нем можно детям быстро сделать простые игры. А дальше на выбор — либо делать сложные игры либо изучать скриптовые языки вроде Python или Javascript.

А какой у вас опыт — пробовал ли ваш ребенок программирование? На чем занимались, понравилось или нет? Расскажите, пожалуйста.