Скретч (язык программирования)
Скретч | |
---|---|
![]() | |
Семантика | событийно-ориентированная |
Класс языка | графический, учебный |
Тип исполнения | интерпретатор |
Появился в | 2007 |
Автор | Митчелл Резник (англ. Mitchel Resnick) |
Разработчик | Scratch team[d] |
Расширение файлов |
.sb , .sb2 , .sb3 |
Выпуск | 3.29.1 (27 февраля 2022 ) |
Система типов | динамическая |
Основные реализации | Scratch |
Диалекты | Snap! |
Испытал влияние | Лого, Smalltalk, HyperCard, StarLogo, AgentSheets, Etoys, Tweak |
Повлиял на | Snap!, AppInventor, Catrobat |
Лицензия | модифицированная лицензия BSD[d] |
ОС | Windows, MacOS, HTML5 |
![]() |
Скретч (англ. Scratch, МФА [skræʧ]) — визуально-блочная событийно-ориентированная среда программирования, созданная для детей и подростков. Название произошло от слова scratching — техники, используемой хип-хоп-диджеями, которые крутят виниловые пластинки вперед-назад руками для того, чтобы смешивать музыкальные темы[1].

Он создан как продолжение идей языка Лого и конструктора Лего. Скретч 1.4 был написан на языке Squeak, 2.0 и 3.0 ориентированы на работу онлайн. Scratch 2.0 был переписан на Flash и ActionScript. Скретч 3.0 (текущая версия) является улучшенной версией Скретч 2.0 и сделана на HTML5 с использованием движка WebGL, что даёт ему возможность работать на мобильных устройствах и планшетах. Скретч разрабатывается небольшой командой программистов для детей[2] в Массачусетском технологическом институте. Текущая версия — Скретч 3.0, выпущена в январе 2019 года. В 2008 году Скретч был портирован для микроконтроллерного модуля Arduino. Проект носит название S4A[3].
Программы на Скретче состоят из графических блоков, подписи к которым зависят от выбранного для интерфейса языка. Может быть выбран один из 50 языков интерфейса, включая русский. Для подключения интерфейса на новом языке используются стандартные gettext-файлы.
Программирование[править | править код]
Основными компонентами скретч-программы являются объекты-спрайты. Спрайт состоит из графического представления — набора кадров-костюмов (англ. costume) и сценария-скрипта. Для редактирования костюмов спрайтов в скретч встроен графический редактор (англ. Paint Editor). Действие Скретч-программы происходит на сцене (англ. stage) размером 480×360 (условных) пикселей с центром координат в середине сцены.
Для программирования сценариев в Скретче используется drag-and-drop-подход: блоки из палитры блоков перетаскиваются в область скриптов.
По функциональному назначению блоки делятся на 10 групп, принадлежность блока к той или иной группе обозначается его цветом.
Группа | Английское название | Цвет | Примечание |
---|---|---|---|
Движение | Motion | синий | управляют движением спрайта (не применяется в фоне) |
Внешний вид | Looks | фиолетовый | управляют внешностью спрайта |
Звук | Sounds | розовый | управляют звуком спрайта |
События | Events | жёлтый | проверка наличия событий, отправка сигналов ко всем спрайтам |
Управление | Control | оранжевый | управляющие конструкции, заголовки обработчиков событий |
Сенсоры | Sensing | голубой | опрос устройств ввода, таймер и имя участника |
Операторы[4] | 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 введено прототипное наследование).
Исходный код[править | править код]
После выхода версии 0.18.1 исходный код Скретча был открыт на условиях Scratch Source Code License — представляющей собой простую копилефтную лицензию, с дополнительными ограничениями по неиспользованию оригинальных торговых марок (в более мягкой форме подобные ограничения включены, к примеру, в PHP License).
Код может быть загружен с официального сайта[5]. Условия его использования и распространения следующие:
- Вы не можете использовать слово «Scratch» для обозначения производных работ (за исключением фразы «на основе кода Scratch, созданного MIT Media Laboratory»),
- Вы не можете использовать в производных работах логотип Scratch или официального кота Scratch, защищённого авторским правом,
- Вы не можете реализовать возможность загружать проекты на любой другой веб-сайт кроме MIT Scratch (в настоящее время — на сайт http://scratch.mit.edu),
- копии или производные работы должны сохранять уведомления об авторских правах и лицензии Scratch, и
- исходный код производных работ должны оставаться доступным.
Оригинальный текст (англ.)[показатьскрыть]
- you cannot use the word "Scratch" to refer to derivative works (except in the phrase "Based on Scratch from the MIT Media Laboratory"),
- you cannot use the Scratch logo or the official (copyrighted) Scratch cat in derivative works,
- you cannot implement the ability to upload projects to any MIT Scratch website (currently, http://scratch.mit.edu),
- copies or derivative works must retain the Scratch copyright notice and license, and
- you must make the source code for derivative works available.
*(читать примечания)
Распространяемый исходный код уже удовлетворяет данным условиям: в нём заменены логотип и спрайт с котом и удалён код сохранения Скретч-проекта на сайт.
Впрочем, поскольку Скретч (1.4) написан на Squeak, доступ к его исходным текстам существует и без предоставления их пользователю в явном виде — они хранятся вместе с результатом их компиляции в файле образа Smalltalk-системы.
13 мая 2014 исходный код Скретч 2.0 был открыт под лицензией GPLv2[6].
Модификации и дальнейшее развитие[править | править код]
На основе исходного кода Scratch 1.4 был создан ряд модификаций языка[7], таких как:
BYOB (Snap!)[править | править код]
Разработан в Университете Беркли. Основным расширением языка, которое было введено в BYOB, стала возможность построения составных пользовательских блоков — аналога процедур обычных языков программирования. Поддерживаются рекурсия, замыкания и лямбда-выражения. Также добавлены отладчик и возможность компиляции в исполняемые файлы, вложенные спрайты, многомерные списки, улучшенная работа со скроллингом и компиляция исполняемых файлов. Начиная с версии 3.1 в BYOB добавлена поддержка ООП — спрайты BYOB теперь позволяют наследование на основе прототипов. Для этого в язык, в частности, введён механизм клонирования спрайтов.
Panther[править | править код]
Panther — расширяет Скретч поддержкой drag-n-drop управления спрайтами, возможностью клонирования спрайтов (объектов), и подсистемой CYOB (которая, как и BYOB, позволяет создавать собственные командные блоки, но требует для этого знания языка Squeak (современный диалект Smalltalk, на котором написан Скретч и его модификации).
Механизм Mesh[править | править код]
И BYOB, и Panther включают поддержку механизма mesh[14], обеспечивающее взаимодействие скретч-программ через сеть посредством разделяемых переменных и посылки широковещательных сообщений.
Slash[править | править код]
Slash дополняет возможности BYOB 3.0 новыми возможностями Panther: клонированием и перетаскиванием спрайтов (объектов).
StarLogo TNG[править | править код]
В 2008 году в Массачусетском технологическом институте также разработан образовательный язык программирования StarLogo TNG[15], который расширяет возможности системы StarLogo возможностями трёхмерной графики и скретчподобным языком визуального блочного программирования. В отличие от оригинального OpenStarLogo[16] и MIT Scratch — StarLogo TNG в настоящее время не является программным продуктом с открытым исходным кодом.
Скретч 2.0[править | править код]
В феврале 2011 была выпущена первая онлайновая бета-версия Скретч 2.0[17], в который планируется включение некоторых из возможностей BYOB (таких, как создание пользовательских процедур), векторной графики, клонирование спрайтов, возможность групповой работы над проектами и т. д.. Официально бета-версия вышла в релиз 9 мая 2013.
Скретч 3.0[править | править код]
Scratch 3.0 является третьей и текущей основной версией Scratch. Это полная переработка и повторная реализация Scratch, написанных на HTML5 и JavaScript . Он имеет новый, современный вид и дизайн. Он совместим со многими мобильными устройствами и не требует Flash. Выпущена 2 января 2019 года.
App Inventor[править | править код]
Ещё одной средой программирования, использующей стыковку визуальных логических блоков в стиле мозаики, стал App Inventor — экспериментальная система визуального программирования для платформы Android.
Более прямым аналогом языка Скретч на Android является язык Catroid, который разрабатывается в Институте Технологий Программного Обеспечения Технического Университета Граца в Австрии[18].
См. также[править | править код]
Примечания[править | править код]
- ↑ Creating from Scratch: New software from the MIT Media Lab unleashes kids' creativity online
- ↑ Lifelong Kindergarten GroupЯна
- ↑ http://s4a.cat . — проект Скретч для Arduino.
- ↑ В версиях более ранних, чем 1.4 — числа (англ. numbers)
- ↑ Scratch Source Code (недоступная ссылка). Дата обращения: 25 июля 2008. Архивировано 6 июля 2008 года.
- ↑ Scratch 2.0 Offline Open Source Code! — Discuss ScratchЯна
- ↑ Scratch ModificationsЯна
- ↑ Build Your Own Blocks (BYOB)Яна home page
- ↑ Build Your Own Blocks (BYOB) (Scratch ModificationЯна) in Scratch wiki
- ↑ Panther — based on ScratchЯна home page
- ↑ Panther (Scratch ModificationЯна) Архивная копия от 30 марта 2016 на Wayback Machine in Scratch wiki
- ↑ Slash ProjectЯна
- ↑ Slash (Scratch Modification)Яна Архивная копия от 15 ноября 2010 на Wayback Machine in Scratch wiki
- ↑ Mesh Яна
- ↑ StarLogo TNGЯна
- ↑ OpenStarLogo (недоступная ссылка). Дата обращения: 26 апреля 2011. Архивировано 17 мая 2011 года.
- ↑ Scratch 1.0
- ↑ Catroid Website
Литература[править | править код]
- Super Scratch Programming Adventure! Learn to Program. — No Starch Press, 2012. — 160 p. — ISBN 978-1-59327-409-2, 978-1-59327-531-0.
- Jr. Jerry Lee Ford. Scratch Programming for Teens. — Cengage Learning PTR, 2008. — 336 p. — ISBN 978-1598635362.
- Sam Patterson. Ch. 6. Scratch and Other Web-Based Progtamming Platforms // Programming in the Primary Grades: Beyond the Hour of Code. — Rowman & Littlefield, 2016-03-21. — 121 с. — P. 49—58. — 98 p. — ISBN 9781475825459.
- Патаракин Е. Д. Учимся готовить в среде Скретч. Придумай — Запрограммируй — Поделись. Архивная копия от 22 февраля 2014 на Wayback Machine
- Патаракин Е. Д. Педагогический дизайн социальной сети Scratch // Образовательные технологии и общество (Educational Technology & Society). 2013. № 2. P. 505—528. http://ifets.ieee.org/russian/depository/v16_i2/html/12.htm
- Рындак В. Г., Дженжер В. О., Денисова Л. В. Проектная деятельность школьника в среде программирования Scratch. Учебно-методическое пособие / Оренбургский государственный институт менеджмента. — Оренбург, 2009. Архивная копия от 22 февраля 2014 на Wayback Machine
- Голиков Д. В., Голиков А. Д. Книга юных программистов на Scratch. — SmashWords, 2013. — ISBN 978-1310227554.
- Александр Казанцев. Школа. Исполнители и алгоритмы // Linux Format. — январь 2010. — № 126—127 (1).
- Carolyn Y. Johnson. With simplified code, programming becomes child’s play (англ.), The Boston Globe (15 May 2007). Дата обращения 16 апреля 2012.
- Валерий Рубанцев. Занимательные уроки со Скретчем. RVGames. 2016—260 с.
Ссылки[править | править код]
- scratch.mit.edu — официальный сайт Скретч
- Курс «Введение в Scratch» . — цикл из десяти уроков по основам работы в среде программирования Скретч. Дата обращения: 6 августа 2014.
- Русская Скретч Вики .
- Учитесь со Scratch! (недоступная ссылка). — сообщество учителей, родителей и просто творческих людей. Дата обращения: 6 августа 2014. Архивировано 15 апреля 2014 года.
- Видеоуроки по Скретч . Дата обращения: 6 августа 2014.
- ScratchED (англ.). Гарвардский университет. — Глобальное сообщество учителей Скретч. Дата обращения: 26 августа 2014.