Скретч (язык программирования)
Скретч (англ. Scratch, МФА:[skræt͡ʃ]) — визуальная событийно-ориентированная среда программирования, созданная для детей и подростков. Название произошло от слова scratching — техники, используемой хип-хоп-диджеями, которые крутят виниловые пластинки вперед-назад руками для того, чтобы смешивать музыкальные темы[2].
Кот «Скретчер» — официальный персонаж в языке программирования Скретч, с которым ассоциируется вся история языка.
Пример программы в Скретч 1.4 (запущен под OS X)
Он создан как продолжение идей языка Лого и конструктора Лего. Скретч 1.4 был написан на языке Squeak, 2.0 и 3.0 ориентированы на работу онлайн. Scratch 2.0 был переписан на Flash и ActionScript. Скретч 3.0 (текущая версия) является улучшенной версией Скретч 2.0 и сделана на HTML5, используя движок WebGL, что даёт ему возможность работать на мобильных устройствах и планшетах. Скретч разрабатывается небольшой командой программистов для детей[3] в Массачусетском технологическом институте. Текущая версия — Скретч 3.0, выпущена в январе 2019 года. В 2008 году Скретч был портирован для микроконтроллерного модуля Arduino. Проект носит название S4A[4].
Программы на Скретче состоят из графических блоков, подписи к которым зависят от выбранного для интерфейса языка. Может быть выбран один из 50 языков интерфейса, включая русский. Для подключения интерфейса на новом языке используются стандартные gettext-файлы.
Скретч (англ. Scratch, МФА:[skræt͡ʃ]) — визуальная событийно-ориентированная среда программирования, созданная для детей и подростков. Название произошло от слова scratching — техники, используемой хип-хоп-диджеями, которые крутят виниловые пластинки вперед-назад руками для того, чтобы смешивать музыкальные темы[2].
Кот «Скретчер» — официальный персонаж в языке программирования Скретч, с которым ассоциируется вся история языка.
Пример программы в Скретч 1.4 (запущен под OS X)
Он создан как продолжение идей языка Лого и конструктора Лего. Скретч 1.4 был написан на языке Squeak, 2.0 и 3.0 ориентированы на работу онлайн. Scratch 2.0 был переписан на Flash и ActionScript. Скретч 3.0 (текущая версия) является улучшенной версией Скретч 2.0 и сделана на HTML5, используя движок WebGL, что даёт ему возможность работать на мобильных устройствах и планшетах. Скретч разрабатывается небольшой командой программистов для детей[3] в Массачусетском технологическом институте. Текущая версия — Скретч 3.0, выпущена в январе 2019 года. В 2008 году Скретч был портирован для микроконтроллерного модуля Arduino. Проект носит название S4A[4].
Программы на Скретче состоят из графических блоков, подписи к которым зависят от выбранного для интерфейса языка. Может быть выбран один из 50 языков интерфейса, включая русский. Для подключения интерфейса на новом языке используются стандартные gettext-файлы.
Содержание
Программирование[править | править код] Основными компонентами скретч-программы являются объекты-спрайты. Спрайт состоит из графического представления — набора кадров-костюмов (англ. costume) и сценария-скрипта. Для редактирования костюмов спрайтов в скретч встроен графический редактор (англ. Paint Editor). Действие Скретч-программы происходит на сцене (англ. stage) размером 480×360 (условных) пикселей с центром координат в середине сцены.
Для программирования сценариев в Скретче используется drag-and-drop-подход: блоки из палитры блоков перетаскиваются в область скриптов.
По функциональному назначению блоки делятся на 10 групп, принадлежность блока к той или иной группе обозначается его цветом.
Группа | Английское название | Цвет | Примечание |
Движение | Motion | синий | управляют движением спрайта (не применяется в фоне) |
Внешний вид | Looks | фиолетовый | управляют внешностью спрайта |
Звук | Sounds | розовый | управляют звуком спрайта |
События | Events | жёлтый | проверка наличия событий, отправка сигналов ко всем спрайтам |
Управление | Control | оранжевый | управляющие конструкции, заголовки обработчиков событий |
Сенсоры | Sensing | голубой | опрос устройств ввода, таймер и имя участника |
Операторы[5] | Operators | зелёный | арифметико-логические операции |
Переменные | Variables | красный | раздел для управления переменными и списками |
Другие блоки | My Blocks | светло-розовый | преобразуют комбинацию блоков в один блок, что упрощает код, или же упрощает создания своего личного блока |
Добавить Расширения | Extensions | темно-зелёный | расширяют возможности Скретч. Есть разные виды расширений, такие, как: музыка, перо, видео распознавание, текст в речь, переводчик, Makey Makey, micro: bit, LEGO MINDSTORMS EV3 и LEGO Education WeDo 2.0 |
У многих блоков имеется редактируемое белое поле для вводимых скретч-программистом параметров.
Блоки бывают трёх видов: блоки стека, блоки заголовков и блоки ссылок.
Блоки стека (большая часть блоков) (англ. Stack Blocks) сверху имеют выемку, а снизу — выступ, с их помощью они объединяются в группу блоков, называемую стеком. Стеки можно копировать и перемещать как единый блок. Особой разновидностью блоков стека являются управляющие конструкции, такие как циклы — они имеют С-образную форму, и могут охватывать собой вложенный стек скретч-блоков.
Блоки заголовков (их также называют шапками) (англ. Hats) имеют выпуклый верхний край и выступ для объединения снизу — они образуют заголовки скретч-стеков. К блокам-заголовкам относятся блоки «когда …» (англ. when …) из группы «Контроль», позволяющие организовать обработчики сообщений: внешних — от клавиатуры и мыши, и внутренних — передаваемых между спрайтами и позволяющих объектно-ориентированное программирование в smalltalk-стиле.
Блоки ссылок (англ. Reporters) предназначаются для заполнения внутренних полей других блоков.
Язык Scratch (как и Logo) оперирует числами, текстовыми строками, логическими значениями, а также списками, играющими роль динамических массивов.
Хотя архитектура скретч-программ в виде набора спрайтов Скретча, обменивающиеся друг с другом событиями, напоминает объектно-ориентированную, Скретч не является объектно-ориентированным языком: в нём (ни в каком виде) нет механизмов наследования (в последних версиях расширенного диалекта скретча BYOB введено прототипное наследование).
Исходный код[править | править код] После выхода версии 1.4 исходный код Скретча был открыт на условиях Scratch Source Code License — представляющей собой простую копилефтную лицензию, с дополнительными ограничениями по неиспользованию оригинальных торговых марок (в более мягкой форме подобные ограничения включены, к примеру, в PHP License).
Код может быть загружен с официального сайта[6]. Условия его использования и распространения следующие:
-
Вы не можете использовать слово «Scratch» для обозначения производных работ (за исключением фразы «на основе кода Scratch, созданного MIT Media Laboratory»),
-
Вы не можете использовать в производных работах логотип Scratch или официального кота Scratch, защищённого авторским правом,
-
Вы не можете реализовать возможность загружать проекты на любой веб-сайт MIT Scratch (в настоящее время — на сайт http://scratch.mit.edu),
-
копии или производные работы должны сохранять уведомления об авторских правах и лицензии Scratch, и
-
исходный код производных работ должны оставаться доступным.
Оригинальный текст (англ.)[показать]
*(читать примечания)
Распространяемый исходный код уже удовлетворяет данным условиям: в нём заменены логотип и спрайт с котом и удалён код сохранения Скретч-проекта на сайт.
Впрочем, поскольку Скретч (1.4) написан на Squeak, доступ к его исходным текстам существует и без предоставления их пользователю в явном виде — они хранятся вместе с результатом их компиляции в файле образа[en] Smalltalk-системы.
13 мая 2014 исходный код Скретч 2.0 был открыт под лицензией GPLv2[7].
Модификации и дальнейшее развитие[править | править код] На основе исходного кода Scratch 1.4 был создан ряд модификаций языка[8], таких как:
BYOB (Snap!)
[править | править код] Разработан в Университете Беркли. Основным расширением языка, которое было введено в BYOB, стала возможность построения составных пользовательских блоков — аналога процедур обычных языков программирования. Поддерживаются рекурсия, замыкания и лямбда-выражения. Также добавлены отладчик и возможность компиляции в исполняемые файлы, вложенные спрайты, многомерные списки, улучшенная работа со скроллингом и компиляция исполняемых файлов. Начиная с версии 3.1 в BYOB добавлена поддержка ООП — спрайты BYOB теперь позволяют наследование на основе прототипов. Для этого в язык, в частности, введён механизм клонирования спрайтов.
Panther
[править | править код] Panther — расширяет Скретч поддержкой drag-n-drop управления спрайтами, возможностью клонирования спрайтов (объектов), и подсистемой CYOB (которая, как и BYOB, позволяет создавать собственные командные блоки, но требует для этого знания языка Squeak (современный диалект Smalltalk, на котором написан Скретч и его модификации).
Механизм Mesh
[править | править код] И BYOB, и Panther включают поддержку механизма mesh[15], обеспечивающее взаимодействие скретч-программ через сеть посредством разделяемых переменных и посылки широковещательных сообщений.
Slash
[править | править код] Slash дополняет возможности BYOB 3.0 новыми возможностями Panther: клонированием и перетаскиванием спрайтов (объектов).
StarLogo TNG
[править | править код] В 2008 году в Массачусетском технологическом институте также разработан образовательный язык программирования StarLogo TNG[16], который расширяет возможности системы StarLogo возможностями трёхмерной графики и скретчподобным языком визуального блочного программирования. В отличие от оригинального OpenStarLogo[17] и MIT Scratch — StarLogo TNG в настоящее время не является программным продуктом с открытым исходным кодом.
Скретч 2.0
[править | править код] В феврале 2011 была выпущена первая онлайновая бета-версия Скретч 2.0[18], в который планируется включение некоторых из возможностей BYOB (таких, как создание пользовательских процедур), векторной графики, клонирование спрайтов, возможность групповой работы над проектами и т. д.. Официально бета-версия вышла в релиз 9 мая 2013.
Скретч 3.0
[править | править код] Scratch 3.0 является третьей и текущей основной версией Scratch. Это полная переработка и повторная реализация Scratch, написанных на HTML5 и JavaScript . Он имеет новый, современный вид и дизайн. Он совместим со многими мобильными устройствами и не требует Flash. Выпущена 2 января 2019 года.
App Inventor
[править | править код] Основная статья: App Inventor
Ещё одной средой программирования, использующей стыковку визуальных логических блоков в стиле мозаики стал App Inventor — экспериментальная система визуального программирования для платформы Android.
Более прямым аналогом языка Скретч на Android является язык Catroid, который разрабатывается в Институте Технологий Программного Обеспечения Технического Университета Граца в Австрии[19].