Скретч — это визуальная объектно-ориентированная среда программирования для обучения школьников младших и средних классов. Название произошло от слова scratching — техники, используемой хип-хоп-диджеями, которые крутят виниловые пластинки взад-вперёд руками для того, чтобы смешивать музыкальные темы.
Скретч создан как продолжение идей языка Лого и конструктора Лего. Написан на языке Squeak. Скретч разрабатывается небольшой командой программистов для детей в Массачусетском технологическом институте. Текущая версия — 2.0, выпущена 9 мая 2013.
В 2008 году Скретч был портирован для микроконтроллерного модуля Arduino. Проект носит название S4A.
Программы на Скретче состоят из графических блоков, подписи к которым зависят от выбранного для интерфейса языка. Может быть выбран один из 50 языков интерфейса, включая русский. Для подключения интерфейса на новом языке используются стандартные gettext файлы.
Основными компонентами Скретч-программы являются объекты-спрайты. Спрайт состоит из графического представления — набора кадров-костюмов (англ. costume) и сценария-скрипта. Для редактирования костюмов спрайтов в скретч встроен графический редактор (англ. Paint Editor). Действие Скретч-программы происходит насцене (англ. stage) размером 480×360 (условных) пикселей с центром координат в середине сцены.
Для программирования сценариев в скретче используется drag-and-drop-подход: блоки из палитры блоков перетаскиваются в область скриптов.
По функциональному назначению блоки делятся на 8 групп, принадлежность блока к той или иной группе обозначается его цветом.
Группа | английское название | Цвет | Примечание |
---|---|---|---|
Движение | movement | синий | управляют движением спрайта |
Внешность | looks | сиреневый | управляют внешностью спрайта |
Звук | sound | розовый | управляют звуком спрайта |
Перо | pen | зелёный | используется для черепашьей графики |
Контроль | control | жёлтый | управляющие конструкции, заголовки обработчиков событий |
Сенсоры | sensing | голубой | опрос устройств ввода |
Операции | operators | салатовый | арифметико-логические операции |
Переменные | variables | оранжевый |
У многих блоков имеется редактируемое белое поле для вводимых скретч-программистом параметров.
Блоки бывают трёх видов: блоки стека, блоки заголовков и блоки ссылок.
Блоки стека (англ. Stack Blocks) сверху имеют выемку, а снизу — выступ, их помощью они объединяются в группу блоков, называемую стеком. Стеки можно копировать и перемещать как единый блок. Особой разновидностью блоков стека являются управляющие конструкции, такие как циклы — они имеют С-образную форму, и могут охватывать собой вложенный стек скретч-блоков.
Блоки заголовков (англ. Hats) имеют выпуклый верхний край и выступ для объединения снизу — они образуют заголовки скретч-стеков. К блокам-заголовкам относятся блоки «когда …» (англ. when …) из группы «Контроль», позволяющие организовать обработчики сообщений: внешних — от клавиатуры и мыши, и внутренних — передаваемых между спрайтами и позволяющих объектно-ориентированное программирование в smalltalk-стиле.
Наконец, блоки ссылок (англ. Reporters) предназначаются для заполнения внутренних полей других блоков.
Язык скретч (как и Лого) оперирует числами, текстовыми строками, логическими значениями, а также списками, играющими роль динамических массивов.
Хотя архитектура Скретч-программ в виде набора спрайтов Скретча, обменивающиеся друг с другом событиями, напоминает объектно-ориентированную,Скретч не является объектно-ориентированным языком: в нём (ни в каком виде) нет механизмов наследования (в последних версиях расширенного диалекта скретча BYOB введено прототипное наследование).