Как привить ребенку навыки программирования? Согласитесь, в доходчивой форме рассказать, допустим, пятиклассникам об основах программирования, пусть даже на Бейсике, довольно затруднительно. Мало просто показать и объяснить работу различных операторов, циклов, условий и т. д. Нужно научить детей мыслить особым образом, понимать суть команд и алгоритмов. Значит, преподавание должно вестись максимально наглядно, а ученики — иметь возможность немедленно видеть результат своих действий.

Именно такие задачи стояли перед группой ученых Массачусетского технологического института (MIT), создавших несколько лет назад среду программирования Scratch. «Нацарапать» (это одно из значений слова scratch) программу в ней может даже ребенок, для этого совсем не обязательно обладать серьезными знаниями программирования.

Принцип, заложенный в Scratch, довольно прост и известен не только преподавателям информатики, работавшим со средой «Лого», но и детям, знакомым с конструктором «Лего».

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

Программирование = творчество

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

Благодаря простоте языка и идеологии в целом Scratch позволяет легко научиться основам программирования. Задавая поведение своих персонажей в программе, ребенок изучает такие фундаментальные понятия, как циклы и условия. Что может быть проще, чем конструкция типа:  

Это означает, что в течение всего времени работы программы объект должен через каждые два шага менять угол движения на случайную величину в пределах от –20 до 20°, а при достижении края экрана «отразиться» от него.

В среде Scratch это представляется еще более наглядно:

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

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

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

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

Из чего состоит среда

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

Управление поведением объектов осуществляется с помощью команд. Все команды языка разбиты на соответствующие группы, каждая из которых имеет в интерфейсе среды определенный цвет. Таких групп в языке восемь: синяя содержит команды перемещения,
лиловая — команды управления звуком, фиолетовая  — команды смены внешнего вида объекта, желтая — операторы условий и циклов, голубая  — сенсоры (команды управления мышью и координатами), зеленая  — операции вычисления, темно-зеленая — команды рисования и оранжевая — команды управления переменными.

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

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

В этой программе все предельно просто. Нам необходим фон с красной полосой внизу, обозначающей пол, и два объекта — мяч и площадка.

Каждый из объектов имеет свой сценарий, записываемый в соответствующем ему окне. Задача игрока — двигать «ракетку» мышью, пытаясь поймать мяч, а значит, ее поведение будет описано всего одной командой:

Это означает: установить координаты ракетки по горизонтали равными соответствующим координатам мыши, т. е. следовать за указателем мыши.

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

Затем мячик должен отскакивать от стен, т. е. краев экрана. Такое поведение задается оператором условия if on edge, bounce (если достиг края, отразиться) из желтой группы. Ну и самое, пожалуй, сложное — определить действие мячика при ударе ракетки. Наш объект должен отскочить от ракетки и полететь в сторону под произвольным углом:

В самой же среде Scratch описание поведения мяча выглядит вот так:

Пожалуй, единственный недостаток Scratch, оставляющий его за кругом профессиональных средств разработки, это невозможность создавать исполнимые модули. Все проекты выполняются только в среде. Конечно же, ими можно делиться с другими пользователями, т. е. выкладывать их на сайте Scratch (http://scratch.mit.edu ). При этом запустить проект можно будет непосредственно из браузера. Вот только для просмотра понадобится установить на компьютере среду выполнения Java.

Стоит отметить, что Scratch полностью бесплатен, его можно свободно загрузить с сайта разработчиков, причем как версию для Windows, так и для Mac OS. Программа (интерфейсная часть и сам язык) переведена на 18 языков, но русского в этом списке пока нет. Scratch — проект с открытым исходным текстом, который также доступен в Интернете. Но само приложение разрабатывается маленькой командой ученых из MIT Media Lab.

Последнюю версию Scratch (на английском языке) для Windows
вы найдете на «Мир ПК-диске».