Scratch — это высокоуровневый блочный визуальный язык программирования и веб-сайт, ориентированный в первую очередь на детей в качестве образовательного инструмента с целевой аудиторией от 8 до 16 лет. [8] Пользователи на сайте могут создавать проекты на веб-сайте, используя блочный интерфейс. Scratch был задуман и разработан в рамках совместных грантов Национального научного фонда, предоставленных Митчелу Резнику и Ясмин Кафаи . [9] Scratch разработан MIT Media Lab и переведен на более чем 70 языков, используется в большинстве частей мира. [10] Scratch преподается и используется в центрах послешкольного образования, школах и колледжах, а также в других общественных учреждениях знаний. По состоянию на 15 февраля 2023 года статистика сообщества на официальном сайте языка показывает более 123 миллионов проектов, которыми поделились более 103 миллионов пользователей, и более 95 миллионов ежемесячных посещений веб-сайта. [10] В целом было создано более 1 миллиарда проектов (включая неразделенные проекты), а в апреле 2024 года сайт достигнет отметки в 1 000 000 000-й проект.
Scratch получил свое название от техники, используемой диск-жокеями , называемой « scratching », когда виниловые пластинки скрепляются вместе и манипулируются на проигрывателе для создания различных звуковых эффектов и музыки. Как и в случае со скретчингом, веб-сайт позволяет пользователям смешивать различные медиа (включая графику, звук и другие программы) творческими способами, создавая и «ремикшируя» проекты, такие как видеоигры , анимация , музыка и симуляции . [11] [12]
Интерфейс Scratch разделен на три основных раздела: область сцены , палитра блоков и область кодирования для размещения и организации блоков в скрипты, которые можно запустить, нажав на зеленый флажок или щелкнув по самому коду. Пользователи также могут создавать свои собственные блоки кода, которые появятся в разделе «Мои блоки».
Область сцены содержит результаты (например, анимацию , графику черепахи , в маленьком или нормальном размере, с возможностью полноэкранного просмотра), а также миниатюры всех спрайтов , перечисленные в нижней области. Сцена использует координаты x и y , где 0,0 является центром сцены. [13]
При выборе спрайта в нижней части области подготовки блоки кода можно применять, перетаскивая их из палитры блоков в область кодирования. Вкладка «Костюмы» позволяет пользователям изменять внешний вид спрайта с помощью векторного и растрового редактора для создания различных эффектов, включая анимацию. [13] Вкладка «Звуки» позволяет прикреплять к спрайту звуки и музыку. [14]
При создании спрайтов, а также фонов пользователи могут рисовать собственные спрайты вручную, [13] выбирать спрайт из библиотеки или загружать изображение. [14]
В таблице ниже показаны категории блоков программирования:
Оффлайновый «Desktop Editor» для Scratch 3.0 доступен для Microsoft Windows 10 и выше в Microsoft Store, macOS от Apple, ChromeOS и Android; [15] это позволяет создавать и воспроизводить программы Scratch в офлайн-режиме. Оффлайн-редактор также можно загрузить в предыдущих версиях, таких как Scratch 2.0 и Scratch 1.4 (архив более старых версий можно найти здесь).
В Scratch расширения добавляют дополнительные блоки и функции, которые можно использовать в проектах. В Scratch 2.0 все расширения были аппаратными, а Pen был обычной категорией. Программные расширения были добавлены в Scratch 3.0, такие как голоса преобразования текста в речь, а также некоторые новые аппаратные расширения, такие как micro :bit . Расширения перечислены ниже.
Многие из цифровых расширений в Scratch 3.0 раньше были обычными категориями блоков, которые были перемещены в раздел расширений, чтобы уменьшить беспорядок. К ним относятся:
Новые цифровые расширения также были добавлены в сотрудничестве с коммерческими компаниями. Они включают:
В статье, опубликованной в 2019 году Нью-Йоркским университетом , утверждается и иллюстрируется, что при кодировании музыки с помощью Scratch «музыкальные и звуковые блоки, в том виде, в котором они в настоящее время реализованы в Scratch, могут ограничивать и препятствовать созданию осмысленной музыки детьми, которые являются основной базой пользователей Scratch». [16]
Scratch Lab [17] демонстрирует эксперименты команды Scratch, направленные на изучение того, могут ли в будущем быть добавлены новые функции к полному веб-сайту. Экспериментальные функции, которые в настоящее время находятся в стадии разработки, включают:
Scratch используется во многих различных местах: школах, музеях , библиотеках , общественных центрах и домах. [18] [19] [11] Scratch в первую очередь предназначен для пользователей в возрасте от 8 до 16 лет, но его используют люди всех возрастов, и по состоянию на 2009 год он имеет значительную базу взрослых пользователей. [8] [20] Такой широкий охват создал множество окружающих сообществ, как физических, так и цифровых. [10] В апреле 2020 года рейтинг языков программирования мира Tiobe включил Scratch в двадцатку лучших. По данным Tiobe, на Scratch написано 50 миллионов проектов, и каждый месяц добавляется один миллион новых проектов. [21]
Scratch используется в качестве вводного языка, поскольку создание интересных программ на нем относительно простое, а полученные навыки можно применять в других языках программирования, таких как Python и Java .
Scratch не предназначен исключительно для создания игр. С помощью предоставленных визуальных элементов программисты могут создавать анимацию, текст, истории, музыку, искусство и многое другое. Уже существует множество программ, которые студенты могут использовать для изучения тем по математике, истории и даже фотографии. Scratch позволяет учителям создавать концептуальные и визуальные уроки и задания по научной лаборатории с анимацией, которая помогает визуализировать сложные концепции. В рамках социальных наук преподаватели могут создавать тесты, игры и учебные пособия с интерактивными элементами. Использование Scratch позволяет молодым людям понять логику программирования и то, как творчески создавать и сотрудничать. [22]
Scratch преподается в более чем 800 школах и 70 колледжах организации DAV в Индии и по всему миру. [23] [24]
В сфере высшего образования Scratch используется на первой неделе вводного курса по информатике CS50 Гарвардского университета. [25] [26]
Пользователи Scratch называются «Scratchers». Scratchers имеют возможность делиться своими проектами и получать обратную связь. Проекты могут быть загружены непосредственно из среды разработки на веб-сайт Scratch, и любой член сообщества может просмотреть и загрузить полный исходный код для изучения или внесения изменений в новые проекты. [27] [28] Scratchers также могут создавать проектные студии, комментировать, добавлять в избранное и «любить» проекты других, подписываться на других участников, чтобы видеть их проекты и активность, и делиться идеями. Проекты варьируются от игр и анимаций до практических инструментов. Кроме того, чтобы поощрять создание и обмен между пользователями, веб-сайт часто устанавливает задачи «Scratch Design Studio». [29]
Команда MIT Scratch Team работает над тем, чтобы в этом сообществе поддерживалась дружественная и уважительная атмосфера для всех людей. [30] [31]
У педагогов есть свое собственное онлайн-сообщество ScratchEd, разработанное и поддерживаемое Гарвардской высшей школой образования. В этом сообществе педагоги Scratch делятся историями, обмениваются ресурсами и задают вопросы. [32]
Scratch Wiki — это ресурс поддержки Scratch и информация о его веб-сайте, истории и явлениях, его окружающих. Хотя он поддерживается командой Scratch (разработчиками Scratch), он в основном написан пользователями Scratch (Scratchers) и размещается независимо от основного веб-сайта Scratch. [33] На базовом домене Scratch Wiki есть и другие вики на языках, помимо английского.
Роли отображаются в виде метки под именем пользователя на страницах профиля и в сообщениях форума. Чтобы предотвратить вандализм , новые учетные записи имеют роль «New Scratcher», в отличие от обычной роли «Scratcher». На учетные записи New Scratcher налагаются некоторые ограничения, включая невозможность использования облачных данных и минимальный период восстановления в 30 секунд между публикацией комментариев. [34] После определенного периода взаимодействия и создания проектов учетная запись будет иметь право получить роль Scratcher. [35]
Официальные модераторы и разработчики Scratch помечены как часть «Команды Scratch» и обычно имеют звездочку в конце своего имени пользователя. [36] На сайте также есть специальные типы учетных записей для студентов и преподавателей, чтобы использовать Scratch в классе. [37]
В августе 2020 года GreatFire объявил, что китайское правительство заблокировало доступ к сайту Scratch. На тот момент, по оценкам, им пользовались более трех миллионов человек в Китае. [38] [ требуется цитата ] Издание сослалось на тот факт, что Макао , Гонконг и Тайвань были указаны в качестве стран на сайте. [38] [39] Они также содержат Абхазию , Сомалиленд , Южную Осетию и Фарерские острова как местоположения, но они, похоже, видны только в статистике Scratch в разделе Scratchers Worldwide, и никто не создал учетную запись в этих странах.
Исходный код редактора проекта во всех трех основных версиях, а также большая часть текущего веб-сайта размещены публично на GitHub в различных репозиториях . [40] Scratch 3.0 основан на JavaScript , 2.0 программируется на ActionScript , [4] а версии 1.x были основаны на Squeak, который, в свою очередь, основан на Smalltalk -80. [41]
2.0 имел экспериментальный интерпретатор на основе JavaScript, который разрабатывался параллельно с версией ActionScript. [42]
В версии 3.0 блоки Scratch реализованы с использованием Blockly , библиотеки JavaScript, разработанной Google для создания визуальных языков программирования на основе блоков . [43] [44]
13 мая 2014 года, через год после выпуска Scratch 2.0, разработчик на форумах Scratch объявил, что версия 2.0 станет версией с открытым исходным кодом. [45]
Преподаватели Scratch могут собираться лично на встречах преподавателей Scratch. На этих встречах преподаватели Scratch учатся друг у друга и делятся идеями и стратегиями, которые поддерживают вычислительное творчество. [46]
Ежегодная «Неделя Scratch», ранее известная как «День Scratch», объявляется в мае каждого года. Членам сообщества предлагается организовать мероприятие в этот день или около него, большое или маленькое, которое чествует Scratch. Эти мероприятия проводятся по всему миру, и список можно найти на веб-сайте Дня Scratch. Неделя Scratch — это серия, посвященная мероприятиям Scratch на веб-сайте Scratch. [47]
Каждое первоапрельское воскресенье команда Scratch будет разыгрывать пользователей и добавлять пасхальные яйца. Одним из примеров является то, что все блоки событий в проектах превращаются в кошачьи версии тех же блоков.
В начале 2000-х годов группа Lifelong Kindergarten (LLK) MIT Media Lab разрабатывала визуальные языки программирования, ориентированные на детей. [48] В 2003 году Митчел Резник , Ясмин Кафаи и Джон Маэда получили грант Национального научного фонда на разработку новой среды программирования для детей, чтобы они могли выражать себя с помощью кода. [9] LLK, возглавляемая Митчелом Резником, в партнерстве с командой Ясмин Кафаи в Калифорнийском университете в Лос-Анджелесе тесно сотрудничала с компьютерными клубами в Бостоне и Лос-Анджелесе для разработки Scratch, основывая свой дизайн на практиках и социальной динамике этих внешкольных молодежных центров. [9] Он начинался как базовый язык программирования, без маркированных категорий и зеленого флага. [49] Подобно AgentSheets [50] Scratch использовал концепции тактильного программирования, позже известного как блочное программирование. Scratch был создан с целью научить детей программированию. [49]
Философия Scratch поощряет совместное использование, повторное использование и комбинирование кода, как указано в слогане команды «Воображайте, программируйте, делитесь». [51] Пользователи могут создавать свои собственные проекты или могут выбрать « ремикширование » чужого проекта. Проекты, созданные и ремикшированные с помощью Scratch, лицензируются в соответствии с лицензией Creative Commons Attribution-Share Alike . [52] Scratch автоматически указывает пользователя, создавшего оригинальный проект и программу, в верхней части страницы проекта. [11]
Scratch был разработан на основе постоянного взаимодействия с молодежью и персоналом компьютерных клубов. Использование Scratch в компьютерных клубах послужило моделью для других внешкольных центров, демонстрируя, как неформальные учебные условия могут способствовать развитию технологической беглости. [53]
Scratch 2.0 был выпущен 9 мая 2013 года. [13] Обновление изменило внешний вид сайта и включило как онлайн-редактор проектов, так и офлайн-редактор. [54] Пользовательские блоки теперь можно было определять в проектах, наряду с несколькими другими улучшениями. [55] Офлайн-редактор Scratch 2.0 можно было загрузить для Windows, Mac и Linux непосредственно с веб-сайта Scratch, хотя поддержка Linux была позже прекращена. Неофициальную мобильную версию приходилось загружать с форумов Scratch. [56] [57]
Scratch 3.0 был впервые анонсирован командой Scratch в 2016 году. Несколько публичных альфа-версий были выпущены в период с того времени по январь 2018 года, после чего были выпущены предварительные бета-версии «Preview». [58] Бета-версия Scratch 3.0 была выпущена 1 августа 2018 года. [59] для использования в большинстве браузеров; за исключением Internet Explorer . [60]
Scratch 3.0, первая версия 3.x, была выпущена 2 января 2019 года. [61] 28 июня 2023 года [62] заголовок и ссылки на веб-сайте Scratch изменились с синего на фиолетовый, а также были введены новые дополнительные высококонтрастные цвета блоков, чтобы сделать сайт более удобным для чтения и использования людьми с дальтонизмом. [63]
11 марта 2019 года Scratch отделился от MIT Media Lab . [64]
В Scratch 1.4 для хранения проектов использовался формат файла *.sb. [65]
Файл *.sb разделен на четыре раздела:
Scratch 2.0 использует формат файла *.sb2. Это zip-файлы, содержащие файл .json , а также содержимое проекта Scratch, включая звуки (хранящиеся как .wav) и изображения (хранящиеся как .png). [68] Каждый тип файла, за исключением project.json, хранится как число, начинающееся с 0 и увеличивающееся с каждым дополнительным файлом. Файл изображения с меткой «0.png» всегда представляет собой белое изображение размером 480x360, но «0.wav» по-прежнему будет самым ранним неудалённым файлом.
Экспериментальная версия ScratchX использовала формат файла .sbx. [69]
Scratch 3.0 использует формат *.sb3, который очень похож на *.sb2, единственным отличием является звук. [70]
Хотя на основном сайте Scratch теперь работает только текущая версия (Scratch 3.0), автономные редакторы для Scratch 2.0 (и более ранней версии Scratch 1.4) по-прежнему доступны для загрузки [71] и могут использоваться для создания и запуска игр локально. [72] По-прежнему можно загружать проекты из лаунчера Scratch 2.0, которые немедленно преобразуются в Scratch 3.0 при загрузке на основной сайт. [73] Существует также автономная версия Scratch 3.0.
Редактор Scratch 1.4 и ниже был написан на Squeak , в то время как его онлайн-просмотрщик проектов был написан на Java , а позже был добавлен плеер, написанный на Adobe Flash . [41] [74] Scratch 2.0 полагался на Adobe Flash для онлайн-версии и Adobe AIR для офлайн-редактора. Они вышли из моды, и Adobe прекратила их поддержку в конце 2020 года. [75] [76]
В Scratch 2.0 область сцены находится слева, с палитрой программных блоков посередине и областью кодирования справа. Расширения находятся в разделе палитры «More Blocks». [20]
В веб-версии Scratch 2.0 появилось автосохранение проектов. [77] : 23
Палитра блоков в Scratch 2.0 состоит из отдельных секций, которые нельзя прокручивать от одной к другой; в таблице ниже показаны различные секции:
В Scratch 2.0 появился рюкзак, который можно использовать для переноса скриптов, спрайтов, костюмов и звуков между проектами. [77] : 14–15
Scratch 2.0 изменил способ импорта звуков, поэтому многие звуки Scratch 1.4 перестали работать. (Файл проекта был изменен с *.sb на *.sb2).
Scratch использует событийно-управляемое программирование с несколькими активными объектами, называемыми спрайтами . [13] Спрайты можно рисовать как векторную или растровую графику с нуля в простом редакторе, который является частью Scratch, или импортировать из внешних источников. Scratch 3.0 поддерживает только одномерные массивы , известные как «списки», а скаляры с плавающей точкой и строки поддерживаются, но с ограниченными возможностями манипуляции строками. Существует сильный контраст между мощными мультимедийными функциями и многопоточным стилем программирования и довольно ограниченной областью применения языка программирования Scratch.
Scratch 2.0 не рассматривает процедуры как структуры первого класса и имеет ограниченные возможности ввода-вывода файлов с помощью протокола расширения Scratch 2.0, экспериментальной функции расширения, которая позволяет взаимодействовать между Scratch 2.0 и другими программами. [78] Протокол расширения позволяет взаимодействовать с аппаратными платами, такими как Lego Mindstorms [79] или Arduino . [80] Scratch 2.0 также имеет следующие функции:
Более продвинутый визуальный язык программирования, вдохновленный Scratch, — Snap !, включающий первоклассные процедуры (их математические основы также называются лямбда-исчислением ), первоклассные списки (включая списки списков) и первоклассные по-настоящему объектно-ориентированные спрайты с прототипированием наследования и вложенные спрайты, которые не являются частью Scratch. [81] Snap ! (ранее «BYOB») был разработан Йенсом Мёнигом [82] [83] с документацией, предоставленной Брайаном Харви [84] [85] из Калифорнийского университета в Беркли, и использовался для преподавания вводного курса «Красота и радость вычислений» по информатике для студентов, не являющихся специалистами по информатике. [86] Оба они были членами команды Scratch до разработки «Snap ! ». [87] [20]
В июле 2014 года ScratchJr был выпущен для iPad , а в 2016 году — ScratchJr для Android. Несмотря на то, что он в значительной степени вдохновлен Scratch и разработан под руководством Митча Резника, он, тем не менее, полностью переписан и предназначен для детей младшего возраста — от 5 до 7 лет. [88]
Из-за открытого исходного кода Scratch сообщество создало многочисленные ответвления и расширения браузера , которые направлены на улучшение или изменение пользовательского опыта. ScratchTools и Scratch Addons — это некоторые примеры расширений браузера с открытым исходным кодом, которые добавляют множество обновлений и новых функций на веб-сайт и редактор Scratch. [89]
TurboWarp — это ответвление редактора Scratch 3.0, которое компилирует блоки Scratch в код JavaScript при запуске проекта, что означает, что проекты могут выполняться до 200 раз быстрее, с опцией 60FPS, результаты сильно различаются в зависимости от проекта, а также настроек и дополнений. [90] [91] TurboWarp также может экспортировать проекты в автономные файлы HTML5 , Bundle (macOS) и EXE . [92]
Пользователи также могут создавать собственные расширения для Scratch 3.0 с помощью JavaScript. [93] Хотя целью Scratch 3.0 было разрешить пользователям разрабатывать неофициальные расширения JavaScript, от этого отказались из-за рисков модерации. В результате официальный сайт не позволяет добавлять расширения JavaScript, но несколько модификаций Scratch позволяют.
До версии 2.0 было создано несколько форков Scratch [94] [ нужен лучший исходный код ] с использованием исходного кода Scratch 1.4. Эти программы обычно включали только несколько дополнительных блоков, отсутствующих в Scratch. [95] [ нужен лучший исходный код ]