Скретч (язык программирования)
Скретч | |
---|---|
Семантика | событийно-ориентированная |
Класс языка | графический, учебный |
Тип исполнения | интерпретатор |
Появился в |
Начало разработки: 2003 Начало бета-теста: 2005 Дата выпуска: 2007 |
Автор | Митчелл Резник (англ. Mitchel Resnick) |
Разработчик | MIT Media Lab |
Расширение файлов |
.sb , .sb2 , .sb3 |
Выпуск | 3.29.1 (27 февраля 2022 ) |
Система типов | динамическая |
Основные реализации | Scratch |
Диалекты | Snap! |
Испытал влияние | Лого, Smalltalk, HyperCard, StarLogo, AgentSheets, Etoys, Tweak |
Повлиял на | Snap!, AppInventor, Catrobat |
Лицензия | модифицированная лицензия BSD[вд] |
Сайт | scratch.mit.edu |
ОС | Windows, macOS |
Медиафайлы на Викискладе |
Скретч (англ. 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 (условных) пикселей с центром координат в середине сцены. Сцена обладает собственным набором фонов (англ. backdrop), звуков и может исполнять собственные скрипты.
Для программирования сценариев в Скретче используется drag-and-drop-подход: блоки из палитры блоков перетаскиваются в область скриптов.
По функциональному назначению блоки делятся на 8 групп, принадлежность блока к той или иной группе обозначается его цветом.
Категория | Примечание | |
---|---|---|
Движение (англ. Motion) | Вкладка, которая управляет движением спрайта (недоступны для использования в скриптах сцены) | |
Внешний вид (англ. Looks) | Вкладка, которая управляет внешностью спрайта | |
Звук (англ. Sound) | Вкладка, которая управляет звуком спрайта/фона | |
События (англ. Events) | Проверка наличия событий, отправка сигналов ко всем спрайтам/фону | |
Управление (англ. Control) | Вкладка, которая отвечает за конструкции, заголовки обработчиков событий, циклы, создание клонов спрайтов | |
Сенсоры (англ. Sensing) | Вкладка опроса устройств ввода, таймер и имя участника | |
Операторы (англ. Operators) | Арифметико-логические операции | |
Переменные (англ. Variables) | Раздел для управления переменными и списками | |
Другие блоки (англ. My Blocks) | Могут быть созданы, как переменные и списки. Представляют собой функции, могут принять набор численных, текстовых и булевых аргументов. Также позволяют исполнять циклы за один кадр (исполнение циклов задерживается на кадр после каждой итерации в стандартном скрипте) | |
Расширения (англ. Extensions) | Вкладка, которая добавляет новые расширения, такие, как: музыка, перо, видео распознавание, текст в речь, переводчик, Makey Makey, micro: bit, LEGO MINDSTORMS EV3 и LEGO Education WeDo 2.0 |
У многих блоков имеется редактируемое белое поле для вводимых скретч-программистом параметров.
Блоки бывают шести видов: блоки стека, блоки-шапки, закрывающие блоки, С-блоки (или обвивающие блоки), булевые блоки и блоки ссылок.
Блоки стека (большая часть блоков) (англ. Stack Blocks) сверху имеют выемку, а снизу — выступ, с их помощью они объединяются в группу блоков, называемую стеком. Стеки можно копировать и перемещать как единый блок. Особой разновидностью блоков стека являются управляющие конструкции, такие как циклы — они имеют С-образную форму, и могут охватывать собой вложенный стек скретч-блоков.
Блоки-шапки (англ. Hats) имеют выпуклый верхний край и выступ для объединения снизу — они образуют «заголовки». К блокам-заголовкам относятся блоки «когда …» (англ. when …) из группы «События», позволяющие организовать обработчики сообщений: внешних — от клавиатуры и мыши, и внутренних — передаваемых между спрайтами и позволяющих объектно-ориентированное программирование в smalltalk-стиле.
Закрывающие блоки заканчивают скрипт. У них отсутствует выступ снизу и к ним нельзя присоединить блоки для дальнейшего исполнения программы.
С-блоки или обвивающие блоки представляют собой блоки с вырезом, куда можно поместить другие блоки. Они используются для создания циклов или логических условий. Все, кроме блока «Всегда» содержат также поле для булевого или блока-ссылки, определяющего дальнейший ход программы.
Булевые блоки или логические блоки представляют собой угловатые блоки с одним или несколькими вырезами под другой булевый блок или блок-ссылку. Его нельзя использовать как обычный блок, присоединив снизу к другому блоку. В зависимости от их наполнения они либо вернут значение «Правда» или «Ложь». С помощью них блоки «Если …, то» и «Повторять, пока не …» определяют ход программы.
Язык Scratch (как и Logo) оперирует числами, текстовыми строками, логическими значениями, а также списками, играющими роль динамических массивов.
Хотя архитектура скретч-программ в виде набора спрайтов Скретча, обменивающихся друг с другом событиями, напоминает объектно-ориентированную, Скретч не является объектно-ориентированным языком: в нём (ни в каком виде) нет механизмов наследования (в последних версиях расширенного диалекта скретча BYOB введено прототипное наследование).
Исходный код
[править | править код]После выхода версии 0.18.1 исходный код Скретча был открыт на условиях Scratch Source Code License — представляющей собой простую копилефтную лицензию, с дополнительными ограничениями по неиспользованию оригинальных торговых марок (в более мягкой форме подобные ограничения включены, к примеру, в PHP License).
Код может быть загружен с официального сайта[4]. Условия его использования и распространения следующие:
- Вы не можете использовать слово «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[5].
Модификации и дальнейшее развитие
[править | править код]На основе исходного кода Scratch 1.4 был создан ряд модификаций языка[6], таких как:
BYOB (Snap!)
[править | править код]Разработан в Университете Беркли. Основным расширением языка, которое было введено в BYOB, стала возможность построения составных пользовательских блоков — аналога процедур обычных языков программирования. Поддерживаются рекурсия, замыкания и лямбда-выражения. Также добавлены отладчик и возможность компиляции в исполняемые файлы, вложенные спрайты, многомерные списки, улучшенная работа со скроллингом и компиляция исполняемых файлов. Начиная с версии 3.1 в BYOB добавлена поддержка ООП — спрайты BYOB теперь позволяют наследование на основе прототипов. Для этого в язык, в частности, введён механизм клонирования спрайтов.
Panther
[править | править код]Panther — расширяет Скретч поддержкой drag-n-drop управления спрайтами, возможностью клонирования спрайтов (объектов), и подсистемой CYOB (которая, как и BYOB, позволяет создавать собственные командные блоки, но требует для этого знания языка Squeak (современный диалект Smalltalk, на котором написан Скретч и его модификации).
Механизм Mesh
[править | править код]И BYOB, и Panther включают поддержку механизма mesh[13], обеспечивающее взаимодействие скретч-программ через сеть посредством разделяемых переменных и посылки широковещательных сообщений.
Slash
[править | править код]Slash дополняет возможности BYOB 3.0 новыми возможностями Panther: клонированием и перетаскиванием спрайтов (объектов).
StarLogo TNG
[править | править код]В 2008 году в Массачусетском технологическом институте также разработан образовательный язык программирования StarLogo TNG[14], который расширяет возможности системы StarLogo возможностями трёхмерной графики и скретчподобным языком визуального блочного программирования. В отличие от оригинального OpenStarLogo[15] и MIT Scratch — StarLogo TNG в настоящее время не является программным продуктом с открытым исходным кодом.
Скретч 2.0
[править | править код]В феврале 2011 была выпущена первая онлайновая бета-версия Скретч 2.0[16], в который планируется включение некоторых из возможностей BYOB (таких, как создание пользовательских процедур), векторной графики, клонирование спрайтов, возможность групповой работы над проектами и т. д.. Официально бета-версия вышла в релиз 9 мая 2013.
Скретч 3.0
[править | править код]Scratch 3.0 является третьей и текущей основной версией Scratch. Это полная переработка и повторная реализация Scratch, написанных на HTML5 и JavaScript . Он имеет новый, современный вид и дизайн. Он совместим со многими мобильными устройствами и не требует Flash. Выпущена 2 января 2019 года.
App Inventor
[править | править код]Ещё одной средой программирования, использующей стыковку визуальных логических блоков в стиле мозаики, стал App Inventor — экспериментальная система визуального программирования для платформы Android.
Более прямым аналогом языка Скретч на Android является язык Catroid, который разрабатывается в Институте Технологий Программного Обеспечения Технического Университета Граца в Австрии[17].
См. также
[править | править код]Примечания
[править | править код]- ↑ Creating from Scratch: New software from the MIT Media Lab unleashes kids' creativity online . Дата обращения: 14 ноября 2010. Архивировано 25 марта 2014 года.
- ↑ Lifelong Kindergarten Group . Дата обращения: 25 июля 2008. Архивировано 8 февраля 2011 года.
- ↑ http://s4a.cat . — проект Скретч для Arduino. Дата обращения: 11 апреля 2014. Архивировано 13 апреля 2014 года.
- ↑ Scratch Source Code . Дата обращения: 25 июля 2008. Архивировано из оригинала 6 июля 2008 года.
- ↑ Scratch 2.0 Offline Open Source Code! — Discuss Scratch . Дата обращения: 26 августа 2014. Архивировано 12 октября 2014 года.
- ↑ Scratch Modifications . Дата обращения: 14 ноября 2010. Архивировано 12 марта 2016 года.
- ↑ Build Your Own Blocks (BYOB) Архивная копия от 23 августа 2010 на Wayback Machine home page
- ↑ Build Your Own Blocks (BYOB) (Scratch Modification) Архивная копия от 3 апреля 2016 на Wayback Machine in Scratch wiki
- ↑ Panther — based on Scratch Архивная копия от 19 апреля 2021 на Wayback Machine home page
- ↑ Panther (Scratch Modification) Архивная копия от 30 марта 2016 на Wayback Machine in Scratch wiki
- ↑ Slash Project . Дата обращения: 14 ноября 2010. Архивировано 11 августа 2019 года.
- ↑ Slash (Scratch Modification) Архивная копия от 15 ноября 2010 на Wayback Machine in Scratch wiki
- ↑ Mesh . Дата обращения: 26 апреля 2011. Архивировано 4 апреля 2016 года.
- ↑ StarLogo TNG . Дата обращения: 26 апреля 2011. Архивировано 19 апреля 2015 года.
- ↑ OpenStarLogo . Дата обращения: 26 апреля 2011. Архивировано из оригинала 17 мая 2011 года.
- ↑ Scratch 1.0 . Дата обращения: 26 апреля 2011. Архивировано 16 августа 2016 года.
- ↑ Catroid Website . Дата обращения: 5 марта 2012. Архивировано 14 февраля 2022 года.
Литература
[править | править код]- 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 (2007-05-15). "With simplified code, programming becomes child's play" (англ.). The Boston Globe. Дата обращения: 16 апреля 2012.
- Валерий Рубанцев. Занимательные уроки со Скретчем. RVGames. 2016—260 с.
Ссылки
[править | править код]- scratch.mit.edu — официальный сайт Скретч
- Шапошникова С. В. Курс «Программирование в Scratch» . Лаборатория линуксоида (3 ноября 2024). — цикл из 16 уроков по основам работы в среде программирования Scratch. Дата обращения: 3 ноября 2024.
- Русская Скретч Вики .
- Учитесь со Scratch! — сообщество учителей, родителей и просто творческих людей. Дата обращения: 6 августа 2014. Архивировано из оригинала 15 апреля 2014 года.
- Видеоуроки по Скретч . Дата обращения: 6 августа 2014.
- ScratchED (англ.). Гарвардский университет. — Глобальное сообщество учителей Скретч. Дата обращения: 26 августа 2014.
- TurboWarp . — форк Scratch с бо́льшим количеством блоков, расширений, форматов экспорта и настроек редактора.